Modyfikacja klasy Kapitan 1/2 z awp
weedzonka
29.01.2014
Witam,
chciałbym by ktoś mi pomógł edytować klasę Kapitan(Klasa Premium) tak żeby miała 1/2 z awp, zrobiłem wszystko tak jak w poradniku, jednak jeszcze ani razu nie zabiło za jednym strzałem, a przy 1/2 powinno to być dość często
załączam sma kapitana
Załączone pliki
silva
29.01.2014
spróbuj
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <codmod> #include <fun> #include <hamsandwich> #include <colorchat> #define DMG_BULLET (1<<1) new bool:ma_klase[33]; new const nazwa[] = "Kapitan (Klasa Premium)"; new const opis[] = "1/2 szansy na zabicie awp, nie slychac jego krokow"; new const bronie = 1<<CSW_AWP | 1<<CSW_FAMAS; new const zdrowie = 30; new const kondycja = 30; new const inteligencja = 0; new const wytrzymalosc = 10; public plugin_init() { register_plugin(nazwa, "1.0", "CS-FPG.pl"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public cod_class_enabled(id) { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) { ColorChat(id, GREEN, "[Kapitan (Klasa Premium)]^x01 Nie masz uprawnien, aby uzywac tej klasy.") return COD_STOP; } set_user_footsteps(id, 1); return COD_CONTINUE; } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(damagebits & DMG_BULLET) { new weapon = get_user_weapon(idattacker); if(weapon == CSW_AWP && damage > 20.0 && random_num(1,2) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); } return HAM_IGNORED; }
weedzonka
29.01.2014
czy zmieniłeś coś w kodzie? jeśli tak to zdradzisz co? bo ja widzę, żę tylko entery dałeś gdzieniegdzie
silva
29.01.2014
http://amxx.pl/topic...o-pisania-klas/ użyłem gotowego skryptu i nadpisałem ponieważ błędu tam nie widziałem
weedzonka
29.01.2014
też korzystałem z tego tyle, że mój kod troche inaczej wyglądał. przetestuję i zobacze
Engi
29.01.2014
public TakeDamage powinien wyglądać tak:
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(!(damagebits & DMG_BULLET)) return HAM_IGNORED; if(get_user_weapon(idattacker) == CSW_AWP && random_num(1,2) == 1) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); return HAM_IGNORED; }
Po za tym, gdzie jest public cod_class_disabled który wyłącza ciche chodzenie przy zmianie klasy?
public cod_class_disabled(id) { ma_klase[id] = false; set_user_footsteps(id, 0); }
Pomijając fakt, że w class_enabled brakuje ma_klase[id] = true; ...
Więc nie dziw się że 1/2 z AWP nie działało.
public cod_class_enabled(id) { if(!(get_user_flags(id) & ADMIN_LEVEL_H)) { ColorChat(id, GREEN, "[Kapitan (Klasa Premium)]^x01 Nie masz uprawnien, aby uzywac tej klasy.") return COD_STOP; } set_user_footsteps(id, 1); ma_klase[id] = true; return COD_CONTINUE; }
weedzonka
29.01.2014
#define DMG_BULLET (1<<1)
jeśli to usunę
public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_connected(idattacker))
return HAM_IGNORED;
if(!ma_klase[idattacker])
return HAM_IGNORED;
if(!(damagebits & DMG_BULLET))
return HAM_IGNORED;
if(get_user_weapon(idattacker) == CSW_AWP && random_num(1,2) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
return HAM_IGNORED;
}
to jakim prawem ma to działać? wywala błąd
codclass_kapitan.sma(49) : error 017: undefined symbol "DMG_BULLET"
weedzonka
29.01.2014
Użytkownik weedzonka edytował ten post 29.01.2014 15:06
Engi
29.01.2014
Zapewne po usunięciu nie dodałeś z powrotem pod include tego "#define DMG_BULLET (1<<1)" ??
weedzonka
30.01.2014
Przecież pisałeś na pw że działa, więc może jakiś item miał przeciwnik?
co Ty za bajki z tym pw opowiadasz? nie na starcie nie działa, zabiera normalnie jak awp
Engi
30.01.2014
Sory nie ten nick ;d
Podmień
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
na
SetHamParamFloat(4, 9999.0)
Raczej nikt nie będzie miał +10k hp
Engi
31.01.2014
SetHamParamFloat - "Funkcja zmienia w locie dane wyjściowe."
4 - oznacza czwarty parametr od lewej, w tym wypadku oznacza to że chcemy zmienić parametr "damage"
9999.0 - zmiana "damage" na 9999.0 czyli za każdym trafieniem (nie ważne w co) obrażenia będą równe 9999 (musi być w float dlatego jest 9999.0 a nie 9999)