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


Dodatki SourceMod













