Započeo Fr0z3n
•17. Sep. 2020.• ZaključanoPomoc
642
pregleda
9
postova
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
964
Postovi:
65
Teme:
Pridružio se:Dec. 2019
17. Sep. 2020.
Problem(error/warning): Pravim sistem za dm event, i sad radi na principu counta u areni napravio sam za 3 i 1 mesto ali nez kako da napravim za 2 mesto...
Deo skripte:
error 075: input line too long (after substitutions)
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): ///
Deo skripte:
if(IsInDMEvent)
{
dmcount--;
dmevenat = false;
IsInDMEvent = false;
if(dmcount == 2)
{
SendClientMessageToAll(-1, "DM EVENT 3 MESTO je neki lik");
SendClientMessage(playerid, -1, "{F81414}[DM Event] {FFAF00} Svaka Cast! Dobio si 3 mesto na eventu!");
//GetPlayerHealth(pid, winner_health);
//KillTimer(EventTimerce);
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
ResetPlayerWeapons(playerid);
}
if(dmcount == 1)
{
SendClientMessageToAll(-1, "DM EVENT dmcount je 1 MESTO %s"ImeIgraca(playerid));
SendClientMessage(pid, -1, "{F81414}[DM Event] {FFAF00} Svaka Cast! Dobio si 1/2 mesto na eventu!");
//GetPlayerHealth(pid, winner_health);
KillTimer(EventTimerce);
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
ResetPlayerWeapons(playerid);
break;
}
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
ResetPlayerWeapons(playerid);
InfoMessage(playerid, "[DM Event]Umrli ste, vise srece drugi put.");
}error 075: input line too long (after substitutions)
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): ///
Street Runner
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
75 / 100 XP
Početnik(0)
12
Postovi:
0
Teme:
Pridružio se:Sep. 2020
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
964
Postovi:
65
Teme:
Pridružio se:Dec. 2019
19. Sep. 2020.
Ne radi kako sam zamisljao posto dmcount racuna koliko igraca ima na eventu sto znaci da ako ima 3 igraca da svi dobijaju nagradu, a ja hocu da racuna prva 3 mesta... Kako moze to da se odradi?
Godfather
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosAktivan Član
17 / 250 XP
Početnik(1)
2,272
Postovi:
76
Teme:
Pridružio se:Maj 2014
19. Sep. 2020.
Ako radis event, napravis neki brojac koji ce se povecati kada igrac udje, znaci, da default vrednost bude 0
Kada si je napravio, kada igrac udje u event stavis da se poveca za jedan :
Kada igrac izadje iz eventa, stavis da proveri kolika je vrednost count varijable, kao sto je prikazano gore u mom kodu
I to je to, u svakoj proveri samo smanji count varijablu za jedan ( count--; ) i smanjis je ako provera ne prodje 🙂
new count = 0;Kada si je napravio, kada igrac udje u event stavis da se poveca za jedan :
count++;Kada igrac izadje iz eventa, stavis da proveri kolika je vrednost count varijable, kao sto je prikazano gore u mom kodu
I to je to, u svakoj proveri samo smanji count varijablu za jedan ( count--; ) i smanjis je ako provera ne prodje 🙂
Made Man
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
96 / 100 XP
Početnik(0)
488
Postovi:
54
Teme:
Pridružio se:Okt. 2012
19. Sep. 2020.
Ukoliko ti je to pod OnPlayerDeath i ukoliko idemo tvojom logikom bilo bi:
Ukoliko to opozivaš negdje drugdje, npr. kod komande za napuštanje eventa, ili kod disconnecta, tada bi vjerovatno pod if(dmcount == 1) morao odraditi loop za poslednjeg igrača kome je IsInDMEvent == true i taj bi bio prvo mjesto.
if(dmcount == 2)
//playerid je trece mjestoif(dmcount == 1)
//playerid je drugo mjesto
//killerid je prvo mjestoUkoliko to opozivaš negdje drugdje, npr. kod komande za napuštanje eventa, ili kod disconnecta, tada bi vjerovatno pod if(dmcount == 1) morao odraditi loop za poslednjeg igrača kome je IsInDMEvent == true i taj bi bio prvo mjesto.
Crime Lord
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
240 / 250 XP
Početnik(0)
964
Postovi:
65
Teme:
Pridružio se:Dec. 2019
19. Sep. 2020.
Pa napravio sam timer da proverava svake sekunde koliko ima igraca i probao sam ovako da napravim ali nece kad ostane 3 igraca sva 3 igraca dobijaju 3 nagradu...
forward DmEventManager();
public DmEventManager()
{
foreach(new playerid : Player)
{
if(IsInDMEvent) {
new nagrada;
switch(dmcount) {
case 3: {
nagrada = random( 75 ) + 400;
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
ResetPlayerWeapons(playerid);
va_SendClientMessageToAll(-1, ""col_blue"| DM EVENT | "col_white"%s | Pozicija: 3 | Nagrada: $%d |",ImeIgraca(playerid), nagrada);
DajIgracuNovac(playerid, nagrada);
IsInDMEvent = false;
}
case 2: {
nagrada = random( 75 ) + 1500;
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
ResetPlayerWeapons(playerid);
va_SendClientMessageToAll(-1, ""col_blue"| DM EVENT | "col_white"%s | Pozicija: 2 | Nagrada: $%d |",ImeIgraca(playerid), nagrada);
DajIgracuNovac(playerid, nagrada);
IsInDMEvent = false;
InfoMessage(playerid, "Event zavrsen.");
}
case 1: {
nagrada = random( 75 ) + 2500;
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
Joey_KillTimer(EventTimerce);
ResetPlayerWeapons(playerid);
va_SendClientMessageToAll(-1, ""col_blue"| DM EVENT | "col_white"%s | Pozicija: 1 | Nagrada: $%d |",ImeIgraca(playerid), nagrada);
DajIgracuNovac(playerid, nagrada);
IsInDMEvent = false;
InfoMessage(playerid, "Event zavrsen.");
}
}
}
}
return 1;
}Made Man
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
96 / 100 XP
Početnik(0)
488
Postovi:
54
Teme:
Pridružio se:Okt. 2012
19. Sep. 2020.
Fr0z3n wrote on September 19, 2020, 6:10 pm:
Pa napravio sam timer da proverava svake sekunde koliko ima igraca i probao sam ovako da napravim ali nece kad ostane 3 igraca sva 3 igraca dobijaju 3 nagradu...
forward DmEventManager();
public DmEventManager()
{
foreach(new playerid : Player)
{
if(IsInDMEvent) {
new nagrada;
switch(dmcount) {
case 3: {
nagrada = random( 75 ) + 400;
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
ResetPlayerWeapons(playerid);
va_SendClientMessageToAll(-1, ""col_blue"| DM EVENT | "col_white"%s | Pozicija: 3 | Nagrada: $%d |",ImeIgraca(playerid), nagrada);
DajIgracuNovac(playerid, nagrada);
IsInDMEvent = false;
}
case 2: {
nagrada = random( 75 ) + 1500;
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
ResetPlayerWeapons(playerid);
va_SendClientMessageToAll(-1, ""col_blue"| DM EVENT | "col_white"%s | Pozicija: 2 | Nagrada: $%d |",ImeIgraca(playerid), nagrada);
DajIgracuNovac(playerid, nagrada);
IsInDMEvent = false;
InfoMessage(playerid, "Event zavrsen.");
}
case 1: {
nagrada = random( 75 ) + 2500;
Joey_SetPlayerPos( playerid, PlayerPos[ playerid ][ 0 ], PlayerPos[ playerid ][ 1 ], PlayerPos[ playerid ][ 2 ] );
SetPlayerVirtualWorld( playerid, PlayerPosVW[ playerid ] );
SetPlayerInterior( playerid, PlayerPosInt[ playerid ] );
Joey_KillTimer(EventTimerce);
ResetPlayerWeapons(playerid);
va_SendClientMessageToAll(-1, ""col_blue"| DM EVENT | "col_white"%s | Pozicija: 1 | Nagrada: $%d |",ImeIgraca(playerid), nagrada);
DajIgracuNovac(playerid, nagrada);
IsInDMEvent = false;
InfoMessage(playerid, "Event zavrsen.");
}
}
}
}
return 1;
}Dobiju svi nagrade zato što ti loop prođe za sve igrače kroz case 3. Ali zašto da se opterećuješ timerom svake sekunde kada su ti za DM event bitne samo 3 situacije:
-OnPlayerDeath (kada igrač umre)
-OnPlayerDisconnect (kada se igrač diskonektuje)
-Komanda za napustanje eventa (ako kojim slucajem igrac odluci da napusti event)
Probaj ovako nekako da staviš pod OnPlayerDeath, OnPlayerDisconect i pod komandom za napuštanje eventa. Uredi kako ti već odgovara ovo za nagrade i chat, a za vraćanje na poziciju prije eventa bi trebalo pri spawnu da ga vratiš pošto je valjda predviđeno da se na DM eventu umre.
if(IsInDMEvent)
{
dmcount--;
dmevenat = false;
IsInDMEvent = false;
if(dmcount == 2)
{
SendClientMessageToAll(-1, "DM EVENT 3 MESTO %s",ImeIgraca(playerid));//tece mesto
SendClientMessage(playerid, -1, "{F81414}[DM Event] {FFAF00} Svaka Cast! Dobio si 3 mesto na eventu!");
ResetPlayerWeapons(playerid);
}
else if(dmcount == 1)
{
SendClientMessageToAll(-1, "DM EVENT 2 MESTO %s",ImeIgraca(playerid));//drugo mesto
SendClientMessage(playerid, -1, "{F81414}[DM Event] {FFAF00} Svaka Cast! Dobio si 2 mesto na eventu!");
ResetPlayerWeapons(playerid);
foreach(new lastplayer : Player)//utvrdjujes ko je poslednji ostao na eventu
{
if(IsInDMEvent == true)
{
dmevenat = false;
IsInDMEvent = false;
SendClientMessageToAll(-1, "DM EVENT 1 MESTO %s",ImeIgraca(lastplayer));//prvo mesto
SendClientMessage(lastplayer, -1, "{F81414}[DM Event] {FFAF00} Svaka Cast! Dobio si 1 mesto na eventu!");
ResetPlayerWeapons(lastplayer);
break;
}
}
}
}Morate biti prijavljeni da biste odgovorili na ovu temu.
Prijava
