Problem(error/warning): Sve radi sa ovim taskom, ali me interesuje , kako da napravim da mi ne ponavlja stalno animacije, kad igrac ima manje od 20 hp sve fino radi ALI POCNE da spama ovo da je nokan i to fakat mi ne pada na pamet nista, kako da napravim u ovom tasku, ako ima manje od 20 hp da posalje jednom poruku i jednom applyanimaciju a ne 10000000000000puta?
Dio skripte: [pawn]
task panokanje[100]()
{
foreach(Player,i)
{
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(i, playerHealth);
if(playerHealth < 20)
{
TogglePlayerControllable(i, false);
ApplyAnimation(i,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(i, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
return 0;
}
}
return 0;
}[/pawn]
Pawno Code: [Izaberi]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]//[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): //
Pa sada, imam nesto na umu. Napravi novu varijablu, nesto tipa
[pawn]new Nokovan[MAX_PLAYERS];[/pawn]
Zatim da ti ovo izgleda nesto ovako:
[pawn]
task panokanje[100]()
{
if(Nokovan[playerid] == 1) return 0; //Ukoliko je nokovan, nece nista uraditi dalje
foreach(Player,i)
{
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(i, playerHealth);
if(playerHealth < 20)
{
TogglePlayerControllable(i, false);
ApplyAnimation(i,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(i, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Nokovan[playerid] = 1; //Stavlja da jeste nokovan
return 0;
}
}
return 0;
}
[/pawn]
Zatim kada kuca ga neko podigne ili sta vec, stavljas :
[pawn]Nokovan[playerid] = 0; //Vracamo varijablu na 0 da bi igrac opet mogao biti nokovan[/pawn]
Mislim da je ovo najjednostavnija metoda :/ , nadam se da sam pomogao..
Citat: V01D poslato Februar 06, 2020, 23:01:43 POSLE PODNE
Pa sada, imam nesto na umu. Napravi novu varijablu, nesto tipa
[pawn]new Nokovan[MAX_PLAYERS];[/pawn]
Zatim da ti ovo izgleda nesto ovako:
[pawn]
task panokanje[100]()
{
if(Nokovan[playerid] == 1) return 0; //Ukoliko je nokovan, nece nista uraditi dalje
foreach(Player,i)
{
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(i, playerHealth);
if(playerHealth < 20)
{
TogglePlayerControllable(i, false);
ApplyAnimation(i,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(i, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Nokovan[playerid] = 1; //Stavlja da jeste nokovan
return 0;
}
}
return 0;
}
[/pawn]
Zatim kada kuca ga neko podigne ili sta vec, stavljas :
[pawn]Nokovan[playerid] = 0; //Vracamo varijablu na 0 da bi igrac opet mogao biti nokovan[/pawn]
Mislim da je ovo najjednostavnija metoda :/ , nadam se da sam pomogao..
Hvala sto si izdvojio vreme , ali nazalost ne mogu da stavim gore [playerid]a dole da mi je foreach(Player,i) jer gore nigdje nema (playerid) samo je () , tako da odo testirati kad stavim (playerid) nadam se da ce raditi! :D hvala jos jednom , ovako nesto mi je bilo na umu ali nikako da dodje do mozga da se realizuje xd :D
Hmmmm, ali ne kontam zasto ne koristis ptask?? Lakse ti je, to bi ovako sve izgledalo :
[pawn]ptask panokanje[100](playerid)
{
if(Nokovan[playerid] == 1) return 0; //Ukoliko je nokovan, nece nista uraditi dalje
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(playerid, playerHealth);
if(playerHealth < 20)
{
TogglePlayerControllable(playerid, false);
ApplyAnimation(playerid,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(playerid, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Nokovan[playerid] = 1; //Stavlja da jeste nokovan
return 0;
}
return 0;
}[/pawn]
Istu funkciju ce vrsiti, pritom ces moci da primenis playerid :P
Citat: V01D poslato Februar 06, 2020, 23:22:14 POSLE PODNE
Hmmmm, ali ne kontam zasto ne koristis ptask?? Lakse ti je, to bi ovako sve izgledalo :
[pawn]ptask panokanje[100](playerid)
{
if(Nokovan[playerid] == 1) return 0; //Ukoliko je nokovan, nece nista uraditi dalje
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(playerid, playerHealth);
if(playerHealth < 20)
{
TogglePlayerControllable(playerid, false);
ApplyAnimation(playerid,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(playerid, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Nokovan[playerid] = 1; //Stavlja da jeste nokovan
return 0;
}
return 0;
}[/pawn]
Istu funkciju ce vrsiti, pritom ces moci da primenis playerid :P
Dobro moze se i primjeniti playerid na nacin :
foreach(new playerid : Player)
Citat: Timur Script poslato Februar 06, 2020, 23:26:10 POSLE PODNE
Dobro moze se i primjeniti playerid na nacin :
foreach(new playerid : Player)
Ne može, debilno je, uradi ovo sto je void rekao
Y_timeri su perfektno balansirani interno tako da nemoj kakiš
Fazon kod ovog svega je taj sto kad uradim sto
@V01D kaze sve napisem kad imam manje od 20 hp onda se nista ne desi :P
Citat: Timur Script poslato Februar 06, 2020, 23:33:33 POSLE PODNE
Fazon kod ovog svega je taj sto kad uradim sto @V01D kaze sve napisem kad imam manje od 20 hp onda se nista ne desi :P
Ptask gledaj kao taj task timer koji u sebi ima foreach, daj paste šta si uradio
edit: a i zašto praviti tamer mrtvi i jesti resurse ako imaš odličan callback za to, samo frizas igraca i stavis animaciju ili je delay
Citat: Ruzica poslato Februar 06, 2020, 23:39:17 POSLE PODNE
Ptask gledaj kao taj task timer koji u sebi ima foreach, daj paste šta si uradio
[pawn]ptask panokanje[100](playerid)
{
if(Nokovan[playerid] == 1) return 0; //Ukoliko je nokovan, nece nista uraditi dalje
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(playerid, playerHealth);
if(playerHealth < 20)
{
TogglePlayerControllable(playerid, false);
ApplyAnimation(playerid,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(playerid, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Nokovan[playerid] = 1; //Stavlja da jeste nokovan
return 0;
}
return 1;
}[/pawn]
A kad uklonim ovo if(Nokan , onda radi ali spama i animacija i ovo nokovan si ?
Citat: Timur Script poslato Februar 06, 2020, 23:40:37 POSLE PODNE
[pawn]ptask panokanje[100](playerid)
{
if(Nokovan[playerid] == 1) return 0; //Ukoliko je nokovan, nece nista uraditi dalje
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(playerid, playerHealth);
if(playerHealth < 20)
{
TogglePlayerControllable(playerid, false);
ApplyAnimation(playerid,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(playerid, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Nokovan[playerid] = 1; //Stavlja da jeste nokovan
return 0;
}
return 1;
}[/pawn]
A kad uklonim ovo if(Nokan , onda radi ali spama i animacija i ovo nokovan si ?
Pa sta si očekivao ako si napravio tajmer koji se poziva na svakih 100 mili sekundi i gleda da li igrac ima manje od 100hp? Krem bananicu?
Imaš callback za tako nešto brate, čemu tajmer
Citat: Ruzica poslato Februar 06, 2020, 23:42:29 POSLE PODNE
Pa sta si očekivao ako si napravio tajmer koji se poziva na svakih 100 mili sekundi i gleda da li igrac ima manje od 100hp? Krem bananicu?
Imaš callback za tako nešto brate, čemu tajmer
Hah jako smjesno od tebe jako jako, kao 1 kqdq se stqvi pod callback nece uopstw niti spama niti nista bilo sta da napisem nece da uradi .. zato sam odlucio kao tajmer tj ptask jer tako jedino radi...
Probaj povecaj malo timer, da bude tipa 1000 ili 2000 milisekundi. Mozda ce nesto da se promeni, ja licno nemam takvih problema sa ptask :/
Citat: V01D poslato Februar 06, 2020, 23:47:47 POSLE PODNE
Probaj povecaj malo timer, da bude tipa 1000 ili 2000 milisekundi. Mozda ce nesto da se promeni, ja licno nemam takvih problema sa ptask :/
Brate tebi hvala ja sam malo otisao na zivcima sto se ticr ovoga vec 3 dana me zeza ne prestano i stvarno .... uh ugl hvala ti a mrzim kad mi neko ko ova ruzica pametuje a ne zna nista napisat osim cokoladnih bananica itd ... ti si meni koliko toliko pomogao zahvaljujem!
Citat: Timur Script poslato Februar 06, 2020, 23:45:49 POSLE PODNE
I PS ako ne znas ne nabijaj postove.
Brate puko si
I možda nemaš fixes include pa ne pusti animaciju odmah jer se ovaj kod mora bar jednom izvršiti tj animacija jer posle staviš vrednost na 1 i bukvalno dobiješ unreachable kod posle ponovljanja ako ne resetiras sve....
I radi pod callbackom, kako meni radi sve kad napravim? Možda bi ti mogao naučiti nešto za promenu..?
Edit: Postoji bug sa animacijama u samom sampu pa koristi fixes
Dodji any pa se uvjeri :P
Baki nisam kući, sve ovo sa telefona pišem da ga jebeš, javi se fb imaš u poruci sada kontakt
Pa napravi jednostavu proveru
new Provera[MAX_PLAYERS];
Pod OnPlayerConnect
Provera[playerid]=0;
[pawn]task panokanje[100]()
{
foreach(Player,i)
{
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(i, playerHealth);
if(Provera[playerid]==0)
{
if(playerHealth <= 20)
{
TogglePlayerControllable(i, false);
ApplyAnimation(i,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(i, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Provera[playerid]=1;
return 0;
}
else
{
Provera[playerid]=0;
}
}
}
return 0;
}[/pawn]
Stavili smo kada igrac konetiju Provera=0;
nakon toga smo proverili u tasku da li je provera 0 i ako je nula i ako igrac ima manje helta od 20 da mu ispisuje da je knockan i nakon toga setuje provera=1
ispod smo stavili ako igrac ima vise healtha od 20 da mu setuje provera na 0.
Isto sam mu i ja ispisao, ali aj dobro ?
Meni I dalje nije jasno čemu tajmer ovde, a i ono što je Void napisao je iole bolje nego foreach...
svakako posle moraš resetirati varijablu ili neće raditi
Citat: V01D poslato Februar 07, 2020, 07:59:35 PRE PODNE
Isto sam mu i ja ispisao, ali aj dobro ?
Nije isto, tebi proverava kada igraca podigne igrac, a ovde ako ima vise od 20 helti, al ko da je bitno videcemo sta je on uradio.
Citat: Kriso poslato Februar 07, 2020, 00:46:48 PRE PODNE
Pa napravi jednostavu proveru
new Provera[MAX_PLAYERS];
Pod OnPlayerConnect
Provera[playerid]=0;
[pawn]task panokanje[100]()
{
foreach(Player,i)
{
new Float:playerHealth; //pravimo health varijablu
GetPlayerHealth(i, playerHealth);
if(Provera[playerid]==0)
{
if(playerHealth <= 20)
{
TogglePlayerControllable(i, false);
ApplyAnimation(i,"PED","KO_shot_stom",4.0,0,1,1,1,0);
SendClientMessage(i, -1, "Nokovan si da ustanes kucaj /pozovipomoc");
Provera[playerid]=1;
return 0;
}
else
{
Provera[playerid]=0;
}
}
}
return 0;
}[/pawn]
Stavili smo kada igrac konetiju Provera=0;
nakon toga smo proverili u tasku da li je provera 0 i ako je nula i ako igrac ima manje helta od 20 da mu ispisuje da je knockan i nakon toga setuje provera=1
ispod smo stavili ako igrac ima vise healtha od 20 da mu setuje provera na 0.
Mozes anydesk? nece bukvalno nista se ne desava...
Mogu posalji mi kod
SVE RIJESENO ZAHVALJUJEM ! LOCK!