Problem(error/warning): Kad si ID 0 i kad hoces da posaljes nekom duel, zahtev stigne sam sebi jer si ID 0, a dok na druge id-eve radi sve lepo.
Dio skripte: [ pawn ]Ako treba pisite dole.[ /pawn ]
Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log): [ code ]//[ /code ]
Slika/video ingame problema(obavezno ako je ingame problem): //
Pa normalno da treba deo skripte ne znamo mi sta si ti pisao i sto nece taj deo sto saljes zahtev pa posalje id 0 znaci tu cmd ostavi ovde.... :D
Pa normalno da treba salji funkciju kojom saljes duel ili cmd ili sta vec nisam ja Milan Tarot a ni Vidoviti Saban..
Hehehe, znao sam :) :D
[pawn]CMD:duel(playerid, params[])
{
new idx, tmp[32], tmp1[32], tmp2[32], tmp3[32], gun1, gun2, gun3, id, string[500];
tmp = strtok(params, idx);
tmp1 = strtok(params, idx);
tmp2 = strtok(params, idx);
tmp3 = strtok(params, idx);
if(!strlen(tmp))
{
if(sscanf(params, "uiii", id, gun1, gun2, gun3)) return SCM(playerid, -1, "Pomoc | Koristite: /duel [Korisnicki ID ili Ime Korisnika] [id 1. oruzja] [id 2. oruzja] [id 3. oruzja]");
SCM(playerid, -1, "Pomoc | Oruzje: 24 - eagle | 25 - shotgun | 26 - sawn-off | 30 - ak47 | 31 - m4 | 32 - tec9");
return 1;
}
if(!strlen(tmp1))
{
if(sscanf(params, "uiii", id, gun1, gun2, gun3)) return SCM(playerid, -1, "Pomoc | Koristite: /duel [Korisnicki ID ili Ime Korisnika] [id 1. oruzja] [id 2. oruzja] [id 3. oruzja]");
SCM(playerid, -1, "Pomoc | Oruzje: 24 - eagle | 25 - shotgun | 26 - sawn-off | 30 - ak47 | 31 - m4 | 32 - tec9");
return 1;
}
if(!strlen(tmp2))
{
if(sscanf(params, "uiii", id, gun1, gun2, gun3)) return SCM(playerid, -1, "Pomoc | Koristite: /duel [Korisnicki ID ili Ime Korisnika] [id 1. oruzja] [id 2. oruzja] [id 3. oruzja]");
SCM(playerid, -1, "Pomoc | Oruzje: 24 - eagle | 25 - shotgun | 26 - sawn-off | 30 - ak47 | 31 - m4 | 32 - tec9");
return 1;
}
if(!strlen(tmp3))
{
if(sscanf(params, "uiii", id, gun1, gun2, gun3)) return SCM(playerid, -1, "Pomoc | Koristite: /duel [Korisnicki ID ili Ime Korisnika] [id 1. oruzja] [id 2. oruzja] [id 3. oruzja]");
SCM(playerid, -1, "Pomoc | Oruzje: 24 - eagle | 25 - shotgun | 26 - sawn-off | 30 - ak47 | 31 - m4 | 32 - tec9");
return 1;
}
new playa;
new gunid1 = strval(tmp1);
new gunid2 = strval(tmp2);
new gunid3 = strval(tmp3);
if(gunid1 != 24 && gunid1 != 25 && gunid1 != 26 && gunid1 != 30 && gunid1 != 31 && gunid1 != 32)
{
SCM(playerid,-1, " {FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Ne mozete igrati duel sa tim oruzjem!");
return 1;
}
if(gunid2 != 24 && gunid2 != 25 && gunid2 != 26 && gunid2 != 30 && gunid2 != 31 && gunid2 != 32)
{
SCM(playerid,-1, " {FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Ne mozete igrati duel sa tim oruzjem!");
return 1;
}
if(gunid3 != 24 && gunid3 != 25 && gunid3 != 26 && gunid3 != 30 && gunid3 != 31 && gunid3 != 32)
{
SCM(playerid,-1, " {FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Ne mozete igrati duel sa tim oruzjem!");
return 1;
}
if(IsPlayerConnected(playa))
{
if(igraduel[playa] == 1)
{
SCM(playerid,-1, " {FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Taj igrac vec igra duel,pokusajte kasnije!");
return 1;
}
if(igraduel[playerid] == 1)
{
SCM(playerid,-1, " {FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Vec igrate duel!");
return 1;
}
if(playa == playerid)
{
SCM(playerid,-1, " {FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Ne mozete igrati duel sami sa sobom!");
return 1;
}
if(togduel[playa] == 1)
{
SCM(playerid,-1,"{FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Igrac je pisao /togduel!");
return 1;
}
new globalstring[400];
format(string, sizeof(string), "Duel |{33CCFF} Pozvali ste igraca %s na duel", GetName(playa));
SCM(playerid, -1, string);
duelprotivnik[playerid] = playa; // gdfe ti ne za ID i ta sranja /duel ID
duelpozivatelj[id] = playerid;
duelgun1[playerid] = gunid1;
duelgun2[playerid] = gunid2;
duelgun3[playerid] = gunid3;
format(globalstring, sizeof(globalstring), "{FFFFFF}Igrac {FFFF00}%s{FFFFFF} vas je pozvao na duel\nOruzje:{FFFF00} %d|%d|%d\n{33CCFF}Prihvacate li?", GetName(playerid),duelgun1[playerid],duelgun2[playerid],duelgun3[playerid]);
ShowPlayerDialog(id,DIALOG_DUELPOZIVNICA,DIALOG_STYLE_MSGBOX,"{33CCFF}Duel",globalstring,"Da","Ne");
SCM(playerid, -1, string);
}
else
{
SendClientMessage(playerid, -1, " {FFFFFF}[{F81414}Greska!{FFFFFF}] {C3C3C3}Pogresan ID Korisnika");
}
return 1;
}[/pawn]
PoÅ¡to ti je kod sranje itkd, odluÄio sam uzet sekundi i sredit ti i komandu i system. Ukoliko neÅ¡to ne razumijeÅ¡, piÅ¡i ovdije, takoÄ'er koristi rBit plugin radi manje memorije. Ovo sam ti rijeÅ¡ia za 5min, ne znam jel Äe kod bit sjeban u pawnu jer sam radio u notepadu tako da ga samo poravnaj sa TAB-om, usput nisam testirao ali bi trebalo sve raditi. Uživaj.
[pawn]
// rBits + Vars
new
Bit1: get_DuelCheck <MAX_PLAYERS> = Bit1: false,
Bit1: get_DuelInvited <MAX_PLAYERS> = Bit1: false
GetDuelWeapons[3][MAX_PLAYERS] = -1,
GetDuelAmmo[MAX_PLAYERS] = -1,
GetPlayerDuelID[MAX_PLAYERS] = -1;
CMD:duel(playerid, params[]) {
new targetid, weaponid[3], weaponammo;
if(sscanf(params, "iiiii", targetid, weaponid[0], weaponid[1], weaponid[2], weaponammo))
return SendClientMessage(playerid, -1, "[INFO]: /duel [targetid] [weapon (1)] [weapon (2)] [weapon (3)] [weapon ammo].");
if(targetid == playerid)
return SendClientMessage(playerid, -1,"[INFO]: Ne mozete samog sebe izazvat.");
if(!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "[INFO]: Pogresan id.");
if(Bit1_Get(get_DuelCheck, playerid))
return SendClientMessage(playerid, -1,"[INFO]: Vec ste u duelu.");
if(Bit1_Get(get_DuelCheck, targetid))
return SendClientMessage(playerid, -1,"[INFO]: Vec je u duelu taj igrac.");
// Send Message
va_SendClientMessage(playerid, -1, "[INFO]: Izazvali ste %s na duel [weapon ids: %d|%d|%d] [ammo: %d].", GetName(targetid), weaponid[0], weaponid[1], weaponid[2], weaponammo);
va_SendClientMessage(playerid, -1, "[INFO]: %s vas je izazvao na duel, da prihvatite kucajte /acceptduel, [weapon ids: %d|%d|%d] [ammo: %d].", GetName(playerid), weaponid[0], weaponid[1], weaponid[2], weaponammo);
// Duel Stats
GetDuelWeapons[0][playerid] = weaponid[0];
GetDuelWeapons[1][playerid] = weaponid[1];
GetDuelWeapons[2][playerid] = weaponid[2];
GetDuelAmmo[playerid] = weaponammo;
Bit1_Set(get_DuelInvited, targetid, true);
GetPlayerDuelID[targetid] = playerid;
return (true);
}
SetDuelStats(playerid, targetid, weapon1, weapon2, weapon3, ammo)
{
/* Tu postavi gdje ce se spawnat u areni itkd, ovo ti je primjer samo za
rBits i postavljanje oruzija itkd */
// Set Weapons
GivePlayerWeapon(playerid, weapon1, ammo);
GivePlayerWeapon(playerid, weapon2, ammo);
GivePlayerWeapon(playerid, weapon3, ammo);
GivePlayerWeapon(targetid, weapon1, ammo);
GivePlayerWeapon(targetid, weapon2, ammo);
GivePlayerWeapon(targetid, weapon3, ammo);
// rBits
Bit1_Set(get_DuelCheck, playerid, true);
Bit1_Set(get_DuelCheck, targetid, true);
return (true);
}
ResetDualVariables(playerid)
{
// (!) OVU FUNKCIJU KORISTI KADA SE ZAVRSI DUEL DA BI SE rBits i Vars resetirale.
// rBits
Bit1_Set(get_DuelCheck, playerid, false);
Bit1_Set(get_DuelCheck, playerid, false);
Bit1_Set(get_DuelInvited, playerid, false);
// vars
GetPlayerDuelID[playerid] = -1;
GetDuelAmmo[playerid] = -1;
// ...
ResetPlayerWeapons(playerid);
return (true);
}
CMD:acceptduel(playerid, params[])
{
new
weapon[3], ammo;
weapon[0] = GetDuelWeapons[0][playerid];
weapon[1] = GetDuelWeapons[1][playerid];
weapon[2] = GetDuelWeapons[2][playerid];
ammo = GetDuelAmmo[playerid];
/*......*/
if(!Bit1_Get(get_DuelInvited, playerid))
return SendClientMessage(playerid, -1,"[INFO]: Niste izazvani od nikoga.");
if(Bit1_Get(get_DuelInvited, playerid))
{
SetDuelStats(playerid, GetPlayerDuelID[playerid], weapon[0], weapon[1], weapon[2], ammo);
}
return (true);
}
[/pawn]
sry za dp pošto ne mogu editovat posljedni post.
Zamjeni rBitsove i varove za ove tu ispod, zaboravia san dodat "," nakon drugog bit-a.
[pawn]// rBits + Vars
new
Bit1: get_DuelCheck <MAX_PLAYERS> = Bit1: false,
Bit1: get_DuelInvited <MAX_PLAYERS> = Bit1: false,
GetDuelWeapons[3][MAX_PLAYERS] = -1,
GetDuelAmmo[MAX_PLAYERS] = -1,
GetPlayerDuelID[MAX_PLAYERS] = -1;
[/pawn]
Citat: L3o poslato Avgust 11, 2018, 00:37:38 PRE PODNE
PoÅ¡to ti je kod sranje itkd, odluÄio sam uzet sekundi i sredit ti i komandu i system. Ukoliko neÅ¡to ne razumijeÅ¡, piÅ¡i ovdije, takoÄ'er koristi rBit plugin radi manje memorije. Ovo sam ti rijeÅ¡ia za 5min, ne znam jel Äe kod bit sjeban u pawnu jer sam radio u notepadu tako da ga samo poravnaj sa TAB-om, usput nisam testirao ali bi trebalo sve raditi. Uživaj.
[pawn]
// rBits + Vars
new
Bit1: get_DuelCheck <MAX_PLAYERS> = Bit1: false,
Bit1: get_DuelInvited <MAX_PLAYERS> = Bit1: false
GetDuelWeapons[3][MAX_PLAYERS] = -1,
GetDuelAmmo[MAX_PLAYERS] = -1,
GetPlayerDuelID[MAX_PLAYERS] = -1;
CMD:duel(playerid, params[]) {
new targetid, weaponid[3], weaponammo;
if(sscanf(params, "iiiii", targetid, weaponid[0], weaponid[1], weaponid[2], weaponammo))
return SendClientMessage(playerid, -1, "[INFO]: /duel [targetid] [weapon (1)] [weapon (2)] [weapon (3)] [weapon ammo].");
if(targetid == playerid)
return SendClientMessage(playerid, -1,"[INFO]: Ne mozete samog sebe izazvat.");
if(!IsPlayerConnected(targetid))
return SendClientMessage(playerid, -1, "[INFO]: Pogresan id.");
if(Bit1_Get(get_DuelCheck, playerid))
return SendClientMessage(playerid, -1,"[INFO]: Vec ste u duelu.");
if(Bit1_Get(get_DuelCheck, targetid))
return SendClientMessage(playerid, -1,"[INFO]: Vec je u duelu taj igrac.");
// Send Message
va_SendClientMessage(playerid, -1, "[INFO]: Izazvali ste %s na duel [weapon ids: %d|%d|%d] [ammo: %d].", GetName(targetid), weaponid[0], weaponid[1], weaponid[2], weaponammo);
va_SendClientMessage(playerid, -1, "[INFO]: %s vas je izazvao na duel, da prihvatite kucajte /acceptduel, [weapon ids: %d|%d|%d] [ammo: %d].", GetName(playerid), weaponid[0], weaponid[1], weaponid[2], weaponammo);
// Duel Stats
GetDuelWeapons[0][playerid] = weaponid[0];
GetDuelWeapons[1][playerid] = weaponid[1];
GetDuelWeapons[2][playerid] = weaponid[2];
GetDuelAmmo[playerid] = weaponammo;
Bit1_Set(get_DuelInvited, targetid, true);
GetPlayerDuelID[targetid] = playerid;
return (true);
}
SetDuelStats(playerid, targetid, weapon1, weapon2, weapon3, ammo)
{
/* Tu postavi gdje ce se spawnat u areni itkd, ovo ti je primjer samo za
rBits i postavljanje oruzija itkd */
// Set Weapons
GivePlayerWeapon(playerid, weapon1, ammo);
GivePlayerWeapon(playerid, weapon2, ammo);
GivePlayerWeapon(playerid, weapon3, ammo);
GivePlayerWeapon(targetid, weapon1, ammo);
GivePlayerWeapon(targetid, weapon2, ammo);
GivePlayerWeapon(targetid, weapon3, ammo);
// rBits
Bit1_Set(get_DuelCheck, playerid, true);
Bit1_Set(get_DuelCheck, targetid, true);
return (true);
}
ResetDualVariables(playerid)
{
// (!) OVU FUNKCIJU KORISTI KADA SE ZAVRSI DUEL DA BI SE rBits i Vars resetirale.
// rBits
Bit1_Set(get_DuelCheck, playerid, false);
Bit1_Set(get_DuelCheck, playerid, false);
Bit1_Set(get_DuelInvited, playerid, false);
// vars
GetPlayerDuelID[playerid] = -1;
GetDuelAmmo[playerid] = -1;
// ...
ResetPlayerWeapons(playerid);
return (true);
}
CMD:acceptduel(playerid, params[])
{
new
weapon[3], ammo;
weapon[0] = GetDuelWeapons[0][playerid];
weapon[1] = GetDuelWeapons[1][playerid];
weapon[2] = GetDuelWeapons[2][playerid];
ammo = GetDuelAmmo[playerid];
/*......*/
if(!Bit1_Get(get_DuelInvited, playerid))
return SendClientMessage(playerid, -1,"[INFO]: Niste izazvani od nikoga.");
if(Bit1_Get(get_DuelInvited, playerid))
{
SetDuelStats(playerid, GetPlayerDuelID[playerid], weapon[0], weapon[1], weapon[2], ammo);
}
return (true);
}
[/pawn]
Opet kad sam ID 0 i kad posaljem duel nekome stigne meni zahtev
Zameni
[pawn]va_SendClientMessage(playerid, -1, "[INFO]: Izazvali ste %s na duel [weapon ids: %d|%d|%d] [ammo: %d].", GetName(targetid), weaponid[0], weaponid[1], weaponid[2], weaponammo);
va_SendClientMessage(playerid, -1, "[INFO]: %s vas je izazvao na duel, da prihvatite kucajte /acceptduel, [weapon ids: %d|%d|%d] [ammo: %d].", GetName(playerid), weaponid[0], weaponid[1], weaponid[2], weaponammo);[/pawn]
Sa
[pawn]va_SendClientMessage(playerid, -1, "[INFO]: Izazvali ste %s na duel [weapon ids: %d|%d|%d] [ammo: %d].", GetName(targetid), weaponid[0], weaponid[1], weaponid[2], weaponammo);
va_SendClientMessage(targetid, -1, "[INFO]: %s vas je izazvao na duel, da prihvatite kucajte /acceptduel, [weapon ids: %d|%d|%d] [ammo: %d].", GetName(playerid), weaponid[0], weaponid[1], weaponid[2], weaponammo);[/pawn]
@Ñ,ιмιc evo deÄko gore ti je sredio to sa slanjem poruke, umijesto da Å¡alje "targetid-u" sluÄajno sam stavio da Å¡alje igraÄu koji je koristio komandu obje poruke. Ovo ostalo bi trebalo sve raditi.
Citat: ᴢɪᴠᴋá´á´ ɪá´,, poslato Avgust 10, 2018, 22:29:11 POSLE PODNE
Pa normalno da treba salji funkciju kojom saljes duel ili cmd ili sta vec nisam ja Milan Tarot a ni Vidoviti Saban..
HAHAHAHAHAHAHAHAHAHAHHAHAHAHAHAHAHAHAHAHHAHAAH