Oko posla

Započeo .ysi
pre 3 godine
545
pregleda
10
postova
EmrahScript
Enforcer
pre 3 godine
Problem(error/warning): Kako da napravim kosaca trave na kojem se trave spavnaju jedna po jedna i  kad igrac predje preko trave sa kosilicom da se ta trava obrise i da se druga kreira i sve tako....?
Deo skripte:
//

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
//

Slika/video ingame problema(obavezno ako je ingame problem): //
gottinho
Made Man
pre 3 godine
.ysi wrote on April 23, 2022, 12:34 pm:
Problem(error/warning): Kako da napravim kosaca trave na kojem se trave spavnaju jedna po jedna i  kad igrac predje preko trave sa kosilicom da se ta trava obrise i da se druga kreira i sve tako....?
Deo skripte:
//

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
//

Slika/video ingame problema(obavezno ako je ingame problem): //
malo staro, ali ipak posluzit ce ti
https://gtablkn.gg/forum/tutorijali-u-vezi-sa-mpa/tut-posao-kosaa-trave-sa-objektima-trave
EmrahScript
Enforcer
pre 3 godine
A L M E X wrote on April 23, 2022, 2:14 pm:
malo staro, ali ipak posluzit ce ti
https://gtablkn.gg/forum/tutorijali-u-vezi-sa-mpa/tut-posao-kosaa-trave-sa-objektima-trave
preko ovog sam tutoriala pokusao nesto napraviti al ne ide...
FunnyGamingDay - FGD
OG Legend
pre 3 godine
.ysi wrote on April 23, 2022, 2:52 pm:
preko ovog sam tutoriala pokusao nesto napraviti al ne ide...

Pošalji nam tvoj kod kako si hteo da napraviš pa ćemo onda i moći da pomognemo. 🙂

Former SA:MP server developer

EmrahScript
Enforcer
pre 3 godine
Vasic wrote on April 23, 2022, 3:15 pm:
Pošalji nam tvoj kod kako si hteo da napraviš pa ćemo onda i moći da pomognemo. 🙂
evo sad cu:

ovo se nalazi u komandi

if(!KosenjeVozila(GetPlayerVehicleID(playerid))) return SCM(playerid, -1, ""Sgaa" "BELA"Niste u kosilici!");
TravaTimer = SetTimerEx("TimerTrava", 500, true, "i", playerid);
KosenjeTrave = 1;
Grass = CreateDynamicObject(817, 1560.958007, -2155.465820, 12.857999, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 300.00, 300.00);
SendClientMessage(playerid, -1, ""col_job"(PfsO): {FFFFFF}Poceli ste sa kosenjem trave.");


evo timer:

forward TimerTrava(playerid);
public TimerTrava(playerid)
{
new Float:Pos;
new pokoseno = 0;
for(new i = 0; i < sizeof(Grass); i++)
{
GetDynamicObjectPos(Grass, Pos, Pos, Pos);
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos) && KosenjeVozila(GetPlayerVehicleID(playerid)))
{
DestroyDynamicObject(Grass);
Grass = 999;
}
if(Grass == 999)
{
pokoseno++;
Grass = CreateDynamicObject(817, 1561.155273, -2162.319091, 12.857999, 0.000000, 0.000000, 0.000000, object_world, object_int, -1, 300.00, 300.00); //ovdje sam stao
}
}
if(pokoseno == 21)
{
SendClientMessage(playerid, -1, "uspjesno");
KosenjeTrave = 0;
KillTimer(TravaTimer);
GivePlayerMoney(playerid, 123);
}
}
FunnyGamingDay - FGD
OG Legend
pre 3 godine
Tajmer ti se poziva svakih 0.5 sekundi i to se ponavlja, a na vrhu funkcije koju pozivas u tajmeru se nalazi varijabla "pokoseno" i dodeljena joj je vrednost 0, sto znaci da se varijabla resetuje na nulu svaki put kada se funkcija pozove - sto dovodi do zakljucka da se uslov koji proverava da li je "pokoseno" jednako 21 nikada nece ispuniti.

Former SA:MP server developer

EmrahScript
Enforcer
pre 3 godine
Vasic wrote on April 23, 2022, 5:18 pm:
Tajmer ti se poziva svakih 0.5 sekundi i to se ponavlja, a na vrhu funkcije koju pozivas u tajmeru se nalazi varijabla "pokoseno" i dodeljena joj je vrednost 0, sto znaci da se varijabla resetuje na nulu svaki put kada se funkcija pozove - sto dovodi do zakljucka da se uslov koji proverava da li je "pokoseno" jednako 21 nikada nece ispuniti.
oke ispravit cu to ali kako da stavim da mi se objekti trave kreiraju jedan po jedan ( kada predjem kosilicom preko jednog objekta da se kreira drugi i tako sve do kraja ) ?
FunnyGamingDay - FGD
OG Legend
pre 3 godine
Uradio sam što jednostavnije da bi skontao, testiraj ovo pošto ja nisam.
new
MowingStatus,
Grass, // Proširi array za Grass koliko želiš da ti bude
MowingTimer;

