Započeo Sinner.man
•11. Jun 2020.• ZaključanoKretanje aktora od tacke A do tacke B
1,432
pregleda
11
postova
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
196
Postovi:
66
Teme:
Pridružio se:Jun 2017
11. Jun 2020.
Problem(error/warning): Pitanje, kako da ubacim aktora u igru koji se krece od tacke A do tacke B i nazad i na kojem mjestu u modu, (ATH MOD)
Dio skripte: [ pawn ]vaš odgovor[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ][ /code ]
Slika/video ingame problema(obavezno ako je ingame problem):
Dio skripte: [ pawn ]vaš odgovor[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ][ /code ]
Slika/video ingame problema(obavezno ako je ingame problem):
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
11. Jun 2020.
á—ªå‚乂 wrote on June 11, 2020, 4:08 pm:
To se ne zove aktor nego NPC
https://forum.sa-mp.com/showthread.php?t=95034
https://forum.sa-mp.com/showthread.php?t=95034
Tehnicki ako ne zelis NPC-a mozes i sa actorom da uradis posto imas one animacije za hodanje i slicno, upotreba tajmera, animacija moze da uradi nesto slicno sto i NPC-ovi rade a da ti pritom ostane slot
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
196
Postovi:
66
Teme:
Pridružio se:Jun 2017
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
11. Jun 2020.
Sinner.man wrote on June 11, 2020, 4:36 pm:
znam ja to sve, nebitno jel actor ili NPC, pitanje je kako ??
new actorid;
CMD:startactor(playerid)
{
actorid = CreateActor(294,5,5,5,5);
ApplyActorAnimation(actorid,"PED","WALK_gang1",4.1,1,1,1,1,1);
// procenis koliko mu vremena treba da ode do tacke b
SetTimerEx("StopActorAnim",10000,false,"i",actorid);
return(true);
}
forward StopActorAnim(actor);
public StopActorAnim(actor)
{
printf("Actor je stigao na lokaciju");
ClearActorAnimations(actor);
return(true);
}
Za NPC-ove imas pun kurac tutorijala, udjes ig snimis ga stavis ucitavanje rute koju si snimio konektujes itd
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
196
Postovi:
66
Teme:
Pridružio se:Jun 2017
11. Jun 2020.
//>> Vedran wrote on June 11, 2020, 4:41 pm:
new actorid;
CMD:startactor(playerid)
{
actorid = CreateActor(294,5,5,5,5);
ApplyActorAnimation(actorid,"PED","WALK_gang1",4.1,1,1,1,1,1);
// procenis koliko mu vremena treba da ode do tacke b
SetTimerEx("StopActorAnim",10000,false,"i",actorid);
return(true);
}
forward StopActorAnim(actor);
public StopActorAnim(actor)
{
printf("Actor je stigao na lokaciju");
ClearActorAnimations(actor);
return(true);
}
Za NPC-ove imas pun kurac tutorijala, udjes ig snimis ga stavis ucitavanje rute koju si snimio konektujes itd
Pitanja,
gdje u skripti tu podesavam lokacije, odakle-dokle ide,
I treba mi da stalno se krece da se ne zaustavlja, gdje ubacujem ovo new actorid;
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
1,514
Postovi:
58
Teme:
Pridružio se:Nov. 2016
11. Jun 2020.
Moras da napises svoju skriptu, ti mu govoris gde ce se kreirati nemas odredjeno gde moras ...
Shot Caller
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
40 / 100 XP
Početnik(0)
117
Postovi:
2
Teme:
Pridružio se:Feb. 2020
12. Jun 2020.
Moguce je pomeranje actora.
Na ovaj nacin mu postavljas ugao gledista ka putanji, imas odredjivanje sledeceg koraka i kada se priblizi dovoljno pozvace se cusom callback OnActorMoved.
Dole sam ti napravio komande za test pa mozes isprobati. Ako planiras da koristis ovo uzmi mapandreas i za svaki korak actora mu nadji odredjenu Z poziciju za odredjene XY koordinate kako bi se on kretao uvek po podlozi. Mozes mu povecati i brzinu(povecas 4 parametar iz funkcije GetXYInFrontOfActor u HandleActorMovement callback-u), takodje i animaciju ali ako je budes menjao lockx i locky parametre drzi na 0 kako se actor ne bi vracao na prvobitne pozicije.
Ovde vidis koncept i kako se radi, na tebi je da li ces koristiti i unaprediti ovo.
Koristenje:
new actor = CreateActor(skin, X, Y, Z, ugao);
MoveActor(actor, 15.0, 15.0);
Na ovaj nacin mu postavljas ugao gledista ka putanji, imas odredjivanje sledeceg koraka i kada se priblizi dovoljno pozvace se cusom callback OnActorMoved.
Dole sam ti napravio komande za test pa mozes isprobati. Ako planiras da koristis ovo uzmi mapandreas i za svaki korak actora mu nadji odredjenu Z poziciju za odredjene XY koordinate kako bi se on kretao uvek po podlozi. Mozes mu povecati i brzinu(povecas 4 parametar iz funkcije GetXYInFrontOfActor u HandleActorMovement callback-u), takodje i animaciju ali ako je budes menjao lockx i locky parametre drzi na 0 kako se actor ne bi vracao na prvobitne pozicije.
Ovde vidis koncept i kako se radi, na tebi je da li ces koristiti i unaprediti ovo.
Koristenje:
new actor = CreateActor(skin, X, Y, Z, ugao);
MoveActor(actor, 15.0, 15.0);
forward HandleActorMovement(actorid, Float:dX, Float:dY);
forward OnActorMoved(actorid);
new actor, a_timer;
static Float:absoluteangle(Float:a)
{
while(a < 0.0) a += 360.0;
while(a > 360.0) a -= 360.0;
return a;
}
static Float:GetAngleToPoint(Float:fPointX, Float:fPointY, Float:fDestX, Float:fDestY)
{
return absoluteangle(-(90-(atan2((fDestY - fPointY), (fDestX - fPointX)))));
}
static Float:GetDistanceBetweenTwoPoints(Float:x1, Float:y1, Float:x2, Float:y2)
{
return floatsqroot(floatabs((floatpower((x2 - x1), 2) + floatpower((y2 - y1), 2))));
}
static GetXYInFrontOfActor(actorid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetActorPos(actorid, x, y, a);
GetActorFacingAngle(actorid, a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
}
static MoveActor(actorid, Float:PosX, Float:PosZ)
{
if(IsValidActor(actorid))
{
if(a_timer)
{
KillTimer(a_timer);
}
a_timer = SetTimerEx("HandleActorMovement", 800, true, "iff", actorid, PosX, PosZ);
return 1;
}
return 0;
}
public HandleActorMovement(actorid, Float:dX, Float:dY)
{
new Float:X, Float:Y, Float:Z, Float:x, Float:y;
GetActorPos(actorid, X, Y, Z);
SetActorFacingAngle(actorid, GetAngleToPoint(X, Y, dX, dY));
GetXYInFrontOfActor(actorid, x, y, 0.9);
SetActorPos(actorid, x, y, Z);
ApplyActorAnimation(actorid, "PED", "WALK_civi", 4.0, 1, 1, 1, 0, 0);
if(GetDistanceBetweenTwoPoints(X, Y, dX, dY) <= 3.0)
{
if(a_timer)
{
KillTimer(a_timer);
}
ClearActorAnimations(actorid);
OnActorMoved(actorid);
}
return 1;
}
public OnActorMoved(actorid)
{
SendClientMessageToAll(-1, "Pomerio se.");
// Kada actor zavrsi sa kretanjem
return 1;
}
/*----------------------------
Komande za testiranje
-----------------------------*/
CMD:newactor(playerid, params[])
{
CreateActor(294, 15.0, 15.0, 5.0, 0.0);
return 1;
}
CMD:moveactor(playerid, params[])
{
MoveActor(actor, 30.0, 30.0);
return 1;
}
CMD:moveactor2(playerid, params[])
{
MoveActor(actor, 45.0, 15.0);
return 1;
Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava