hlmod.hu

Magyar Half-Life Mód közösség!
Pontos idő: 2025.02.16. 12:45



Jelenlévő felhasználók

Jelenleg 279 felhasználó van jelen :: 1 regisztrált, 0 rejtett és 278 vendég

A legtöbb felhasználó (2761 fő) 2025.01.09. 20:06-kor tartózkodott itt.

Regisztrált felhasználók: Google [Bot]az elmúlt 5 percben aktív felhasználók alapján

Utoljára aktív
Ahhoz hogy lásd ki volt utoljára aktív, be kell jelentkezned.



Az oldal teljeskörű
használatához regisztrálj.

Regisztráció

Kereső


Új téma nyitása Hozzászólás a témához  [3 hozzászólás ] 
Szerző Üzenet
 Hozzászólás témája: case raktár átalakitása
HozzászólásElküldve:2024.12.29. 11:59 
Offline
Jómunkásember

Csatlakozott:2020.06.14. 17:59
Hozzászólások:404
Megköszönt másnak: 70 alkalommal
Megköszönték neki: 10 alkalommal
Sziasztok!

Lenne egy olyan kérésem hozzátok, hogy a Raktár az így van megoldva....

  1. public Raktar(id)
  2.     {
  3.         new sTitle[128];
  4.         formatex(sTitle, charsmax(sTitle), "%s \r[\wRaktár\r]^n\yDollár: \d%d\\$", gMenuPrefix, gDollar[id]);
  5.         new iMenu = menu_create(sTitle, "Raktar_h");
  6.        
  7.         for(new i;i < gGunSizeof; i++)
  8.         {
  9.             if(OsszesSkin[i][id] > 0)
  10.             {
  11.                 new Sor[6]; num_to_str(i, Sor, 5);
  12.                 formatex(sTitle, charsmax(sTitle), "%s \d[\r%d \dDB]", Fegyverek[i][gWeaponName], OsszesSkin[i][id]);
  13.                 menu_additem(iMenu, sTitle, Sor);
  14.             }
  15.         }
  16.         menu_setprop(iMenu, MPROP_EXITNAME, "Kilépés");
  17.         menu_display(id, iMenu, 0);
  18.     }
  19.     public Raktar_h(id, menu, item)
  20.     {
  21.         if(item == MENU_EXIT)
  22.         {
  23.             menu_destroy(menu);
  24.             return;
  25.         }
  26.        
  27.         new data[9], szName[64];
  28.         new access, callback;
  29.         menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  30.         new key = str_to_num(data);
  31.        
  32.         switch(key)
  33.         {
  34.             case 0..24: gSkin[0][id] = key;
  35.                 case 25..42: gSkin[1][id] = key;
  36.                 case 43..66: gSkin[2][id] = key;
  37.                 case 67..76: gSkin[3][id] = key;
  38.                 case 77..91: gSkin[4][id] = key;
  39.                 case 92..105: gSkin[5][id] = key;
  40.                 case 106..109: gSkin[6][id] = key;
  41.                 case 110..124: gSkin[7][id] = key;
  42.                 case 125..142: gSkin[8][id] = key;
  43.                 case 143..161: gSkin[9][id] = key;
  44.             }
  45.     }


í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.
Csatolmány:
shadowfrag_csgomod.sma [57.88KiB]
Letöltve 34 alkalommal.


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2025.01.11. 15:58 
Offline
Jómunkásember
Avatar

Csatlakozott:2019.11.03. 22:00
Hozzászólások:353
Megköszönt másnak: 37 alkalommal
Megköszönték neki: 23 alkalommal
saxxo írta:
Sziasztok!

