inventory


Započeo krizmanikdev, Jul 06, 2021, 16:54:16 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Problem(error/warning): napravim dialog u kojem u inventoryu iskoristavas hranu, medjutim kada pojedes hranu jos uvijek ostane u inventoryu i moze se koristiti beskonacno.
moje pitanje je kako da napravim kada je igrac pojede da se odma makne iz inventorya? (nema nikakvih errora/warninga)
Deo skripte:
case 1:
		        {
           	if(PlayerInfo[playerid][pMilk] >= 1 )
	        {
	        SetPlayerHealth(playerid, 100);
	        SCM(playerid,-1,""BLUE">DMARENA< "GREY"You used Milk! ");
 	        }
	        else return SCM(playerid, -1, ""BLUE"L:DM //"GREY" You have no Milk!");

				}

Debug iz server_log(ukoliko je u pitanju crashanje servera - crashdetect log):
//
Poslednja Izmena: Jul 07, 2021, 23:16:21 POSLE PODNE od M Ө M Σ N Z I

Mozda da stavis:

PlayerInfo[playerid][pMilk]--;


u prvu granu if bloka gde igracu postavis hp na 100?

Citat: tutankamon poslato Jul 06, 2021, 16:55:45 POSLE PODNE
Mozda da stavis:

PlayerInfo[playerid][pMilk]--;


u prvu granu if bloka gde igracu postavis hp na 100?

to nema veze, nego ne znam napraviti to da kada je jednom iskoristi da hrana nestane iz inv

Citat: Lukq poslato Jul 06, 2021, 16:56:50 POSLE PODNE
to nema veze, nego ne znam napraviti to da kada je jednom iskoristi da hrana nestane iz inv
itekako ima veze, jer on nece moci da iskoristi benefite te komande ako mu je milk na 0.

Sto se tice inventara moras nam pokazati kako funkcionise i kako ucitava stvari koje igrac ima.

Citat: tutankamon poslato Jul 06, 2021, 16:59:00 POSLE PODNE
itekako ima veze, jer on nece moci da iskoristi benefite te komande ako mu je milk na 0.

Sto se tice inventara moras nam pokazati kako funkcionise i kako ucitava stvari koje igrac ima.

komanda je jednostavna znaci /buy u marketu i odaberes u dialogu, evo jedan case iz market dialoga

        case 0:
		        {
		            if(GetPlayerMoney(playerid) < 500) return SCM(playerid,-1,""BLUE"L:DM | "GREY"Not enough money.");
					PlayerInfo[playerid][pFood] += 1;
		            GivePlayerMoney(playerid, -500); PlayerInfo[playerid][pCash] -= 500;
		            SCM(playerid,-1,""BLUE"T2-Market | "WHITE"-500$!");
		            ApplyAnimation(playerid,"DEALER","shop_pay",4.1,0,0,0,0,0);
				}

Citat: Lukq poslato Jul 06, 2021, 17:04:28 POSLE PODNE
komanda je jednostavna znaci /buy u marketu i odaberes u dialogu, evo jedan case iz market dialoga

        case 0:
		        {
		            if(GetPlayerMoney(playerid) < 500) return SCM(playerid,-1,""BLUE"L:DM | "GREY"Not enough money.");
					PlayerInfo[playerid][pFood] += 1;
		            GivePlayerMoney(playerid, -500); PlayerInfo[playerid][pCash] -= 500;
		            SCM(playerid,-1,""BLUE"T2-Market | "WHITE"-500$!");
		            ApplyAnimation(playerid,"DEALER","shop_pay",4.1,0,0,0,0,0);
				}



Dobro, znaci PlayerInfo[playerid][pFood], PlayerInfo[playerid][pMilk] i ostalo cuvaju kolicinu u inventaru.

Sada kada igrac otvori inventar, taj deo nam je potreban da vidimo kako proverava trenutno stanje i prikazivanje stvari.

Citat: tutankamon poslato Jul 06, 2021, 17:06:14 POSLE PODNE

Dobro, znaci PlayerInfo[playerid][pFood], PlayerInfo[playerid][pMilk] i ostalo cuvaju kolicinu u inventaru.

Sada kada igrac otvori inventar, taj deo nam je potreban da vidimo kako proverava trenutno stanje i prikazivanje stvari.

CMD:inventory(playerid,params[])
{
	new string[250];
	format(string,sizeof(string),"1.Food - %d\n2.Milk - %d\n3.Chips - %d\n4.Chocolate - %d\n5.Drugs - %d",PlayerInfo[playerid][pFood],
	PlayerInfo[playerid][pMilk],PlayerInfo[playerid][pChips],
	PlayerInfo[playerid][pChocolate],PlayerInfo[playerid][pDrugs]);
    SPD(playerid,DIALOG_INVENTORY,DSL,""GREY"Inventory",string,"Ok","X");
    return 1;
}


evo, ako si na to mislio :)

Citat: Lukq poslato Jul 06, 2021, 17:07:58 POSLE PODNE
CMD:inventory(playerid,params[])
{
	new string[250];
	format(string,sizeof(string),"1.Food - %d\n2.Milk - %d\n3.Chips - %d\n4.Chocolate - %d\n5.Drugs - %d",PlayerInfo[playerid][pFood],
	PlayerInfo[playerid][pMilk],PlayerInfo[playerid][pChips],
	PlayerInfo[playerid][pChocolate],PlayerInfo[playerid][pDrugs]);
    SPD(playerid,DIALOG_INVENTORY,DSL,""GREY"Inventory",string,"Ok","X");
    return 1;
}


evo, ako si na to mislio :)

E upravo to.
Ti ovde formatiras string koji ces posle prikazati u dijalogu na osnovu kolicine koja se cuva u pMilk, pChips etc..

Znaci kada igrac iskoristi nesto samo smanjis kolicinu te stvari na primer:

case 1:
		        {
           	if(PlayerInfo[playerid][pMilk] >= 1 )
	        {
	        SetPlayerHealth(playerid, 100);
	        SCM(playerid,-1,""BLUE">DMARENA< "GREY"You used Milk! ");
PlayerInfo[playerid][pMilk]--;            // <---- ovo je bitno da smanjis kada iskoristi za 1
 	        }
	        else return SCM(playerid, -1, ""BLUE"L:DM "GREY" You have no Milk!");


Citat: tutankamon poslato Jul 06, 2021, 17:10:30 POSLE PODNE
E upravo to.
Ti ovde formatiras string koji ces posle prikazati u dijalogu na osnovu kolicine koja se cuva u pMilk, pChips etc..

Znaci kada igrac iskoristi nesto samo smanjis kolicinu te stvari na primer:

case 1:
		        {
           	if(PlayerInfo[playerid][pMilk] >= 1 )
	        {
	        SetPlayerHealth(playerid, 100);
	        SCM(playerid,-1,""BLUE">DMARENA< "GREY"You used Milk! ");
PlayerInfo[playerid][pMilk]--;            // <---- ovo je bitno da smanjis kada iskoristi za 1
 	        }
	        else return SCM(playerid, -1, ""BLUE"L:DM "GREY" You have no Milk!");


to je to, hvala ti brate  8)