-
Hali készitettem egy táska rendszert csak ugye van hogy ki listáza hogy pl Jogsi, Szendvics
Nah a lényeg ha rá kattol akkor használ,eldob,átad és ezt dialogba hogy birnám megoldani hogy pl ha jogsit választom akkor átadja a másiknak vagy eldobja val
if(dialogid == 0531)
{
if(!response) return 1;
if(listitem == 0) // MG
{
ShowPlayerDialog(playerid, 0532, DIALOG_STYLE_LIST, \"Táskád Tartalma\", \"Használ\\nÁtad\\nEldob\\n\", \"Kiválaszt\", \"Mégsem\");
}
}
if(dialogid == 0532)
{
if(!response) return 1;
if(listitem == 0) // MG
{
SendClientMessage(playerid,FEHER,\"Ez van ha használja a tárgyat\");
}
if(listitem == 1) // MG
{
SendClientMessage(playerid,FEHER,\"Ez van ha átadja\");
}
if(listitem == 2) // MG
{
SendClientMessage(playerid,FEHER,\"Ez van ha átadja\");
}
}
-
Amikor rákattintasz, 0531-es dialogban valamelyik listitemre, akkor azt elmented egy változóba. A listitem értékét az inputtext adja vissza LIST_DIALOG esetén is. Tehát:
// Kód elején
new Player_CurrentItem[MAX_PLAYERS][32];
// Ha dialognál - 0531
if(!response) return 1;
else
{
format(Player_CurrentItem[playerid],32,\"%s\",inputtext); // Így elmented a változóba a rákkattintott érték nevét.
ShowPlayerDialog(...........,\"Használat/nÁtadás/nEldobás\");
}
// Másik dialog a kezelései - 0532
if(listitem == 0) // Használat
{
if(!strcmp(Player_CurrentItem[playerid],\"Kenyér\"))
SetPlayerHealth(playerid,50);
pInfo[playerid][Kenyer]--;
}
Nagyjából így néz ki a dolog. Lényeg, hogy azt az elemet elmented egy változóba, majd használatnál feltételsz szabsz ki rá, hogy ha egyenlő kenyér akkor ez történik stb.
Viszont, Tárgy névre hivatkozni nem a legoptimálisabb döntés, hiszen ha például megváltoztatod a nevét, akkor mindenhol megkell változtatnod a módban.
Ezért ID-re hivatkozni jobb, lehet mivel az állandó lesz, míg a név változhat.
Illetve, ez elég statikus inventory rendszernek tűnik, tehát kötött, majd ha jobban belejössz, akkor ajánlatos inkább dinamikusabb inventory rendszert készíteni.
Viszont ebben az állapotában is, hogy dialogos már jobb mint ami a szerverek 95%-án van :D
Csak így tovább, ha segítség kell irj nyugodtan!
-
Köszönöm szépen sikerült megoldanom! De lassan áttérek az sqlre gyorsabb a feldolgozás! :)
-
Nah szóval ki probáltam élesbe és annyi gondom lenne hogy pl a szendvics 0 értékre jön ki és ha pl a jogsi jön ki 0 értékre listenbe akkor mivan? esetleg egy ciklusal meglehet oldani röviden?
if(listitem == 0 && pInfo[playerid][pKaja] >= 1) // Használat
{
if(!strcmp(Player_CurrentItem[playerid],\"Szendvics\"))
SetPlayerHealth(playerid,50);
pInfo[playerid][pKaja]--;
}
if(listitem == 0 && pInfo[playerid][pKaja] >= 0) // Használat
{
if(!strcmp(Player_CurrentItem[playerid],\"Jogsi\"))
SetPlayerHealth(playerid,0);
pInfo[playerid][pJogsi]--;
}
}
-
Nem igazán értem a problémádat.
Miután rákattint egy itemre, pl. Jogsi, azt elmented a változóba amit fentebb írtam. Ekkore megjön neki egy dialog, amiben \"Használat\\Átadás\\Eldobás\" van, nem?
Amit küldtél kódot, ott a list itemet fölösleges 2x vagy többször is kiírni.
if(listitem == 0)
{
if(!strcmp(Player_CurrentItem[playerid],\"Kenyér\"))
SetPlayerHealth(playerid,50);
pInfo[playerid][Kenyer]--;
if(!strcmp(Player_CurrentItem[playerid],\"Kötszer\"))
SetPlayerHealth(playerid,20);
pInfo[playerid][Kotszer]--;
if(!strcmp(Player_CurrentItem[playerid],\"Jogsi\"))
SendClientMessage(\"Jogosítvány: Érvényes\");
}
Csak logikusan kell belegondolni. Mindegy, melyik tárgyra kattint rá, mivel ha rákattint akkor a változót egyből felül fogja írni neked. Utána pedig 3 választási lehetőséged van vagy amennyit megadsz, hogy használod-e/átadod stb. Hogyha, használni akarod. Ami mindenféleképpen 0 lesz mivel ha elsőnek írod akkor 0. Akkor meghívódik az a kód amit itt leírtam.
Ha MySQL-be írod ott is ugyan ez lesz, csak a mentés/betöltés lesz dinamikusabb.
Nem tudom a szendviccsel mi a problémád, eléggé furcsán fogalmaztad meg. Szóval várom a választ :D
-
semmi kicsit felre ertelmeztem :D de mostmar tiszta :D koszi
-
Hali készitettem egy táska rendszert csak ugye van hogy ki listáza hogy pl Jogsi, Szendvics
Nah a lényeg ha rá kattol akkor használ,eldob,átad és ezt dialogba hogy birnám megoldani hogy pl ha jogsit választom akkor átadja a másiknak vagy eldobja valaki tud segiteni?
CMD:taska(playerid,params[])
{
new szendvics = pInfo[playerid][pKaja], pia = pInfo[playerid][pPia], fu = pInfo[playerid][pFCigi], koko = pInfo[playerid][pCocain], jogsi = pInfo[playerid][pJogsi], cigi = pInfo[playerid][pCigi], deagle = pInfo[playerid][pDeagle], colt = pInfo[playerid][pColt],
shotgun = pInfo[playerid][pShotgun], baseball = pInfo[playerid][pBasseball], mati = pInfo[playerid][pMati], mobile = pInfo[playerid][pMobile];
new str[1024];
str[0] = EOS;
format(str, sizeof(str), \"{2ccdfd}Mennyiség\\t\\tTárgy\\n{FFFFFF}\");
if(szendvics != 0) format(str, sizeof(str), \"%s%d\\t\\t\\tSzendvics\\n\", str, szendvics);
if(pia != 0) format(str, sizeof(str), \"%s%d\\t\\t\\tInnivaló\\n\", str, pia);
if(fu != 0) format(str, sizeof(str), \"%s%d\\t\\t\\tFüves Cigi\\n\", str, fu);
if(koko != 0) format(str, sizeof(str), \"%s%d\\t\\t\\tCocain\\n\", str, koko);
if(jogsi != 0) format(str, sizeof(str), \"%s%d\\t\\t\\tSzemélyi Jogosítvány\\n\",