Waypoint Markers API
SkillDev toolsGuide for Waypoint Markers API creating 3D waypoint sprites visible through walls with per-player visibility.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Waypoint Markers API skill
What this skill tells your AI
The instructions your AI receives, as published by hedgefog/amxx-modding-kit in .agents/skills/amxx-modding-kit/api/waypoint-markers/SKILL.md and read by ahel’s review.
3D waypoint sprites that project onto walls, scale with distance, and support per-player visibility.
For complete API documentation, see README.md.
Creating Markers
Basic Creation
new Float:vecOrigin[3] = {512.0, 256.0, 128.0};
new pMarker = WaypointMarker_Create(
"sprites/mymod/waypoint.spr", // Sprite path (must be precached)
vecOrigin, // World position
1.0, // Scale (default: 1.0)
Float:{64.0, 64.0} // Sprite size {width, height}
);
With Named Parameters
new pMarker = WaypointMarker_Create(
"sprites/mymod/objective.spr",
vecOrigin,
.flScale = 0.5,
.rgflSize = Float:{48.0, 48.0}
);
Controlling Visibility
Markers are hidden by default. Show them for specific players:
// Show for specific player
WaypointMarker_SetVisible(pMarker, pPlayer, true);
// Hide for specific player
WaypointMarker_SetVisible(pMarker, pPlayer, false);
// Show for ALL players (pass 0)
WaypointMarker_SetVisible(pMarker, 0, true);
Forwards
On Created
public WaypointMarker_OnCreated(const pMarker) {
// Marker was created
}
On Destroy
public WaypointMarker_OnDestroy(const pMarker) {
// Marker is about to be destroyed
}
Common Pattern: Objective Marker
new g_pObjectiveMarker;
public plugin_precache() {
precache_model("sprites/mymod/objective.spr");
}
public plugin_init() {
register_plugin("Objective Marker", "1.0", "Author");
}
SetObjective(const Float:vecOrigin[3]) {
// Remove old marker if exists
if (g_pObjectiveMarker) {
engfunc(EngFunc_RemoveEntity, g_pObjectiveMarker);
}
// Create new marker
g_pObjectiveMarker = WaypointMarker_Create(
"sprites/mymod/objective.spr",
vecOrigin,
.flScale = 0.5
);
// Show to all players
WaypointMarker_SetVisible(g_pObjectiveMarker, 0, true);
}
public client_putinserver(pPlayer) {
// Show objective to new player
if (g_pObjectiveMarker) {
WaypointMarker_SetVisible(g_pObjectiveMarker, pPlayer, true);
}
}
Common Pattern: Team-Based Markers
new g_pTeamMarkers[4]; // Per team
CreateTeamMarker(iTeam, const Float:vecOrigin[3]) {
g_pTeamMarkers[iTeam] = WaypointMarker_Create(
"sprites/mymod/team_marker.spr",
vecOrigin
);
// Show only to team members
for (new i = 1; i <= MaxClients; ++i) {
if (!is_user_connected(i)) continue;
if (get_user_team(i) == iTeam) {
WaypointMarker_SetVisible(g_pTeamMarkers[iTeam], i, true);
}
}
}
public client_putinserver(pPlayer) {
new iTeam = get_user_team(pPlayer);
if (g_pTeamMarkers[iTeam]) {
WaypointMarker_SetVisible(g_pTeamMarkers[iTeam], pPlayer, true);
}
}
Common Pattern: Player Tracking Marker
new g_rgpPlayerMarkers[MAX_PLAYERS + 1];
public client_putinserver(pPlayer) {
// Create marker that follows player
new Float:vecOrigin[3];
pev(pPlayer, pev_origin, vecOrigin);
g_rgpPlayerMarkers[pPlayer] = WaypointMarker_Create(
"sprites/mymod/player_marker.spr",
vecOrigin,
.flScale = 0.3
);
}
public client_disconnected(pPlayer) {
if (g_rgpPlayerMarkers[pPlayer]) {
engfunc(EngFunc_RemoveEntity, g_rgpPlayerMarkers[pPlayer]);
g_rgpPlayerMarkers[pPlayer] = 0;
}
}
// Update marker position in Think/PreThink
UpdateMarkerPosition(pPlayer) {
if (!g_rgpPlayerMarkers[pPlayer]) return;
new Float:vecOrigin[3];
pev(pPlayer, pev_origin, vecOrigin);
vecOrigin[2] += 40.0; // Above head
engfunc(EngFunc_SetOrigin, g_rgpPlayerMarkers[pPlayer], vecOrigin);
}
Checklist
- Precache sprite in
plugin_precache - Create marker with appropriate scale and size
- Set visibility for relevant players
- Handle new players joining (show existing markers)
- Clean up markers when no longer needed
- Use forwards for marker lifecycle events
Signals
- GitHub stars
- 32
- Forks
- 4
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
amxx-modding-kit-api-waypoint-markers- Source
- github.com/hedgefog/amxx-modding-kit