Chcę zrobić klasę jak w temacie. wszystko dobrze oprócz jednej linijki
static Float:fSpeedMultiplier = 1.0 ;tak jest standardowo.
Można by wstawić:
static Float:fSpeedMultiplier = (1-(inteligencja/400));mam ograniczone statystyki, więc zero nie może wypaść ale tak mi mówi kompilator ;<
codclass_zawodowiec.sma(47) : error 008: must be a constant expression; assumed zero
jak inaczej zastąpić tamto wyrażenie? dodam, iż ma zwiększać szybkość strzelania 1% na 4 punkty inteligencji.
#include <amxmodx> #include <amxmisc> #include <codmod> #include <hamsandwich> #include <cstrike> #include <fakemeta_util> new const nazwa[] = "Zawodowiec"; new const opis[] = "4int(+1% do szybkosci strzelania)"; new const bronie = (1<<CSW_GALIL)|(1<<CSW_FAMAS); new const zdrowie = 0; new const kondycja = 5; new const inteligencja = 15; new const wytrzymalosc = 0; new ma_klase[33]; public plugin_init() { register_plugin(nazwa, "1.0", "amxx.pl"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_event("CurWeapon","eventCurWeapon", "b"); } public cod_class_enabled(id) { ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; } public eventCurWeapon(id) { if(!ma_klase[id]) return PLUGIN_CONTINUE new iWeapon = read_data(2); new iEnt; static Float:fSpeedMultiplier = (0.001 + (1-(inteligencja/400))); if(iWeapon == CSW_FAMAS) { iEnt = fm_find_ent_by_owner(-1, "weapon_famas", id) set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 ); set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 ); } if(iWeapon == CSW_GALI) { iEnt = fm_find_ent_by_owner(-1, "weapon_gali", id) set_pdata_float( iEnt, 46, ( get_pdata_float(iEnt, 46, 4) * fSpeedMultiplier), 4 ); set_pdata_float( iEnt, 47, ( get_pdata_float(iEnt, 47, 4) * fSpeedMultiplier), 4 ); } return PLUGIN_CONTINUE }
chyba, że zna ktoś inny sposób na załatwienie tego problemu.
Użytkownik Eustachy8 edytował ten post 31.12.2011 16:09