U vezi duela.


Započeo Claus, Avgust 10, 2018, 21:59:18 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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
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;
}

L3o

*

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.

// 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);
}
Poslednja Izmena: Avgust 11, 2018, 00:40:06 PRE PODNE od L3o
retired

L3o

*

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.

// 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;
retired

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.

// 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);
}

Opet kad sam ID 0 i kad posaljem duel nekome stigne meni zahtev

Zameni
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);


Sa

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);
Poslednja Izmena: Avgust 11, 2018, 11:45:17 PRE PODNE od LANMY.pwN
One And Only
Old Member
Since AVGUST 2013. :)
GAME OVER - SCRIPTING
SINCE 2009 - 2025

L3o

*

@Ñ,ιмι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.
retired

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