Lenne egy olyan kérésem hozzátok, hogy a Raktár az így van megoldva....

  1. public Raktar(id)
  2.     {
  3.         new sTitle[128];
  4.         formatex(sTitle, charsmax(sTitle), "%s \r[\wRaktár\r]^n\yDollár: \d%d\\\\\$", gMenuPrefix, gDollar[id]);
  5.         new iMenu = menu_create(sTitle, "Raktar_h");
  6.        
  7.         for(new i;i < gGunSizeof; i++)
  8.         {
  9.             if(OsszesSkin[i][id] > 0)
  10.             {
  11.                 new Sor[6]; num_to_str(i, Sor, 5);
  12.                 formatex(sTitle, charsmax(sTitle), "%s \d[\r%d \dDB]", Fegyverek[i][gWeaponName], OsszesSkin[i][id]);
  13.                 menu_additem(iMenu, sTitle, Sor);
  14.             }
  15.         }
  16.         menu_setprop(iMenu, MPROP_EXITNAME, "Kilépés");
  17.         menu_display(id, iMenu, 0);
  18.     }
  19.     public Raktar_h(id, menu, item)
  20.     {
  21.         if(item == MENU_EXIT)
  22.         {
  23.             menu_destroy(menu);
  24.             return;
  25.         }
  26.        
  27.         new data[9], szName[64];
  28.         new access, callback;
  29.         menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  30.         new key = str_to_num(data);
  31.        
  32.         switch(key)
  33.         {
  34.             case 0..24: gSkin[0][id] = key;
  35.                 case 25..42: gSkin[1][id] = key;
  36.                 case 43..66: gSkin[2][id] = key;
  37.                 case 67..76: gSkin[3][id] = key;
  38.                 case 77..91: gSkin[4][id] = key;
  39.                 case 92..105: gSkin[5][id] = key;
  40.                 case 106..109: gSkin[6][id] = key;
  41.                 case 110..124: gSkin[7][id] = key;
  42.                 case 125..142: gSkin[8][id] = key;
  43.                 case 143..161: gSkin[9][id] = key;
  44.             }
  45.     }


í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


  1. public Raktar(id)
  2. {
  3.     new String[512];
  4.     formatex(String, charsmax(String), "%s \r- \dRaktár", gMenuPrefix);
  5.     new menu = menu_create(String, "Raktar_h");
  6.    
  7.     for(new i;i < sizeof(Fegyverek); i++)
  8.     {
  9.         if(OsszesSkin[i][id] > 0)
  10.         {
  11.             new Sor[6]; num_to_str(i, Sor, 5);
  12.             formatex(String, charsmax(String), "%s \d[\r%d DB \d]", Fegyverek[i][0], OsszesSkin[i][id]);
  13.             menu_additem(menu, String, Sor);
  14.         }
  15.     }
  16.     menu_display(id, menu, 0);
  17. }
  18.     public Raktar_h(id, menu, item)
  19.     {
  20.         if(item == MENU_EXIT)
  21.     {
  22.         menu_destroy(menu);
  23.         return;
  24.     }
  25.    
  26.     new data[9], szName[64];
  27.     new access, callback;
  28.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  29.     new key = str_to_num(data);
  30.    
  31.     switch(key) {
  32. case 0..20: gSkin[0][id] = key+1;
  33. case 160: gSkin[0][id] = key+1;
  34. }
  35. }


Nem teszteltem, próbáld ki.

_________________
Kép


Hozzászólás jelentése
Vissza a tetejére
   
 Hozzászólás témája:
HozzászólásElküldve:2025.01.18. 22:35 
Offline
Senior Tag
Avatar

Csatlakozott:2017.08.09. 17:01
Hozzászólások:269
Megköszönt másnak: 63 alkalommal
Megköszönték neki: 74 alkalommal
saxxo írta:
Sziasztok!

