Jump to content
  • 0

pomoc [HELP]Pomoc s podmienkou else if


Mato252

Dotaz

Zdravím :d mám jeden problém :d potrebujem zakomponovať podmienku 

else if(healcooldown == 1)
{
SendClientMessage(playerid,COL_RED,"Tento príkaz môžeš použiť každých 30 sekúnd");
}

 
 
ale keď tam pridám tú podmienku tak to píše error  : error: argument type mismatch (argument 2)
 
tú podmienku potrebujem zakomponovať do tohoto :

if(strcmp("/heal", cmdtext, true, 9) == 0)
{
new healcooldown;
healcooldown = 0;
if(GetPlayerMoney(playerid) >= 5000)
{
if(PlayerInfo[playerid][pVIP] == 1)
{
if(healcooldown == 0)
{
GivePlayerMoney(playerid, -5000);
SetPlayerHealth(playerid,100);
SendClientMessage(playerid, COLOR_GREEN,"Bol si uzdravený.");
healcooldown = 1;
SetTimer("healcool",30000,0);
return 1;
}
}
else if(!GetPlayerMoney(playerid) >= 5000)
{
SendClientMessage(playerid, -1, "Nemáš dostatok peňazí.");
return 1;
}
else if(PlayerInfo[playerid][pVIP] == 0)
{
SendClientMessage(playerid, COLOR_RED, "Nemáš VIP!");
return 1;
}
}

}

 

 

a dole mám : 

 

forward healcool(playerid);
public healcool(playerid)
{
new healcooldown;
healcooldown = 0;
return 1;
}

 

 

  :d sorry ak vyzerám ako deb*l ale ja mám v tomto taký systém ktorý mi fungoval :d

Link to comment
Share on other sites

13 odpovědí na tuto otázku

Recommended Posts

  • 0

if(strcmp("/heal", cmdtext, true, 9) == 0)
{
new healcooldown = 0;
if(GetPlayerMoney(playerid) >= 5000) return SendClientMessage(playerid, -1, "Nemáš dostatok peňazí.");
if(PlayerInfo[playerid][pVIP] == 0) return SendClientMessage(playerid, COLOR_RED, "Nemáš VIP!");
if(healcooldown == 1) return SendClientMessage(playerid,COL_RED,"Tento príkaz môžeš použiť každých 30 sekúnd");
GivePlayerMoney(playerid, -5000);
SetPlayerHealth(playerid,100);
SendClientMessage(playerid, COLOR_GREEN,"Bol si uzdravený.");
healcooldown = 1;
SetTimer("healcool",30000,0);
return 1;
}
Link to comment
Share on other sites

  • 0

Proměnnou healcooldown musíš mít jako globální, ona se po vykonání příkazu smaže.

Ale podle mého názoru, lepší řešení je tohle:

new healcooldown[MAX_PLAYERS];
// -------------
if(strcmp("/heal", cmdtext, true, 5) == 0)
{
	if(GetPlayerMoney(playerid) <= 5000) return SendClientMessage(playerid, -1, "Nemáš dostatok peňazí.");
	if(PlayerInfo[playerid][pVIP] == 0) return SendClientMessage(playerid, COLOR_RED, "Nemáš VIP!");
	if(gettime() < (healcooldown[playerid] + 30)) return SendClientMessage(playerid,COL_RED,"Tento príkaz môžeš použiť každých 30 sekúnd");
	GivePlayerMoney(playerid, -5000);
	SetPlayerHealth(playerid,100);
	SendClientMessage(playerid, COLOR_GREEN,"Bol si uzdravený.");
	healcooldown[playerid] = gettime();
	return 1;
}
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

A keď bude tá premenná globálna nebude sa to správať tak že keď použije nejaký hráč /heal tak ten druhý bude musieť čakať 30 sekúnd ? :d

 

