hlmod.hu
https://hlmod.hu/

Ciklus
https://hlmod.hu/viewtopic.php?f=9&t=26244
Oldal: 1 / 4

Szerző:  GudDevil [ 2016.09.19. 17:14 ]
Hozzászólás témája:  Ciklus

üdv én azt szeretném kérdezni hogy neki álltam egy ujj módnak és ezt az ujj módot már több dimenzios tömbel szeretném csak egyszerűen nem jövök rá hogyan tudom azt megoldani hogy ki cserélje nekünk a skint valaki esetleg?
vagy esetleg tudnátok nekem abba segiteni hogy megírni erre a 3 db ra?
  1. new const Fegyverek[3][] =
  2. {
  3. {"\\rTerepmintás | \wM4A1"},
  4. {"\\rTerepmintás | \wAK47"},
  5. {"\\rTerepmintás | \wAWP"}
  6. }
  7. new const Terep_Modelek[][] =
  8. {
  9. {"models/kmgGU/terep/m4a1"},
  10. {"models/kmgGU/terep/ak47"},
  11. {"models/kmgGU/terep/awp"}
  12. }


  1. public plugin_precache()
  2. {
  3. for(new i;i < sizeof(Terep_Modelek); i++){
  4. precache_model(Terep_Modelek[i]);
  5. }
  6. }

Szerző:  LyleChriss [ 2016.09.19. 17:56 ]
Hozzászólás témája:  Re: Ciklus

Here you go:
LyleChriss @ Enum az enumban [MEGOLDVA]
Edit: Tudom, nem 100%-ban az amit kértél, de ki lehet belőle hámozni, hogy lehet enummal több dimenziós tömböt csinálni.

Szerző:  GudDevil [ 2016.09.19. 18:04 ]
Hozzászólás témája:  Re: Ciklus

[Edit]

Edig eljutotam velle de még mindig nem jo :D

  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <cstrike>
  4. #include <fun>
  5. #include <dhudmessage>
  6. #include <colorchat>
  7. #include <hamsandwich>
  8. #include <fakemeta>
  9. #include <engine>
  10. #include <sqlx>
  11.  
  12. #pragma tabsize 0
  13.  
  14. #define MAX 3
  15. new szint[33],arany[33], Tapasztalat[33]
  16.  
  17. //fegyverek
  18. new OsszesSkin[3][33], OsszesNev[3], Skin[33];
  19. new Gun[4][33]
  20. new const PLUGIN [] = "Global Unison"
  21. new const VERSION[] = "1.0"
  22. new const  AUTHOR[] = "GudDevil"
  23.  
  24. new const Fegyverek[MAX][][] =
  25. {
  26. {"\\rTerepmintás | \wM4A1"},
  27. {"\\rTerepmintás | \wAK47"},
  28. {"\\rTerepmintás | \wAWP"}
  29. }
  30. new const Terep_Modelek[][] =
  31. {
  32. {"terep/m4a1.mdl"},
  33. {"terep/ak47.mdl"},
  34. {"terep/awp.mdl"}
  35. }
  36. new const FOMENU[][]=
  37. {
  38. { "\\rGlobal \rUnison - \dFĹ‘menĂĽ ^n \wSzint: %d | \wTapasztalat: %d%% | \wArany: %d " },
  39. { "\\iGyakorlás" },
  40. { "\\iRaktár" }
  41. }
  42.  
  43. public plugin_init() {
  44.     register_plugin(PLUGIN, VERSION, AUTHOR)
  45.    
  46. register_clcmd("say /menu","fomenu")
  47. register_impulse(201, "fomenu")
  48. register_clcmd("say /add", "cmdAddolas")
  49. register_event("CurWeapon", "ChangeWeapon", "be", "1=1")
  50. }
  51. public plugin_precache() {
  52.     new Cim[121]
  53. for(new i;i < MAX; i++) {
  54. format(Cim, charsmax(Cim), "models/KmgGU/%s", Terep_Modelek[i])
  55. precache_model(Cim)
  56. }
  57. }
  58. public ChangeWeapon(id) {
  59.     new Cim[121]
  60.     new fgy =get_user_weapon(id)
  61.     {
  62.     if(Gun[1][id] == 0 && fgy == CSW_M4A1 && Skin[id] == 1) {
  63.         format(Cim, charsmax(Cim), "models/%s.mdl", Terep_Modelek[0])
  64.         set_pev(id, pev_viewmodel2, Cim)
  65.     }
  66.     if(Gun[2][id] == 0 && fgy == CSW_AK47 && Skin[id] == 1) {
  67.         format(Cim, charsmax(Cim), "models/%s.mdl", Terep_Modelek[1])
  68.         set_pev(id, pev_viewmodel2, Cim)
  69.     }
  70.     if(Gun[3][id] == 0 && fgy == CSW_AWP && Skin[id] == 1) {
  71.         format(Cim, charsmax(Cim), "models/%s.mdl", Terep_Modelek[2])
  72.         set_pev(id, pev_viewmodel2, Cim)
  73.     }
  74. }
  75. }
  76. public fomenu(id)
  77. {
  78.     new cim[121]
  79.     format(cim, charsmax(cim), FOMENU[0][id],szint[id],arany[id],Tapasztalat[id])
  80.     new menu = menu_create(cim, "fomenu_h")
  81.    
  82.     format(cim, charsmax(cim), "%s", FOMENU[1][id])
  83.     menu_additem(menu, cim, "1",0)
  84.     format(cim, charsmax(cim), "%s", FOMENU[2][id])
  85.     menu_additem(menu, cim, "2",0)
  86.  
  87. menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  88. menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
  89.    
  90. menu_display(id, menu, 0)
  91. return PLUGIN_HANDLED
  92. }
  93.  
  94. public fomenu_h(id, menu, item)
  95. {
  96.     if(item == MENU_EXIT) {
  97.     menu_destroy(menu)
  98.     return PLUGIN_HANDLED
  99. }    
  100. switch(item)
  101. {          
  102.     case 0:{kikepzes(id)
  103.     }
  104.     case 1:{raktar_menu(id)
  105.     }
  106. }
  107. }
  108. public kikepzes(id)
  109. {
  110. }
  111. public raktar_menu(id) {
  112.     new cim[121]
  113.     format(cim, charsmax(cim), FOMENU[0][id])
  114.     new menu = menu_create(cim, "raktar_h")
  115.    
  116.     for(new i; i < MAX; i++) {
  117.         if(OsszesSkin[i][id]> 0)
  118.         {
  119.             new Num[6]
  120.             num_to_str(i, Num, 5)
  121.             formatex(cim, charsmax(cim), "\y%s \r(%d) ", Fegyverek[i][id], OsszesSkin[i][id])
  122.             menu_additem(menu, cim, Num)
  123.         }
  124.     }
  125.     menu_display(id, menu)
  126. }
  127. public cmdAddolas(id) {
  128.     if(get_user_flags(id) & ADMIN_LEVEL_H){
  129.        
  130.         for(new i; i < MAX; i++) {
  131.             OsszesSkin[i][id]++
  132.         }
  133.     }
  134. }
  135. public raktar_h(id, menu, item){
  136.    
  137.     if(item == MENU_EXIT)
  138.     {
  139.         menu_destroy(menu)
  140.         return
  141.     }
  142.    
  143.     new data[9], szName[64]
  144.     new access, callback
  145.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
  146.     new key = str_to_num(data)
  147.    
  148.     switch(key)
  149.     {
  150.         case 0: Gun[1][id] = 1;
  151.         case 1: Gun[2][id] = 2;
  152.         case 2: Gun[3][id] = 3;
  153. }
  154. }

Szerző:  LyleChriss [ 2016.09.19. 18:58 ]
Hozzászólás témája:  Re: Ciklus

Először tömbről kajabáltál, azért linkeltem azt.
Tessék, ez a for ciklusos menü tutorial:
[Tut] For ciklusos menü

Szerző:  MasTerS [ 2016.09.19. 19:01 ]
Hozzászólás témája:  Re: Ciklus

Szerintem így joblene a menü.
  1. public menu(id)
  2. {
  3.     new txt[128]
  4.    
  5.     new menu = menu_create("Példa menü", "menu_h")
  6.  
  7.     //elindítjuk a for ciklust
  8.     for(new i; i<sizeof(SKINS) ; i++)
  9.     {
  10.         //minden skin nevet egyessével a "txt" tömbbe másolunk
  11.         formatex(txt, charsmax(txt), "%s", SKINS[i][Name])
  12.         //majd a additemmel új menüelemként hozzáadjuk a menühöz
  13.         menu_additem(menu, txt, "", 0)
  14.     }
  15.    
  16.     menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
  17.     menu_setprop(menu, MPROP_BACKNAME, "Vissza");
  18.     menu_setprop(menu, MPROP_NEXTNAME, "Következő");
  19.     menu_setprop(menu, MPROP_EXITNAME, "Kilépés");
  20.        
  21.     menu_display(id, menu, 0)
  22.    
  23. }
  24.  
  25. public menu_h(id, menu, item)
  26. {
  27.     if(item == MENU_EXIT) {
  28.         menu_destroy(menu);
  29.         return PLUGIN_HANDLED;
  30.     }
  31.    
  32.     //az item egyenlő a fenti for ciklusban szereplő i-vel
  33.     //Azaz az első menü elemnél az item=0; másodiknál item=1; stb...
  34.     client_print(id, print_chat, "Kiválasztottad a %s skint!", SKINS[item][Name])
  35.    
  36.     menu_destroy(menu);
  37.     return PLUGIN_HANDLED;
  38. }

Szerző:  GudDevil [ 2016.09.19. 19:04 ]
Hozzászólás témája:  Re: Ciklus

tudom hogy egyszerunek hangzik :D de meg csak most kezdtem elsonek ezt a ciklusos dolgot :D esetleg valaki segitene benne? :D elöre is köszönöm :)

Szerző:  LyleChriss [ 2016.09.19. 19:07 ]
Hozzászólás témája:  Re: Ciklus

Az a tutorial KB egy copy-paste szintű menüt kínál. Te már csak azt akarod, hogy valaki egy az egyben megcsinálja neked. :lol: :evil:

Szerző:  exodus [ 2016.09.19. 19:58 ]
Hozzászólás témája:  Re: Ciklus

  1. Skin[33]


Mivel többdimenziós tömbökkel akarsz dolgozni akkor ne így hozd létre a tömböt.

Szval:

  1. Skin[1][33]


ez:
  1. new Gun[4][33]

nem is értem minek, felesleges.. :D

  1. public ChangeWeapon(id) {
  2.     new Cim[121]
  3.     new fgy =get_user_weapon(id)
  4.     {
  5.     if(Gun[1][id] == 0 && fgy == CSW_M4A1 && Skin[id] == 1) {
  6.         format(Cim, charsmax(Cim), "models/%s.mdl", Terep_Modelek[0])
  7.         set_pev(id, pev_viewmodel2, Cim)
  8.     }
  9.     if(Gun[2][id] == 0 && fgy == CSW_AK47 && Skin[id] == 1) {
  10.         format(Cim, charsmax(Cim), "models/%s.mdl", Terep_Modelek[1])
  11.         set_pev(id, pev_viewmodel2, Cim)
  12.     }
  13.     if(Gun[3][id] == 0 && fgy == CSW_AWP && Skin[id] == 1) {
  14.         format(Cim, charsmax(Cim), "models/%s.mdl", Terep_Modelek[2])
  15.         set_pev(id, pev_viewmodel2, Cim)
  16.     }
  17. }
  18. }


csak, hogy egyszerűbb legyen:

  1. new const Terep_Modelek_Ak47[][] =
  2. {
  3. {"models/KmgGU/terep/ak47_alap.mdl"},
  4. {"models/KmgGU/terep/ak47_terep.mdl"}
  5. }
  6.  
  7. public ChangeWeapon(id)
  8. {
  9. new fegyoka =get_user_weapon(id)
  10.  
  11. for(new i;i < sizeof(Terep_Modelek_Ak47); i++)
  12. {
  13.     if(Skin[0][id] == i && fegyoka == CSW_AK47)
  14.     {
  15.         set_pev(id, pev_viewmodel2, Terep_Modelek_Ak47[i]);
  16.     }
  17. }
  18. }

persze ezt nem kötelező külön constokkal kezelni, mivel ugye ez csak egy példa, hogy egyszerűbb legyen. :D

és jelen esetben:
  1. skin[0][id] = 0 //az alap ak47 model
  2. skin[0][id] = 1 //pedig az ak47_terep.mdl


tehát a raktár handlernek így kellene kinéznie:
  1. public raktar_h(id, menu, item){
  2.    
  3.     if(item == MENU_EXIT)
  4.     {
  5.         menu_destroy(menu)
  6.         return
  7.     }
  8.    
  9.     new data[9], szName[64]
  10.     new access, callback
  11.     menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
  12.     new key = str_to_num(data)
  13.    
  14.     switch(key)
  15.     {
  16.         case 0: Skin[0][id] = 1; //azért 1 mivel gondolom az alap ak47 skint nem akarod felszerelni :D
  17. }
  18. }


Szerk:

Ja és tabot használd.. :D
szebb lesz a forráskód és jobban átfogod látni teis..

Csatolmányok:
asddssdsdsdsd.sma [3.79 KiB]
Letöltve 118 alkalommal.

Szerző:  regener [ 2016.09.19. 20:34 ]
Hozzászólás témája:  Re: Ciklus

De miért curweapont használtok?
Az nem csak fegyóváltáskor fut le, hanem ha töltesz és lősz is, feleslegesen állítja a skint amikor elég lenne fegyverváltáskor is.

Hamsandwich-ben van erre register, igaz fegyverenként kell funkciózni, de legalább nem terheli folyamat a szervert (és a kliens sem kap állandóan parancsot hogy mást mutasson) csak ha váltasz az adott fegyverre ahogy annak lennie is kell.

Amúgy miért hívsz meg minden include-ot?
A kódodban csak ez a 4 kell és az Osszesnev tömböt nem használtad fel.
  1. #include <amxmodx>
  2. #include <colorchat>
  3. #include <fakemeta>
  4. #include <engine>

Szerző:  Maxi [ 2016.09.19. 20:38 ]
Hozzászólás témája:  Re: Ciklus

Jézus haragja sújtson le, ennyire bonyolultan megoldani egy ilyet..

Oldal: 1 / 4 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/