Witam serdecznie, ostatnio napisałem sobie klasę na codmod'a, która co rundę dostaje losowo broń. Klasa działa - tylko sypie errorami w logach.
.sma klasy:
#include <amxmodx> #include <amxmisc> #include <codmod> #include <hamsandwich> #include <cstrike> #include <engine> new const nazwa[] = "Szeregowy"; new const opis[] = "Dostaje losowa bron co runde"; new const bronie = 0; new const zdrowie = 5; new const kondycja = 5; new const inteligencja = 0; new const wytrzymalosc = 0; new bool:ma_klase[33]; new bron_gracza[33]; public plugin_init() { register_plugin(nazwa, "1.0", "Webster"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_Spawn, "player", "Resp", 1); } public cod_class_enabled(id) { ma_klase[id] = true; Resp(id); } public cod_class_disabled(id) { cod_take_weapon(id, bron_gracza[id]); bron_gracza[id] = 0; ma_klase[id] = false; } public Resp(id) { if(ma_klase[id]) { if(!is_user_connected(id) || !is_user_alive(id)) return PLUGIN_HANDLED; if(bron_gracza[id]) { cod_take_weapon(id, bron_gracza[id]); } bron_gracza[id] = random_num(CSW_P228, CSW_P90); if(bron_gracza[id] == 2 || bron_gracza[id] == CSW_KNIFE || bron_gracza[id] == CSW_SMOKEGRENADE || bron_gracza[id] == CSW_FLASHBANG || bron_gracza[id] == CSW_HEGRENADE || bron_gracza[id] == CSW_VESTHELM || bron_gracza[id] == CSW_VEST || bron_gracza[id] == CSW_C4) { bron_gracza[id] = random_num(CSW_P228, CSW_P90); } cod_give_weapon(id, bron_gracza[id]); cs_set_user_bpammo(id, bron_gracza[id], 120); //linijka dajaca error logi } return PLUGIN_HANDLED; }
A oto jakie error logi klasa sypie:
L 03/15/2016 - 14:12:46: Start of error session. L 03/15/2016 - 14:12:46: Info (map "de_dust2_2x2") (file "addons/amxmodx/logs/error_20160315.log") L 03/15/2016 - 14:12:46: [CSTRIKE] Invalid weapon id 29 L 03/15/2016 - 14:12:46: [AMXX] Displaying debug trace (plugin "codclass_szeregowy.amxx") L 03/15/2016 - 14:12:46: [AMXX] Run time error 10: native error (native "cs_set_user_bpammo") L 03/15/2016 - 14:12:46: [AMXX] [0] codclass_szeregowy_3224612.sma::Resp (line 56)
czasami jeszcze do tych logów jest dodane:
[CSTRIKE] Invalid weapon id 2
i
[CSTRIKE] Invalid weapon id 0
Mniej więcej wiem na czym polega błąd, tylko nie mam już pomysłu jak go naprawić. Przy losowaniu broni co rundę ustawiam na "stało" 120 naboi amunicji w każdej broni, gdyż też nie wiedziałem jak dodać, aby każda broń posiadała "swój własny magazynek", lecz to nie jest mój największy problem. Problem leży w tym jak zrobić np. jeżeli wylosuje kose/granaty/c4/tarcze to aby losowało drugi raz i jak wtedy wylosuje "normalną" broń to wtedy dawało tą amunicje.
Jak usunąć powyższy błąd? Proszę o pomoc.
Pozdrawiam.