Lenne egy olyan kérésem hozzátok, hogy a Raktár az így van megoldva....

  1. public Raktar(id)
  2.     {
  3.         new sTitle[128];
  4.         formatex(sTitle, charsmax(sTitle), "%s \r[\wRaktár\r]^n\yDollár: \d%d\\\\$", gMenuPrefix, gDollar[id]);
  5.         new iMenu = menu_create(sTitle, "Raktar_h");
  6.        
  7.         for(new i;i < gGunSizeof; i++)
  8.         {
  9.             if(OsszesSkin[i][id] > 0)
  10.             {
  11.                 new Sor[6]; num_to_str(i, Sor, 5);
  12.                 formatex(sTitle, charsmax(sTitle), "%s \d[\r%d \dDB]", Fegyverek[i][gWeaponName], OsszesSkin[i][id]);
  13.                 menu_additem(iMenu, sTitle, Sor);
  14.             }
  15.         }
  16.         menu_setprop(iMenu, MPROP_EXITNAME, "Kilépés");
  17.         menu_display(id, iMenu, 0);
  18.     }
  19.     public Raktar_h(id, menu, item)
  20.     {
  21.         if(item == MENU_EXIT)
  22.         {
  23.             menu_destroy(menu);
  24.             return;
  25.         }
  26.        
  27.         new data[9], szName[64];
  28.         new access, callback;
  29.         menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
  30.         new key = str_to_num(data);
  31.        
  32.         switch(key)
  33.         {
  34.             case 0..24: gSkin[0][id] = key;
  35.                 case 25..42: gSkin[1][id] = key;
  36.                 case 43..66: gSkin[2][id] = key;
  37.                 case 67..76: gSkin[3][id] = key;
  38.                 case 77..91: gSkin[4][id] = key;
  39.                 case 92..105: gSkin[5][id] = key;
  40.                 case 106..109: gSkin[6][id] = key;
  41.                 case 110..124: gSkin[7][id] = key;
  42.                 case 125..142: gSkin[8][id] = key;
  43.                 case 143..161: gSkin[9][id] = key;
  44.             }
  45.     }


í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:

  1. // Skin tartományok definiálása
  2. new const SkinRanges[][] = {
  3.     {0, 24},   // M4A1
  4.     {25, 42},  // AK47
  5.     {43, 66},  // AWP
  6.     {67, 76},  // SCOUT
  7.     {77, 91},  // FAMAS
  8.     {92, 105}, // XM1014
  9.     {106, 109},// KNIFE
  10.     {110, 124},// DEAGLE
  11.     {125, 142},// USP
  12.     {143, 161} // GLOCK18
  13. };
  14.  
  15. 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.

  1. // Függvény, amely meghatározza, hogy a key melyik tartományba esik, és frissíti a gSkin tömböt
  2. public assignSkinToRange(id, key){
  3.     for (new i = 0; i < gSkinCount; i++){
  4.         new start = SkinRanges[i][0];
  5.         new end = SkinRanges[i][1];
  6.        
  7.         if (key >= start && key <= end){
  8.             gSkin[i][id] = key;
  9.         }
  10.     }
  11. }


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


  1. // Raktár menü kezelő függvény
  2. public Raktar_h(id, menu, item){
  3.     if(item == MENU_EXIT){
  4.         menu_destroy(menu);
  5.         return;
  6.     }
  7.    
  8.     new data[9], szName[64];
  9.     new access, callback;
  10.     menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
  11.     new key = str_to_num(data);
  12.    
  13.     // Hívjuk meg a tartományellenőrző függvényt
  14.     assignSkinToRange(id, key);
  15. }


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. :lol:.

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."


Hozzászólás jelentése
Vissza a tetejére
   
Hozzászólások megjelenítése: Rendezés 
Új téma nyitása Hozzászólás a témához  [3 hozzászólás ] 


Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 vendég


Nyithatsz új témákat ebben a fórumban.
Válaszolhatsz egy témára ebben a fórumban.
Nem szerkesztheted a hozzászólásaidat ebben a fórumban.
Nem törölheted a hozzászólásaidat ebben a fórumban.
Nem küldhetsz csatolmányokat ebben a fórumban.

Keresés:
Ugrás:  
Powered by phpBB® Forum Software © phpBB Limited
Magyar fordítás © Magyar phpBB Közösség
Portal: Kiss Portal Extension © Michael O'Toole