Menu Broni - Jak zrobić aby zapamiętać bro...
Skull.
14.05.2015
Witam. Jak w temacie, otóż mam problem z zrobieniem aby przy odrodzeniu były te same bronie co zostały wybrane po pierwszym odrodzeniu.
Mój plugin na menu broni wygląda tak: http://amxx.pl/paste...epi7g/type/cpp/
A chciałbym aby to wyglądało tak: http://amxx.pl/pastebin/up1n7xgymlmw/
Mam nadzieje że ktoś wie jak to zrobić i że mi tutaj pomoże ponieważ próbowałem już nawet wyciągnąć to z CSDM lecz nie udało mi się
Kowalsky
14.05.2015
Zrób na przykładzie Knife Moda: http://amxx.pl/topic...noży-do-wyboru/Zobacz jak tutaj jest zrobiony handler knifemenu oraz funkcja SetKnife, zwróć także uwagę na tablicę knife_model[33]
Petpat
14.05.2015
Skull.
17.05.2015
Dziękuje wam wszystkim za wszelką pomoc lecz największe podziękowania za pomoc należą się użytkownikowi: Asiap
Asiap - Oraz poprawiłem troszkę twój plugin pod kontem krótszy kod (usunięte nie potrzebne klamry) + dodałem bezlik magazynków.
Cały plugin można zobaczyć w temacie: http://amxx.pl/topic...zlik-magazynków
Jeszcze raz dziękuje!
Asiap
17.05.2015
event CurWeapon nie sluzy do nabijania amunicji
ten event wykonuje sie za kazdym: strzalem, zmienie broni, przeladowaniu, zmiany predkosci biegu przez bron, wl i wyl celownika itp
lepiej wykorzystac forward Ham_Weapon_Reload i dopiero gdy gracz przeladowuje bron to dodawac amunicje
ja tak zawsze robie
i nie warto includowac calej biblioteki gdy uzywa sie tylko jednego natywu/forwardu najlepiej znalezc alternatywne i dodac do pluginu jako stock lub funkcje lokalna
#include <amxmodx> #include <hamsandwich> #include <fun> #include <fakemeta> new g_iMyWeapons[33][2]; new CSW_MAX_AMMO[33] = {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1}; public plugin_init() { register_plugin("Menu Broni", "v1.0", "Skull"); RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1); for(new g_szName[24], i = 1; i <= 30; i++) { if(!((1<<CSW_HEGRENADE|1<<CSW_C4|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG|1<<CSW_KNIFE) & 1<<i) && get_weaponname(i, g_szName, 23)) { RegisterHam(Ham_Weapon_Reload, g_szName, "WeaponReload", 1); } } } public client_disconnect(id) g_iMyWeapons[id][0] = g_iMyWeapons[id][1] = 0; public Odrodzenie(id) { new menu = menu_create("Menu Broni", "Handel_Menu"); menu_additem(menu, "Wybierz Bronie"); menu_additem(menu, "Daj Poprzednie bronie"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public Handel_Menu(id, menu, item) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; switch(item) { case MENU_EXIT: return PLUGIN_CONTINUE; case 0: return MenuBroni(id); case 1: { new g_szName[24]; get_weaponname(g_iMyWeapons[id][0], g_szName, 23); give_item(id, g_szName); get_weaponname(g_iMyWeapons[id][1], g_szName, 23); give_item(id, g_szName); } } return PLUGIN_CONTINUE; } public MenuBroni(id) { new menu = menu_create("Wybierz Bron:", "Handel_Bronie"); menu_additem(menu, "M4A1"); menu_additem(menu, "AK47"); menu_additem(menu, "AWP"); menu_additem(menu, "Scout"); menu_additem(menu, "AUG"); menu_additem(menu, "Krieg 550"); menu_additem(menu, "M249"); menu_additem(menu, "MP5"); menu_additem(menu, "UMP45"); menu_additem(menu, "Famas"); menu_additem(menu, "Galil"); menu_additem(menu, "M3"); menu_additem(menu, "XM1014"); menu_additem(menu, "Mac10"); menu_additem(menu, "TMP"); menu_additem(menu, "P90"); menu_additem(menu, "G3SG1 (autokampa)"); menu_additem(menu, "Krieg 552 (autokampa)"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); return menu_display(id, menu); } public Handel_Bronie(id, menu, item) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; switch(item) { case MENU_EXIT: return PLUGIN_CONTINUE; case 0: g_iMyWeapons[id][0] = CSW_M4A1; case 1: g_iMyWeapons[id][0] = CSW_AK47; case 2: g_iMyWeapons[id][0] = CSW_AWP; case 3: g_iMyWeapons[id][0] = CSW_SCOUT; case 4: g_iMyWeapons[id][0] = CSW_AUG; case 5: g_iMyWeapons[id][0] = CSW_SG550; case 6: g_iMyWeapons[id][0] = CSW_M249; case 7: g_iMyWeapons[id][0] = CSW_MP5NAVY; case 8: g_iMyWeapons[id][0] = CSW_UMP45; case 9: g_iMyWeapons[id][0] = CSW_FAMAS; case 10: g_iMyWeapons[id][0] = CSW_GALI; case 11: g_iMyWeapons[id][0] = CSW_M3; case 12: g_iMyWeapons[id][0] = CSW_XM1014; case 13: g_iMyWeapons[id][0] = CSW_MAC10; case 14: g_iMyWeapons[id][0] = CSW_TMP; case 15: g_iMyWeapons[id][0] = CSW_P90; case 16: g_iMyWeapons[id][0] = CSW_G3SG1; case 17: g_iMyWeapons[id][0] = CSW_SG552; } new g_szName[24]; get_weaponname(g_iMyWeapons[id][0], g_szName, 23); give_item(id, g_szName); return MenuBroniPistolety(id); } public MenuBroniPistolety(id) { new menu = menu_create("Wybierz Bron Krotka:", "Handel_BroniePistolety"); menu_additem(menu, "Deagle"); menu_additem(menu, "Elite"); menu_additem(menu, "Usp"); menu_additem(menu, "Glock18"); menu_additem(menu, "Fiveseven"); menu_additem(menu, "P228"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); return menu_display(id, menu); } public Handel_BroniePistolety(id, menu, item) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; switch(item) { case MENU_EXIT: return PLUGIN_CONTINUE; case 0: g_iMyWeapons[id][1] = CSW_DEAGLE; case 1: g_iMyWeapons[id][1] = CSW_ELITE; case 2: g_iMyWeapons[id][1] = CSW_USP; case 3: g_iMyWeapons[id][1] = CSW_GLOCK18; case 4: g_iMyWeapons[id][1] = CSW_FIVESEVEN; case 5: g_iMyWeapons[id][1] = CSW_P228; } new g_szName[24]; get_weaponname(g_iMyWeapons[id][1], g_szName, 23); give_item(id, g_szName); return PLUGIN_CONTINUE; } public WeaponReload(ent) { if(!get_pdata_int(ent, 54, 4)) { return; } new id = get_pdata_cbase(ent, 41, 4); static iWeapon, iAmmo; iWeapon = get_user_weapon(id, _, iAmmo); if(iAmmo != CSW_MAX_AMMO[iWeapon]) { SetUserAmmo(id, CSW_MAX_AMMO[iWeapon], iWeapon); } } SetUserAmmo(id, iBpammo, iWeapon) { if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2) { return 0; } new g_szName[32]; if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) { while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName))) { if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id) { set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo); } } return 0; } set_pdata_int(id, 351, 0); return iWeapon; }
Użytkownik Asiap edytował ten post 17.05.2015 16:14
Skull.
21.05.2015
event CurWeapon nie sluzy do nabijania amunicji
ten event wykonuje sie za kazdym: strzalem, zmienie broni, przeladowaniu, zmiany predkosci biegu przez bron, wl i wyl celownika itp
lepiej wykorzystac forward Ham_Weapon_Reload i dopiero gdy gracz przeladowuje bron to dodawac amunicje
ja tak zawsze robie
i nie warto includowac calej biblioteki gdy uzywa sie tylko jednego natywu/forwardu najlepiej znalezc alternatywne i dodac do pluginu jako stock lub funkcje lokalna#include <amxmodx> #include <hamsandwich> #include <fun> #include <fakemeta> new g_iMyWeapons[33][2]; new CSW_MAX_AMMO[33] = {-2, 52, 0, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 0, 100, -1, -1}; public plugin_init() { register_plugin("Menu Broni", "v1.0", "Skull"); RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1); for(new g_szName[24], i = 1; i <= 30; i++) { if(!((1<<CSW_HEGRENADE|1<<CSW_C4|1<<CSW_SMOKEGRENADE|1<<CSW_FLASHBANG|1<<CSW_KNIFE) & 1<<i) && get_weaponname(i, g_szName, 23)) { RegisterHam(Ham_Weapon_Reload, g_szName, "WeaponReload", 1); } } } public client_disconnect(id) g_iMyWeapons[id][0] = g_iMyWeapons[id][1] = 0; public Odrodzenie(id) { new menu = menu_create("Menu Broni", "Handel_Menu"); menu_additem(menu, "Wybierz Bronie"); menu_additem(menu, "Daj Poprzednie bronie"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); } public Handel_Menu(id, menu, item) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; switch(item) { case MENU_EXIT: return PLUGIN_CONTINUE; case 0: return MenuBroni(id); case 1: { new g_szName[24]; get_weaponname(g_iMyWeapons[id][0], g_szName, 23); give_item(id, g_szName); get_weaponname(g_iMyWeapons[id][1], g_szName, 23); give_item(id, g_szName); } } return PLUGIN_CONTINUE; } public MenuBroni(id) { new menu = menu_create("Wybierz Bron:", "Handel_Bronie"); menu_additem(menu, "M4A1"); menu_additem(menu, "AK47"); menu_additem(menu, "AWP"); menu_additem(menu, "Scout"); menu_additem(menu, "AUG"); menu_additem(menu, "Krieg 550"); menu_additem(menu, "M249"); menu_additem(menu, "MP5"); menu_additem(menu, "UMP45"); menu_additem(menu, "Famas"); menu_additem(menu, "Galil"); menu_additem(menu, "M3"); menu_additem(menu, "XM1014"); menu_additem(menu, "Mac10"); menu_additem(menu, "TMP"); menu_additem(menu, "P90"); menu_additem(menu, "G3SG1 (autokampa)"); menu_additem(menu, "Krieg 552 (autokampa)"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona"); menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona"); return menu_display(id, menu); } public Handel_Bronie(id, menu, item) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; switch(item) { case MENU_EXIT: return PLUGIN_CONTINUE; case 0: g_iMyWeapons[id][0] = CSW_M4A1; case 1: g_iMyWeapons[id][0] = CSW_AK47; case 2: g_iMyWeapons[id][0] = CSW_AWP; case 3: g_iMyWeapons[id][0] = CSW_SCOUT; case 4: g_iMyWeapons[id][0] = CSW_AUG; case 5: g_iMyWeapons[id][0] = CSW_SG550; case 6: g_iMyWeapons[id][0] = CSW_M249; case 7: g_iMyWeapons[id][0] = CSW_MP5NAVY; case 8: g_iMyWeapons[id][0] = CSW_UMP45; case 9: g_iMyWeapons[id][0] = CSW_FAMAS; case 10: g_iMyWeapons[id][0] = CSW_GALI; case 11: g_iMyWeapons[id][0] = CSW_M3; case 12: g_iMyWeapons[id][0] = CSW_XM1014; case 13: g_iMyWeapons[id][0] = CSW_MAC10; case 14: g_iMyWeapons[id][0] = CSW_TMP; case 15: g_iMyWeapons[id][0] = CSW_P90; case 16: g_iMyWeapons[id][0] = CSW_G3SG1; case 17: g_iMyWeapons[id][0] = CSW_SG552; } new g_szName[24]; get_weaponname(g_iMyWeapons[id][0], g_szName, 23); give_item(id, g_szName); return MenuBroniPistolety(id); } public MenuBroniPistolety(id) { new menu = menu_create("Wybierz Bron Krotka:", "Handel_BroniePistolety"); menu_additem(menu, "Deagle"); menu_additem(menu, "Elite"); menu_additem(menu, "Usp"); menu_additem(menu, "Glock18"); menu_additem(menu, "Fiveseven"); menu_additem(menu, "P228"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); return menu_display(id, menu); } public Handel_BroniePistolety(id, menu, item) { if(!is_user_alive(id)) return PLUGIN_CONTINUE; switch(item) { case MENU_EXIT: return PLUGIN_CONTINUE; case 0: g_iMyWeapons[id][1] = CSW_DEAGLE; case 1: g_iMyWeapons[id][1] = CSW_ELITE; case 2: g_iMyWeapons[id][1] = CSW_USP; case 3: g_iMyWeapons[id][1] = CSW_GLOCK18; case 4: g_iMyWeapons[id][1] = CSW_FIVESEVEN; case 5: g_iMyWeapons[id][1] = CSW_P228; } new g_szName[24]; get_weaponname(g_iMyWeapons[id][1], g_szName, 23); give_item(id, g_szName); return PLUGIN_CONTINUE; } public WeaponReload(ent) { if(!get_pdata_int(ent, 54, 4)) { return; } new id = get_pdata_cbase(ent, 41, 4); static iWeapon, iAmmo; iWeapon = get_user_weapon(id, _, iAmmo); if(iAmmo != CSW_MAX_AMMO[iWeapon]) { SetUserAmmo(id, CSW_MAX_AMMO[iWeapon], iWeapon); } } SetUserAmmo(id, iBpammo, iWeapon) { if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2) { return 0; } new g_szName[32]; if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) { while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName))) { if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id) { set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo); } } return 0; } set_pdata_int(id, 351, 0); return iWeapon; }
Nie działa
Asiap
21.05.2015
sprobuj zamienic
SetUserAmmo(id, iBpammo, iWeapon) { if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2) { return 0; } new g_szName[32]; if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) { while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName))) { if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id) { set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo); } } return 0; } set_pdata_int(id, 351, 0); return iWeapon; }
na
SetUserAmmo(id, iBpammo, iWeapon) { if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2) { return 0; } new g_szName[32]; if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) { while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName))) { if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id) { set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo); set_pdata_int(id, 351, 0); return iWeapon; } } return 0; } }
Skull.
03.06.2015
sprobuj zamienic
SetUserAmmo(id, iBpammo, iWeapon) { if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2) { return 0; } new g_szName[32]; if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) { while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName))) { if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id) { set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo); } } return 0; } set_pdata_int(id, 351, 0); return iWeapon; }na
SetUserAmmo(id, iBpammo, iWeapon) { if(!iWeapon && pev_valid((iWeapon = get_pdata_cbase(id, 373))) != 2) { return 0; } new g_szName[32]; if(iWeapon <= 30 && get_weaponname(iWeapon, g_szName, 31)) { while((iWeapon = engfunc(EngFunc_FindEntityByString, iWeapon, "classname", g_szName))) { if(pev_valid(iWeapon) == 2 && get_pdata_cbase(iWeapon, 41, 4) == id) { set_pdata_int(id, 376 + get_pdata_int(iWeapon, 49, 4), iBpammo); set_pdata_int(id, 351, 0); return iWeapon; } } return 0; } }
Nie testowałem jeszcze.
Lecz mam error:
L 06/03/2015 - 21:22:58: Invalid weapon id 0 L 06/03/2015 - 21:22:58: [AMXX] Run time error 10 (plugin "xVote_DM_MenuBroni.amxx") (native "get_weaponname") - debug not enabled! L 06/03/2015 - 21:22:58: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
Dopisałem debug i czekam właśnie co mi się pojawi, to jest na razie bez dopisku debug.