Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: Claus poslato Avgust 10, 2018, 21:59:18 POSLE PODNE

Naslov: U vezi duela.
Poruka od: Claus poslato Avgust 10, 2018, 21:59:18 POSLE PODNE
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): //
Naslov: Odg: U vezi duela.
Poruka od: Aleksa Djordjevic poslato Avgust 10, 2018, 22:28:09 POSLE PODNE
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
Naslov: Odg: U vezi duela.
Poruka od: GoodbyeSamp 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..
Naslov: Odg: U vezi duela.
Poruka od: Claus poslato Avgust 10, 2018, 22:34:45 POSLE PODNE
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]
Naslov: Odg: U vezi duela.
Poruka od: 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]
Naslov: Odg: U vezi duela.
Poruka od: L3o poslato Avgust 11, 2018, 00:54:35 PRE PODNE
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]
Naslov: Odg: U vezi duela.
Poruka od: Claus poslato Avgust 11, 2018, 10:33:42 PRE PODNE
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
Naslov: Odg: U vezi duela.
Poruka od: xLanmi poslato Avgust 11, 2018, 11:44:09 PRE PODNE
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]
Naslov: Odg: U vezi duela.
Poruka od: L3o poslato Avgust 11, 2018, 21:10:20 POSLE PODNE
@Ñ,ιмι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.
Naslov: Odg: U vezi duela.
Poruka od: omcho poslato Avgust 11, 2018, 21:14:30 POSLE PODNE
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