Mniejsze Obrazenia
Daj buziaka 13.08.2013
Witam. Chciałbym dodać aby każdy kto do mnie strzela aby zadawał mi obrażenia :
1 strzał = 2 DMG
próbowałem zrobić ale nie działa
Droso
13.08.2013
#include <amxmodx> #include <hamsandwich> #define PLUGIN "Obrazenia za 2" #define VERSION "1.0" #define AUTHOR "hubertTM" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_TakeDamage, "player", "Event_TakeDamage", 0); } public Event_TakeDamage(this, inf, attacker, Float:damage){ if(this == attacker) return HAM_IGNORED; if(inf != attacker) /* Z granata sa normalne DMG jak cos to usun to */ return HAM_IGNORED; /* to tez */ if(!is_user_connected(attacker)) return HAM_IGNORED; if(!is_user_alive(this)) return HAM_IGNORED; if(get_user_weapon(attacker) == CSW_KNIFE) /* Z noza sa normalne DMG jak cos to usun to */ return HAM_IGNORED; /* to tez */ SetHamParamFloat(4, 2.0); return HAM_HANDLED; }
Użytkownik HubertTM edytował ten post 13.08.2013 19:24
sebul
13.08.2013
Sprawdzasz, czy gracz zadający obrażenia jest żywy, a czy gracz dostający jest połączony z serwerem. Chyba się pomyliłeś, bo powinno się robić na odwrót (trzeba brać pod uwagę obrażenia z HE) oraz z tym sprawdzaniem broni też nie do końca bym się zgodził, ale to akurat zależy od paru rzeczy. Do tego na końcu wypadało by zwracać coś innego.#include <amxmodx> #include <hamsandwich> #define PLUGIN "Obrazenia za 2" #define VERSION "1.0" #define AUTHOR "hubertTM" public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_TakeDamage, "player", "Event_TakeDamage", 0); } public Event_TakeDamage(this, inf, attacker, Float:damage){ if(this == attacker) return HAM_IGNORED; if(inf != attacker) /* Z granata sa normalne DMG jak cos to usun to */ return HAM_IGNORED; /* to tez */ if(!is_user_alive(attacker)) return HAM_IGNORED; if(!is_user_connected(this)) return HAM_IGNORED; if(get_user_weapon(attacker) == CSW_KNIFE) /* Z noza sa normalne DMG jak cos to usun to */ return HAM_IGNORED; /* to tez */ SetHamParamFloat(4, 2.0); return HAM_IGNORED; }
Droso
13.08.2013
Obrażenia HE zostały wykluczone przez
if(inf != attacker) return HAM_IGNORED;
,ale poprawię, bo może autor tematu, chce, żeby DMG działało też dla HE.
Na końcu można zwrócić HAM_HANDLED zaraz poprawię.
@edit .Sma poprawione.
Co do sprawdzania broni, to powiem tak, jak autor chce, żeby HE zadawało normalne obrażenia, a nóż nie, to niech napiszę, a przerobię to pod jego prośbę
Użytkownik HubertTM edytował ten post 13.08.2013 19:27
sebul
13.08.2013
Tu by można się sprzeczać ;]Obrażenia HE zostały wykluczone przez:
if(inf != attacker) return HAM_IGNORED;
1. Sam tam napisałeś, że można ten warunek usunąć.
2. To że inf != attacker nie musi oznaczać, że obrażenia zadane są granatem, ale to raczej dotyczy tylko jakichś modów, dlatego też napisałem, że to zależy od paru rzeczy.
Daj buziaka 13.08.2013
jeden problem jeszcze mam.
ponieważ chcę to dodać do sklepu a chce aby tylko działało na jedną runde po zakupie.
ale coś nie działa
Załączone pliki
Droso
13.08.2013
Generalnie autor chciał, żeby HE i Knife też miały DMG za 2, więc poprawiłem Ci plugin miałeś literówkę.
one[attacker] trzeba było zamienić na one[this] - bo to dostający obrażenia ma mieć małe DMG (Już poprawione w .sma)
Jednak jak ktoś nadal jest ciekaw tych poprawek sebula to macie kod
#include <amxmodx> #include <hamsandwich> #define PLUGIN "Obrazenia za 2" #define VERSION "1.0" #define AUTHOR "hubertTM" #define DMG_NEVERGIB (1<<12) #define DMG_BULLET (1<<1) #define DMG_KNIFE ( DMG_NEVERGIB | DMG_BULLET ) #define DMG_HEGRENADE (1<<24) #define GRANAT 1 // postaw // przed #define aby granat mialy DMG 2 #define NOZ 1 // postaw // przed #define aby noz mial DMG 2 public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) RegisterHam(Ham_TakeDamage, "player", "Event_TakeDamage", 0); } public Event_TakeDamage(this, inf, attacker, Float:damage, damagebits){ if(this == attacker) return HAM_IGNORED; if(!is_user_connected(attacker)) return HAM_IGNORED; if(!is_user_alive(this)) return HAM_IGNORED; #if defined NOZ if((damagebits & DMG_KNIFE)) return HAM_IGNORED; #endif #if defined GRANAT if(damagebits & DMG_HEGRENADE) return HAM_IGNORED; #endif SetHamParamFloat(4, 2.0); return HAM_HANDLED; }
Załączone pliki
Użytkownik HubertTM edytował ten post 13.08.2013 21:07