Offline |
|
|
Csatlakozott:2016.03.05. 20:56 Hozzászólások:665 Megköszönt másnak: 27 alkalommal Megköszönték neki: 124 alkalommal
|
$weeT írta: fegyver vásárlásnál boltot hogy tudom egyszerűsíteni mert 100+ fegyverről van szó A lehető legegyszerűbb megoldást vázolom fel neked.
Létrehozzuk a tömböket, amik szükségesek nekünk:#define FGY 4 //Hogy ha módosítunk ne kelljen mindenhol átirogatni (az egyszerűség kedvéért) new Fegyo[FGY][33]; //Tömb a fegyvereknek new Dollar[33]; //Tömb a fizetőeszköznek
A fegyverek neveit tároljuk constba, hogy könnyü legyen a módosítás (Most enummal tesszük mivel ára is lesz a fegyvernek)enum _:Valami { Nev[32], Ar[8] }; new FegyoNevek[FGY][Valami]= { // { "Fegyver neve", "Ára" } { "AK47 | Piros", 25 }, { "AK47 | Kék", 16 }, { "AK47 | Fekete", 19 }, { "AK47 | Lila", 64 } };
Majd maga a bolt része, itt soha nem kell módosítani semmit mivel a ciklus úgy fut le, hogy a FegyoNevek constból kiolvassa az összes sort, tehát ha 2 ezer fegyvert teszel be sem kell itt módosítani semmit.public m_Bolt(id) { new String[121]; formatex(String, charsmax(String), "Bolt"); new menu = menu_create(String, "h_Bolt"); for(new i;i < sizeof(FegyoNevek); i++) { new a[6]; num_to_str(i, a, 5); formatex(String, charsmax(String), "%s (%d Dollár)", FegyoNevek[Nev][i], FegyoNevek[Ar][i]); menu_additem(menu, String, a); } menu_display(id, menu, 0); return PLUGIN_HANDLED; }
Aztán jön maga a bolt lényege, a handler ami így néz ki(Itt szintén soha nem kell modosítani semmit ha esetleg fegyvert szeretnél hozzá tenni vagy elvenni):public h_Bolt(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[9], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); new key = str_to_num(data); if(Dollar[id] >= FegyoNevek[Ar][key]) { Fegyo[key][id]++; //Hogy megkapjuk az adott vegyvert (A key helyettesíti a leütött gombot, tehát ha 2-es gombot nyomunk Fegyo[2][id]-t kapunk. Dollar[id] -= Fegyonevek[Ar][key]; //Hogy el vegye tölünk a dollárt, ne csak úgy ingyen kapjuk a fegyvert ColorChat(id, GREEN, "[Információ] ^1Vásároltál egy ^4%s^1-t ^4%d ^1Dollárért.", Fegyonevek[Nev][key], FegyoNevek[Ar][key]) } else { m_Bolt(id) ColorChat(id, GREEN, "[Információ] ^1Nincs elég dollárod ennek a megvásárlásához.") } }
Ha esetleg így nem érthető akkor itt a teljes forráskód:► Spoiler mutatása #define FGY 4 //Hogy ha módosítunk ne kelljen mindenhol átirogatni (az egyszerűség kedvéért) new Fegyo[FGY][33]; //Tömb a fegyvereknek new Dollar[33]; //Tömb a fizetőeszköznek enum _:Valami { Nev[32], Ar[8] }; new FegyoNevek[FGY][Valami]= { // { "Fegyver neve", "Ára" } { "AK47 | Piros", 25 }, { "AK47 | Kék", 16 }, { "AK47 | Fekete", 19 }, { "AK47 | Lila", 64 } }; public m_Bolt(id) { new String[121]; formatex(String, charsmax(String), "Bolt"); new menu = menu_create(String, "h_Bolt"); for(new i;i < sizeof(FegyoNevek); i++) { new a[6]; num_to_str(i, a, 5); formatex(String, charsmax(String), "%s (%d Dollár)", FegyoNevek[Nev][i], FegyoNevek[Ar][i]); menu_additem(menu, String, a); } menu_display(id, menu, 0); return PLUGIN_HANDLED; } public h_Bolt(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return; } new data[9], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); new key = str_to_num(data); if(Dollar[id] >= FegyoNevek[Ar][key]) { Fegyo[key][id]++; //Hogy megkapjuk az adott vegyvert (A key helyettesíti a leütött gombot, tehát ha 2-es gombot nyomunk Fegyo[2][id]-t kapunk. Dollar[id] -= Fegyonevek[Ar][key]; //Hogy el vegye tölünk a dollárt, ne csak úgy ingyen kapjuk a fegyvert ColorChat(id, GREEN, "[Információ] ^1Vásároltál egy ^4%s^1-t ^4%d ^1Dollárért.", Fegyonevek[Nev][key], FegyoNevek[Ar][key]) } else { m_Bolt(id) ColorChat(id, GREEN, "[Információ] ^1Nincs elég dollárod ennek a megvásárlásához.") } }
Ha valamit rosszul írtam nyugodtan kövezzetek meg
Ők köszönték meg exodus nek ezt a hozzászólást: $weeT (2017.07.16. 10:18) |
|
|