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.


Dodatki SourceMod







codclass_szeregowy.amxx







