Offline |
 |
 |
Csatlakozott:2017.08.09. 17:01 Hozzászólások:269 Megköszönt másnak: 62 alkalommal Megköszönték neki: 73 alkalommal
|
saxxo írta: Sziasztok! Lenne egy olyan kérésem hozzátok, hogy a Raktár az így van megoldva.... public Raktar(id) { new sTitle[128]; formatex(sTitle, charsmax(sTitle), "%s \r[\wRaktár\r]^n\yDollár: \d%d\\\\$", gMenuPrefix, gDollar[id]); new iMenu = menu_create(sTitle, "Raktar_h"); for(new i;i < gGunSizeof; i++) { if(OsszesSkin[i][id] > 0) { new Sor[6]; num_to_str(i, Sor, 5); formatex(sTitle, charsmax(sTitle), "%s \d[\r%d \dDB]", Fegyverek[i][gWeaponName], OsszesSkin[i][id]); menu_additem(iMenu, sTitle, Sor); } } menu_setprop(iMenu, MPROP_EXITNAME, "Kilépés"); menu_display(id, iMenu, 0); } public Raktar_h(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); switch(key) { case 0..24: gSkin[0][id] = key; case 25..42: gSkin[1][id] = key; case 43..66: gSkin[2][id] = key; case 67..76: gSkin[3][id] = key; case 77..91: gSkin[4][id] = key; case 92..105: gSkin[5][id] = key; case 106..109: gSkin[6][id] = key; case 110..124: gSkin[7][id] = key; case 125..142: gSkin[8][id] = key; case 143..161: gSkin[9][id] = key; } }
így van megoldva, erre szeretnék egy olyan megoldást hogy ha skint írok hozzá akkor ne keljen bővíteni a sql táblát se a case: részt.... Sikeresen kiválasztottad ez és ezt a skint... valami ilyenre gondoltam.... Teljes forráskód. shadowfrag_csgomod.sma Hát figyu, a legegyszerűbb, legidőpótlóbb szerintem ez a megoldás: // Skin tartományok definiálása new const SkinRanges[][] = { {0, 24}, // M4A1 {25, 42}, // AK47 {43, 66}, // AWP {67, 76}, // SCOUT {77, 91}, // FAMAS {92, 105}, // XM1014 {106, 109},// KNIFE {110, 124},// DEAGLE {125, 142},// USP {143, 161} // GLOCK18 }; new gSkinCount = sizeof(SkinRanges);
Hhozz létre egy konstanst amiben tarolod, hogy a skintípusokbol mennyi van, és deklarálj hozzá egy int változót, amiben meghatározod kategóriák számát. // Függvény, amely meghatározza, hogy a key melyik tartományba esik, és frissíti a gSkin tömböt public assignSkinToRange(id, key){ for (new i = 0; i < gSkinCount; i++){ new start = SkinRanges[i][0]; new end = SkinRanges[i][1]; if (key >= start && key <= end){ gSkin[i][id] = key; } } }
Ez igazából több szempontból is hasznos, mivel több helyen is tudod alkalmazni, konyhanyelven ha a handlerba teszed megnézi, hogy a key a skin const részben melyik tartományba esik, ha pl 0-24be akkor m4a1 lesz, és stb. assignSkinToRange(id, key) Ebben a key fontos, mivel az alapjan nezi, hogy melyik tartomany azaz fegyvertipusba esik a szamod, ha mashova irod ne felejtsd el megfeleloen hasznalni. Az id szokasos jatekos id. Akkor nezzuk a raktar handlert hogyan hivod meg // Raktár menü kezelő függvény public Raktar_h(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); // Hívjuk meg a tartományellenőrző függvényt assignSkinToRange(id, key); }
Ez ha nem csak elmeletben jó, de gyakorlatban is, hosszutavon megkonnyiti az eleted ha ezzel a moddal akarsz foglalkozni. Nem, nem fogom tudni neked atirni, mivel semmi kedvem 1700 soron at bongeszni es javitani amit mar alapbol elbasztak, vagy atirkaltak.  . Az sqlben nem kell atirnod semmit szerintem, mert nem kategoriara nezi a mentest, hanem az osszesre. UI Elméletben jó szerintem, ha nem javítsanak ki, ha igen, de gyakorlatban nem, akkor bovitsd a constodat egy fegyvertipusjelzovel es ird at mindenhol, igy konnyebb lesz kezelni az egesz fegyvermizeriat. _________________ "Szeretek aludni... mert az álmaim szebbek, mint a valóság."
|
|