a ešte že keď som tam dal to čo si napísal  tak to píše aj tak error 035: argument type mismatch (argument 2) :(

Link to comment
Share on other sites

  • 0

A keď bude tá premenná globálna nebude sa to správať tak že keď použije nejaký hráč /heal tak ten druhý bude musieť čakať 30 sekúnd ? :d

 

Ne, každý hráč má své specifické ID (playerid), a já jsem vytvořil proměnnou o velikosti (defaultně) 500 polí, tzn. že se každý hráč bude mít svou vlastní proměnnou.

 

 

a ešte že keď som tam dal to čo si napísal  tak to píše aj tak error 035: argument type mismatch (argument 2) :(

 

Ber jako povinnost při nahlášení chyby přidat i kód s označeným řádkem, bohužel, zatím číst myšlenky neumím.

Link to comment
Share on other sites

  • 0

Ahá :p  ten error som už vyriešil   mal som v SendClientMessage  farbu danú ako COL_RED  a musel som to prepísať na 0xF81414FF

 

 

a ešte jednu vec by som potreboval vyriešit netýka sa to už tohoto ale vyhadzuje mi strašne vela warningov typu
 


C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(1170) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(1171) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(1172) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(1174) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(1174) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(1174) : warning 213: tag mismatch

 

tento krát prikladám aj časť kódu 

if(strcmp("/lv", cmdtext, true, 9) == 0) //riadok 1165
{ //riadok 1166
if(IsPlayerInAnyVehicle(playerid)) //riadok 1167
{ //riadok 1168
new currentvehicle2; //riadok 1169
LVX = 2193.6252; //riadok 1170
LVY = 1677.8135; //riadok 1171
LVZ = 12.3672; //riadok 1172
currentvehicle2 = GetPlayerVehicleID(playerid); //riadok 1173
SetVehiclePos(currentvehicle2,LVX,LVY,LVZ); //riadok 1174
return 1; //riadok 1175
} //riadok 1176
else //riadok 1177
{ //riadok 1178
SetPlayerPos(playerid,2193.6252,1677.8135,12.3672); //r 1179
SetPlayerFacingAngle(playerid,93.5995); //riadok 1180
return 1; //riadok 1181
} //riadok 1182
} //riadok 1183

 

 

  :d viem že si teraz veľa ľudí povie že čo som to ***** dal do toho pawna :d ale mne to takto funguje :d

line-y warningov ukazujú na premennú LVX LVY LVZ :d

Link to comment
Share on other sites

  • 0

Proč ty pozice nezahrneš rovnou do SetVehiclePos?

SetVehiclePos(currentvehicle2, 2193.6252, 1677.8135, 12.3672);

Jinak pokud to chceš mít tak, jak to máš, tak to udělej přes float, jak říkal kolega nade mnou...

Link to comment
Share on other sites

  • 0

To new Float:LVX, Float:LVY, Float:LVZ; mám hore v globálnych :d

to je ale teraz jedno :d potrebujem vyriešiť eštej jednu vec  keď napíšem napríklad  /healgsgsdgsdgsdgsd  tak to spustí ten príkaz /heal  a tiež rovnako mám aj prikaz smoke a keď zadám ten príkaz na servery napríklad  /smokefasfasfas  tak sa spustí ten príkaz /smoke      kód k /heal  je ten čo postol  MORT :d

 

Funguje to do 25 písmen :d  /healxxxxxxxxxxxxxxxxxxxxx  napríklad :d

Link to comment
Share on other sites

  • 0

ďakujem funguje :d ešte by som potreboval vyriešiť tieto warningy   (  hádže mi to dokopy asi 200 warningov typu )

C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2006) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2006) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2006) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2007) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2008) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2008) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2008) : warning 213: tag mismatch
C:\Users\užívateľ\Desktop\server\server\samp03z_svr_R1_win32\gamemodes\MATTMODD.pwn(2008) : warning 213: tag mismatch

 

 

case 0://BMX //riadok 2001
{ //riadok 2002
if(GetPlayerMoney(playerid) >= 1200) //riadok 2003
{ //riadok 2004
GivePlayerMoney(playerid, -1200);  //riadok 2005
GetPlayerPos(playerid,CARX,CARY,CARZ); //riadok 2006
GetPlayerFacingAngle(playerid,CARROT); //riadok 2007
car1 = CreateVehicle(481, CARX, CARY, CARZ, CARROT,-1,-1,-1);  //riadok 2008
SendClientMessage(playerid, -1, "Kúpil si si BMX."); //riadok 2009
PutPlayerInVehicle(playerid,car1,0); //riadok 2010
return 1; //riadok 2011
} //riadok 2012

 

 

 

 

premennú CARX,CARY,CARZ,CARROT  mám hore ako globálnu
 

new FLOAT:CARX,FLOAT:CARY,FLOAT:CARZ,FLOAT:CARROT;

 len teraz neviem či to má byť takto alebo  s [MAX_PLAYERS] :d

Link to comment
Share on other sites

  • 0

Ďakujem, funguje :d

 

len ešte jeden problém :d všetky príkazy už fungujú ako majú len  mi stále príkaz /smoke robil to že keď som tam pridal za to ešte niečo tak to ajtak vykonal ten príkaz /smoke tak som ho vymazal a aj tak keď napíšem napríklad /smokesss alebo /smo  tak  sa ten príkaz vykoná aj keď som ho z módu dal preč o.O wtf :d 
rozmýšlal som či nieje ten príkaz daný priamo v jadre sampe ale to by fungoval podla mňa normálne :d nie že dám /smokedsadasdsa a ono sa vykoná príkaz /smoke :d 

Link to comment
Share on other sites

  • 0

áno prepísal :d   ( mám hosting na fakahede ) taký blbý som zas neni :d :d aj som skúsil  že som nahral cez ftp  reštartol server a skúsil nakopírovať späť do inej zložky a keď som to PWN skontroloval tak to bolá tá najaktuálnejšia verzia kde som dal ten príkaz /smoke preč 

 

 

//vyriešené

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...