cmd:mowing(playerid, params[])
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 572) return SendClientMessage(playerid, -1, "Morate biti u kosilici.");
MowingStatus = 1;
Grass = CreateDynamicObject(817, 1561.155273, -2162.319091, 12.857999, 0.00000, 0.00000, 0.00000, -1, -1, playerid);
MowingTimer = SetTimerEx("Mowing", 500, true, "i", playerid);
SendClientMessage(playerid, "Poceli ste sa kosenjem trave, predjite preko prvog objekta trave.");
return 1;
}
forward Mowing(playerid);
public Mowing(playerid)
{
new Float:Pos;
switch(MowingStatus)
{
case 1:
{
GetDynamicObjectPos(Grass, Pos, Pos, Pos);
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos)
{
DestroyDynamicObject(Grass);
Grass = CreateDynamicObject(817, X, Y, Z, 0.00000, 0.00000, 0.00000, -1, -1, playerid);
MowingStatus = 2;
}
}
case 2:
{
GetDynamicObjectPos(Grass, Pos, Pos, Pos);
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos)
{
DestroyDynamicObject(Grass);
Grass = CreateDynamicObject(817, X, Y, Z, 0.00000, 0.00000, 0.00000, -1, -1, playerid);
MowingStatus = 3;
}
}
case 3:
{
GetDynamicObjectPos(Grass, Pos, Pos, Pos);
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos)
{
KillTimer(MowingTimer);
DestroyDynamicObject(Grass);
MowingStatus = 0;
GivePlayerMoney(playerid, 500);
SendClientMessage(playerid, "Pokosili ste travu i dobili 500$.");
}
}
}
return 1;
}


Ovo bi mogao još više da pojednostaviš, ali probaj ovako za početak. 🙂

Former SA:MP server developer

Danisoni
Godfather
pre 3 godine
Kreiras niz sa koordinatama i varijablu koja ce storati igracev objekat, kao i varijablu koja ce cuvati zadnju poziciju. Kada zapocne kosenje, resetiras varijable, podesis vrijednost niza varijable na 0, kreiras i prikazes objekat, i kreiras 1 funkciju koja se poziva kada dodje igrac na objekat, u kojoj brises stari, povecavas varijablu koja pokazuje na niz i ujedno vadis sa njom naredne koordinate gdje ces spawnati travu. Kada varijabla dosegne visinu niza (koordinata), posao je zavrsen.
EmrahScript
Enforcer
pre 3 godine
Vasic wrote on April 23, 2022, 7:17 pm:
Uradio sam što jednostavnije da bi skontao, testiraj ovo pošto ja nisam.
new
MowingStatus,
Grass, // Proširi array za Grass koliko želiš da ti bude
MowingTimer;

cmd:mowing(playerid, params[])
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 572) return SendClientMessage(playerid, -1, "Morate biti u kosilici.");
MowingStatus = 1;
Grass = CreateDynamicObject(817, 1561.155273, -2162.319091, 12.857999, 0.00000, 0.00000, 0.00000, -1, -1, playerid);
MowingTimer = SetTimerEx("Mowing", 500, true, "i", playerid);
SendClientMessage(playerid, "Poceli ste sa kosenjem trave, predjite preko prvog objekta trave.");
return 1;
}
forward Mowing(playerid);
public Mowing(playerid)
{
new Float:Pos;
switch(MowingStatus)
{
case 1:
{
GetDynamicObjectPos(Grass, Pos, Pos, Pos);
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos)
{
DestroyDynamicObject(Grass);
Grass = CreateDynamicObject(817, X, Y, Z, 0.00000, 0.00000, 0.00000, -1, -1, playerid);
MowingStatus = 2;
}
}
case 2:
{
GetDynamicObjectPos(Grass, Pos, Pos, Pos);
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos)
{
DestroyDynamicObject(Grass);
Grass = CreateDynamicObject(817, X, Y, Z, 0.00000, 0.00000, 0.00000, -1, -1, playerid);
MowingStatus = 3;
}
}
case 3:
{
GetDynamicObjectPos(Grass, Pos, Pos, Pos);
if(IsPlayerInRangeOfPoint(playerid, 3.0, Pos, Pos, Pos)
{
KillTimer(MowingTimer);
DestroyDynamicObject(Grass);
MowingStatus = 0;
GivePlayerMoney(playerid, 500);
SendClientMessage(playerid, "Pokosili ste travu i dobili 500$.");
}
}
}
return 1;
}


Ovo bi mogao još više da pojednostaviš, ali probaj ovako za početak. 🙂
hvala radi

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava