| Offline |
 |
 |
Csatlakozott:2019.11.03. 22:00 Hozzászólások:428 Megköszönt másnak: 40 alkalommal Megköszönték neki: 33 alkalommal
|
DexoN írta: A menük kilépésnél már jobbak, viszont: - ha rámegyek egy menüpontra kilép és nem nyitja meg újra azt. Ez pl. fegyvervásárlásnál idegesítő lehet, én vennék egy AK-t, Deagle-t és valamilyen gránátot is egyszerre. - a handlernél mindig menu_destroyt illetve return PLUGIN_HANDLED-et illik használni, hogy elkerüld a memóriaszivárgást és a felesleges hívásláncot, pl: public weapon_shop_menu(id) { if(!is_user_alive(id)) { client_print_color(id, print_team_default, "^4[Bank]^1 Halottként nem vásárolhatsz!") return } new m = menu_create("\yFEGYVER BOLT", "weapon_shop_handler") menu_additem(m, "AK47 \r~\y 300 kredit") menu_additem(m, "M4A1 \r~\y 300 kredit") menu_additem(m, "AWP \r~\y 500 kredit") menu_additem(m, "Deagle \r~\y 200 kredit") menu_additem(m, "USP \r~\y 150 kredit") menu_additem(m, "HE Gránát \r~\y 100 kredit") menu_additem(m, "Villanó \r~\y 80 kredit") menu_additem(m, "Füst \r~\y 80 kredit") menu_setprop(m, MPROP_EXIT, MEXIT_ALL) menu_display(id, m) } public weapon_shop_handler(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu) bank_menu(id) return PLUGIN_HANDLED } new price new weapon[32] switch(item) { case 0: { price = AK47_PRICE; copy(weapon,31,"weapon_ak47"); } case 1: { price = M4A1_PRICE; copy(weapon,31,"weapon_m4a1"); } case 2: { price = AWP_PRICE; copy(weapon,31,"weapon_awp"); } case 3: { price = DEAGLE_PRICE; copy(weapon,31,"weapon_deagle"); } case 4: { price = USP_PRICE; copy(weapon,31,"weapon_usp"); } case 5: { price = HE_PRICE; copy(weapon,31,"weapon_hegrenade"); } case 6: { price = FLASH_PRICE; copy(weapon,31,"weapon_flashbang"); } case 7: { price = SMOKE_PRICE; copy(weapon,31,"weapon_smokegrenade"); } } if(credits[id] < price) { client_print_color(id, print_team_default,"^4[Bank] ^1Nincs elég kredited!") weapon_shop_menu(id) menu_destroy(menu) return PLUGIN_HANDLED } credits[id] -= price give_item(id, weapon) switch(item) { case 0: cs_set_user_bpammo(id, CSW_AK47, 90) case 1: cs_set_user_bpammo(id, CSW_M4A1, 90) case 2: cs_set_user_bpammo(id, CSW_AWP, 30) case 3: cs_set_user_bpammo(id, CSW_DEAGLE, 35) case 4: cs_set_user_bpammo(id, CSW_USP, 60) } client_print_color(id, print_team_default,"^4[Bank]^1 Vásárlás sikeres! Maradt kredit:^3 %d", credits[id]) menu_destroy(menu) weapon_shop_menu(id) return PLUGIN_HANDLED }
A chatből lemaradt, hogyha egy parancsot írok be azt se írja ki a chatre (hacsak ez nem szándékos volt a részedről, akkor ok) public vip_handler(id, menu, item) { if(item == MENU_EXIT) { bank_menu(id) return } if(item == 0 && credits[id] >= VIP_MONTH_PRICE) { credits[id] -= VIP_MONTH_PRICE vip_type[id] = 1 vip_expire[id] = get_systime() + VIP_MONTH_TIME client_print_color(id, print_team_default, "^4[Bank]^1 1 hónapos VIP aktiválva!") } else if(item == 1 && credits[id] >= VIP_FOREVER_PRICE) { credits[id] -= VIP_FOREVER_PRICE vip_type[id] = 2 vip_expire[id] = 0 client_print_color(id, print_team_default, "^4[Bank]^1 ÖRÖK VIP aktiválva!") } else { client_print_color(id, print_team_default, "^4[Bank]^1 Nincs elég kredit!") } }
Ez kicsit problémás lehet, tekintettel arra hogyha örökös vipem van és veszek rá 1 hónapot véletlenül, akkor ment a kukába, valamint ha már van egy hónapom, akkor az egyszerűen csak felülírja az előzőt (az utóbbi inkább csak figyelmeztető, ha nem így akartad volna). Javítva! _________________ ~ bigbrotherz.hu~ BiG BrotherZ AWP
|
|