TEORETSKI DIO:
Kreiraš aktora na početnoj poziciji (CreateActor ili CreateDynamicActor).
Postaviš timer koji u određenim intervalima (npr. svake 200–500 ms) poziva SetActorPos / SetDynamicActorPos na sledeću tačku na putanji.
Mijenjaš ugao okretanja (SetActorFacingAngle / SetDynamicActorFacingAngle) da aktor gleda u pravcu kretanja.
Opciono: puštaš animaciju hodanja (ApplyActorAnimation / ApplyDynamicActorAnimation) da izgleda prirodnije.
POTREBNE FUNKCIJE: NATIVE SAMP - STREAMER
• CreateActor → CreateDynamicActor
• SetActorPos → SetDynamicActorPos
• SetActorFacingAngle → SetDynamicActorFacingAngle
• ApplyActorAnimation → ApplyDynamicActorAnimation
• ClearActorAnimations → ClearDynamicActorAnimations
• DestroyActor → DestroyDynamicActor
PRIMJER – AKTOR ŠETA DUŽ NIZA TAČKI:
// Na vrhu moda
new WalkingActorID = INVALID_ACTOR_ID;
new WalkingActorStep = 0;
new WalkingActorTimer = 0;
// Putanja – niz koordinata X, Y, Z (možeš dodati koliko hoćeš tačaka)
#define MAX_WALK_POINTS 6
new Float:WalkPath[MAX_WALK_POINTS][3] = {
{ 1480.0, -1020.0, 23.8 },
{ 1490.0, -1020.0, 23.8 },
{ 1490.0, -1010.0, 23.8 },
{ 1480.0, -1010.0, 23.8 },
{ 1475.0, -1015.0, 23.8 },
{ 1480.0, -1020.0, 23.8 }
};
forward Timer_WalkingActor();
public Timer_WalkingActor()
{
if (WalkingActorID == INVALID_ACTOR_ID) return;
new Float:x = WalkPath[WalkingActorStep][0];
new Float:y = WalkPath[WalkingActorStep][1];
new Float:z = WalkPath[WalkingActorStep][2];
SetActorPos(WalkingActorID, x, y, z);
// Računanje ugla prema sledećoj tački (da aktor gleda u pravcu hodanja)
new next = (WalkingActorStep + 1) % MAX_WALK_POINTS;
new Float:nextX = WalkPath[next][0];
new Float:nextY = WalkPath[next][1];
new Float:angle = atan2(nextY - y, nextX - x) - 90.0;
if (angle < 0.0) angle += 360.0;
SetActorFacingAngle(WalkingActorID, angle);
WalkingActorStep = (WalkingActorStep + 1) % MAX_WALK_POINTS;
}
// U OnGameModeInit (ili kad želiš da aktor krene da šeta):
WalkingActorID = CreateActor(124, WalkPath[0][0], WalkPath[0][1], WalkPath[0][2], 0.0);
ApplyActorAnimation(WalkingActorID, "PED", "WALK_player", 4.1, 1, 1, 1, 1, 0);
WalkingActorStep = 1;
WalkingActorTimer = SetTimer("Timer_WalkingActor", 800, true); // svakih 800 ms
// Kad gasiš ili želiš da prestane (npr. u OnGameModeExit):
KillTimer(WalkingActorTimer);
if (WalkingActorID != INVALID_ACTOR_ID) {
DestroyActor(WalkingActorID);
WalkingActorID = INVALID_ACTOR_ID;
}ANIMACIJE ZA HODANJE (PED):
• "PED", "WALK_player" – normalan hod
• "PED", "WALK_fat" – hod debelog npc
• "PED", "WALK_armed" – hod sa oružjem
• "PED", "WALK_civi" – kulturica hod
HINT:
Brzina zavisi od intervala timera i rastojanja između tačaka.
Kraći interval (npr. 300–500 ms) = brži pomjer; duži (npr. 800–1000 ms) = sporiji.
Ako su tačke daleko, povećaj broj međutačaka da kretanje ne izgleda teleportovanje.



