Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5353 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki mielieji SuperGames.lt lankytojai,

iškilo menka problemėlė man "kuriant" savo serverį.

Eisiu iškart prie reikalo:

Serveryje yra ligų sistema. Kai žaidėjas suserga Jis turi kreiptis į medikus. Nes medikai turi tokią komandą /isgydyti su ja ir turiu problemą..

Kai žaidėjas serga medikas jį išgydo, viskas gerai. Bet medikas gali gyti žaidėja nors jis ir neserga. T.y. komanda pajama iš vieno žaidėjo (to kuris "serga") pinigus ir duoda medikui.

O jis tai gali daryti nors žaidėjas ir neserga (t.y. kad ir 1000 kartų)..

Štai komandos kodas:

 	if(!strcmp(cmdtext, "/isgydyti", true,9))
{
		if(playerDB[playerid][specialybe]!=2){SendClientMessage(playerid,0x7DB34DFF,"* Si komanda tik medikams"); return 1;}
		if(cmdtext[9]==0){SendClientMessage(playerid,0x7DB34DFF,"* Isgydyti zmogu: /isgydyti [vardo_dalis]"); return 1;}
		new vardas[24];
		strmid(vardas,cmdtext[10],0,24);
   	new id = GetPlayeridMid(vardas);
	if (id == INVALID_PLAYER_ID){ SendClientMessage(playerid, 0x7DB34DFF, "* Tokio vardo nera"); return 1;}
	new Float:Coo[3];
	GetPlayerPos(id,Coo[0],Coo[1],Coo[2]);
	if(!PlayerToPoint(3, playerid, Coo[0],Coo[1],Coo[2])){SendClientMessage(playerid, 0x7DB34DFF, "* Zaidejas per toli, prieikite arciau."); return 1;}
	if(GetPlayerMoneyA(id)<1)
    {
	    SendClientMessage(id,RED,"* Pagydymo kaina 100lt, tu tiek pinigineje neturi.");
	    SendClientMessage(playerid,RED,"* Pagydymo kaina 100lt, jis tiek pinigineje neturi.");
	    return 1;
	}

	GivePlayerMoneyA(id,100);
	GivePlayerMoneyA(playerid,-100);
		SetPlayerDrunkLevel(id, 0);
		playerDB[playerid][liga]=0;
		playerDB[playerid][ligoslygis]=0;
		SendClientMessage(id,0xD9E916FF,"* Jus buvote isgydytas.");
		SendClientMessage(playerid,0xD9E916FF,"* Isgydete zaideja, gaunate 100lt.");
  		return 1;
	}

Bandžiau dėti šį kodą:

		            if(playerDB[playerid][liga]!=0)
		{
			SendClientMessage(playerid,RED,"* Ligoninė: Žaidėjas neserga.");
		    return 1;
		}

Bet vis vien galima "gydyti" kiek tik nori.

Iš anksto dėkingas už pagalbą, atsilyginsiu +reputacija.

Vietoj šito:

  if(playerDB[playerid][liga]!=0)
        {
           SendClientMessage(playerid,RED,"* Ligoninė: Žaidėjas neserga.");
            return 1;
        }

Dėk:

if(playerDB[playerid][liga]<=0)
{
SendClientMessage(playerid,RED,"* Ligoninė: Žaidėjas neserga.");
return 1;
}

Dar, tu ne taip komanda pasidaręs, norėsi išgydyti kitą žaidėją, o išgydisi save. Dėk šitą:

 if(!strcmp(cmdtext, "/isgydyti", true,9))
{
if(playerDB[playerid][specialybe]!=2){SendClientMessage(playerid,0x7DB34DFF,"* Si komanda tik medikams"); return 1;}
new tname[MAX_PLAYER_NAME];
strmid(tname,GetArgument(1, cmdtext, 0),0,MAX_PLAYER_NAME);
if(!strcmp(tname,"0",true)){SendClientMessage(playerid, COLOR_GREEN, "Isgydyti zmogu: /isgydyti [vardo_dalis]"); return 1;}
new tid = GetPlayeridMid(tname);
GetPlayerName(tid,tname,sizeof(tname));
if (tid == INVALID_PLAYER_ID)
{
SendClientMessage(playerid, 0x7DB34DFF, "* Tokio vardo nera");
return 1;
}
new Float:Coo[3];
GetPlayerPos(id,Coo[0],Coo[1],Coo[2]);
if(!PlayerToPoint(3, playerid, Coo[0],Coo[1],Coo[2]))
{
SendClientMessage(playerid, 0x7DB34DFF, "* Zaidejas per toli, prieikite arciau.");
return 1;
}
if(playerDB[tid][liga]==0)
{
SendClientMessage(playerid,RED,"* Ligoninë: Þaidëjas neserga.");
return 1;
}
if(GetPlayerMoneyA(id)<100)
{
SendClientMessage(id,RED,"* Pagydymo kaina 100lt, tu tiek pinigineje neturi.");
SendClientMessage(playerid,RED,"* Pagydymo kaina 100lt, jis tiek pinigineje neturi.");
return 1;
}

GivePlayerMoneyA(playerid,100);
GivePlayerMoneyA(tid,-100);
SetPlayerDrunkLevel(tid, 0);
playerDB[tid][liga]=0;
playerDB[tid][ligoslygis]=0;
SendClientMessage(tid,0xD9E916FF,"* Jus buvote isgydytas.");
SendClientMessage(playerid,0xD9E916FF,"* Isgydete zaideja, gaunate 100lt.");
return 1;
}

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 5353 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...