[ROZWIĄZANE] Nie działa natychmiastowe zab...
Najlepsza odpowiedź d0naciak 28.08.2013 21:54
bo zamiast
- if(damagebits & DMG_HEGRENADE && get_user_team(this) != get_user_team(idattacker))
- cod_inflict_damage(idattacker, this, 801.0-damage, 1.0, idinflictor, damagebits);
powinno byc
if(damagebits & DMG_HEGRENADE && random_num(1, 1) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
gdzie (1, 1) to 1/1 jak zmienisz (1, 2) to bedziesz mial 1/2 z he itp
i Łap tą klase z 1/2 szans z he
Jasne, ze nie dziala, bo nie sprawdzasz, czy bronia jest HE
Wszyscy znacie się na kodzie widzę jak (cytuję cheq): prosiak na gwiazdach -,-
Prawda jest taka, że przed sprawdzeniem czy obrażenia są z HE, ignorujesz resztę funkcji jeżeli obrażenia nie są obrażeniami od pocisku, a to wszystko przez ten kod
if(!(damagebits & DMG_BULLET)) return HAM_IGNORED;
Wywal go.
Polecam też sprawdzić przed wywołaniem jakichkolwiek operacji w TakeDamage, od razu sprawdzać czy drużyna twoja a drużyna obrywającego nie jest tą samą drużyną.
P.S.
Twoja wersja sprawiłaby, że zabijałby też swoich ludzi z teamu przez usunięcie warunku sprawdzającego, czy atakujący jest w tej samej drużynie co ofiara -,-
To też musi zostać
hah tu sie mylisz ja wiem co ci podaje pozatym zabiłoby tylko wtedy jesli masz właczany ff na serwerze
To rzuć sobie HE przed nosem. Co się stanie??
W ostateczności, nie powinno zabrać obrażeń koledze z drużyny jeżeli FF jest wyłączony, bo wg. kodu dodawane są obrażenia do np. HE do każdego odebrania obrażeń za pomocą HE (wiem, masło maślane :F), czyli bez warunku będziesz mógł zabić tylko siebie i przeciwników natychmiastowo, chociaż nigdy nie testowałem, to tylko takie warte uwagi spostrzeżenie.
Przejdź do postu
Hagis
27.08.2013
Witam, stworzyłem klasę na CodMod. Klasa powinna mieć 1/2 szansy na natychmiastowe zabicie z granatu wybuchowego.
Jak w temacie ów natychmiastowe zabicie nie chce działać.
#include <amxmodx> #include <amxmisc> #include <codmod> #include <engine> #include <hamsandwich> #include <cstrike> #include <fakemeta> #include <fun> #define DMG_BULLET (1<<1) #define DMG_HEGRENADE (1<<24) new const nazwa[] = "Piekielny [Unikalna]"; new const opis[] = "Natychmiastowe zabicie ze scouta, 1/2 szansy na natychmiastowe zabicie z HE, +10dmg z Aug, dodatkowe 3 skoki"; new const bronie = 1<<CSW_SCOUT | 1<<CSW_AUG | 1<<CSW_HEGRENADE; new const zdrowie = 85; new const kondycja = 100; new const inteligencja = 30; new const wytrzymalosc = 85; new ma_klase[33]; new skoki[33]; public plugin_init() { register_plugin(nazwa, "1.0", "Hagis"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_forward(FM_CmdStart, "fwCmdStart_MultiJump"); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public cod_class_enabled(id) { if(!(get_user_flags(id) & ADMIN_LEVEL_A)) { client_print(id, print_chat, "[Piekielny] Nie masz uprawnien, aby uzywac tej klasy.") return COD_STOP; } give_item(id, "weapon_hegrenade"); cs_set_user_defuse(id, 1); ma_klase[id] = true; return COD_CONTINUE; } public cod_class_disabled(id) { ma_klase[id] = false; } public fwCmdStart_MultiJump(id, uc_handle) { if(!is_user_alive(id) || !ma_klase[id]) return FMRES_IGNORED; new flags = pev(id, pev_flags); if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]) { skoki[id]--; new Float:velocity[3]; pev(id, pev_velocity,velocity); velocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity,velocity); } else if(flags & FL_ONGROUND) skoki[id] = 3; return FMRES_IGNORED; } 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_SCOUT) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); if(get_user_weapon(idattacker) == CSW_AUG && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, 10.0, 0.0, idinflictor, damagebits); if(damagebits & DMG_HEGRENADE && get_user_team(this) != get_user_team(idattacker)) cod_inflict_damage(idattacker, this, 801.0-damage, 1.0, idinflictor, damagebits); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// return HAM_IGNORED; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
Długo się z tym bawiłem, ostatecznie skopiowałem kod z perku, który daje 1/1 z HE. W perku działa - tu nie.
Próbowałem też tak:
if(get_user_weapon(idattacker) == CSW_HEGRENADE) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
I oczywiście też skucha.
Oraz próbowałem zamienić
float(get_user_health(this))-damage+1.0
na 2000.0 i oczywiście też lipa.
everston 27.08.2013
bo zamiast
- if(damagebits & DMG_HEGRENADE && get_user_team(this) != get_user_team(idattacker))
- cod_inflict_damage(idattacker, this, 801.0-damage, 1.0, idinflictor, damagebits);
powinno byc
if(damagebits & DMG_HEGRENADE && random_num(1, 1) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
gdzie (1, 1) to 1/1 jak zmienisz (1, 2) to bedziesz mial 1/2 z he itp
i Łap tą klase z 1/2 szans z he
Załączone pliki
Użytkownik everston edytował ten post 27.08.2013 23:19
MAGNET
27.08.2013
Twoja wersja sprawiłaby, że zabijałby też swoich ludzi z teamu przez usunięcie warunku sprawdzającego, czy atakujący jest w tej samej drużynie co ofiara -,-
To też musi zostać
everston 27.08.2013
hah tu sie mylisz ja wiem co ci podaje pozatym zabiłoby tylko wtedy jesli masz właczany ff na serwerze
Użytkownik everston edytował ten post 27.08.2013 23:22
MAGNET
27.08.2013
To rzuć sobie HE przed nosem. Co się stanie??
Użytkownik MAGNET edytował ten post 27.08.2013 23:37
Najlepsza odpowiedź
d0naciak
28.08.2013
bo zamiast
- if(damagebits & DMG_HEGRENADE && get_user_team(this) != get_user_team(idattacker))
- cod_inflict_damage(idattacker, this, 801.0-damage, 1.0, idinflictor, damagebits);
powinno byc
if(damagebits & DMG_HEGRENADE && random_num(1, 1) == 1)
cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
gdzie (1, 1) to 1/1 jak zmienisz (1, 2) to bedziesz mial 1/2 z he itp
i Łap tą klase z 1/2 szans z he
Jasne, ze nie dziala, bo nie sprawdzasz, czy bronia jest HE
Wszyscy znacie się na kodzie widzę jak (cytuję cheq): prosiak na gwiazdach -,-
Prawda jest taka, że przed sprawdzeniem czy obrażenia są z HE, ignorujesz resztę funkcji jeżeli obrażenia nie są obrażeniami od pocisku, a to wszystko przez ten kod
if(!(damagebits & DMG_BULLET)) return HAM_IGNORED;
Wywal go.
Polecam też sprawdzić przed wywołaniem jakichkolwiek operacji w TakeDamage, od razu sprawdzać czy drużyna twoja a drużyna obrywającego nie jest tą samą drużyną.
P.S.
Twoja wersja sprawiłaby, że zabijałby też swoich ludzi z teamu przez usunięcie warunku sprawdzającego, czy atakujący jest w tej samej drużynie co ofiara -,-
To też musi zostać
hah tu sie mylisz ja wiem co ci podaje pozatym zabiłoby tylko wtedy jesli masz właczany ff na serwerze
To rzuć sobie HE przed nosem. Co się stanie??
W ostateczności, nie powinno zabrać obrażeń koledze z drużyny jeżeli FF jest wyłączony, bo wg. kodu dodawane są obrażenia do np. HE do każdego odebrania obrażeń za pomocą HE (wiem, masło maślane :F), czyli bez warunku będziesz mógł zabić tylko siebie i przeciwników natychmiastowo, chociaż nigdy nie testowałem, to tylko takie warte uwagi spostrzeżenie.
MAGNET
28.08.2013
Wszyscy znacie się na kodzie widzę jak (cytuję cheq): prosiak na gwiazdach -,-
Cóż, tak to jest, jak się sprawdza kod na androidzie
W ostateczności, nie powinno zabrać obrażeń koledze z drużyny jeżeli FF jest wyłączony
Nie trzeba tutaj mówić o obrażeniach w samej funkcji. Pomimo wyłączonego ff HE ranią swoich z drużyny. Miałem kiedyś u siebie perk 1/1 z HE i jeśli byłem zbyt blisko - dead ;] (ff off)
Szczerze powiedziawszy to strasznie namąciliście mi w głowie i już sam nie wiem, jaka forma jest poprawna
Hagis
30.08.2013
1/1 z HE powinno zadawać obrażenia rzucającemu, tak jest na "moim" serwerze i tak powinno być. Nawet jak założysz serwer bez żadnych pluginów, z wyłączonym ff, to będziesz mógł popełnić samobójstwo granatem. Tak było, jest i ma być.