Potrzebuję stocka odrzucającego ofiarę przy strzale w zależności od:
- patrzenia atakującego - wróg odleci w tę samą stronę w którą patrzy attacker (na przykład VelocityByAim)
- obrażeń zadanych - im więcej dmg tym dalej odrzuci
- odległości miedzy graczami - im bliżej się znajdują tym dalej odrzuci
uwzględniając przy tym obecne velocity ofiary.
Kombinuję i nie mogę dojść do pożądanego efektu, nie wiem jakie liczby i działania powstawiać.
Maiło by to wyglądać mniej więcej tak (reszta opisana w komentarzach:
#include <amxmodx> #include <hamsandwich> #include <engine> //chyba będzie lepiej niż fakemeta #define MOC_ODRZUTU X #define MAX_DYSTANS X //nie koniecnie potrzebne (?), bo na przykład przy // dzieleniu przez get_entity_distance przy bardzo durzych odległościach odrzut by dążył do zera public plugin_init(){ register_plugin("Odrzut", "1.0", "Nieznany na razie :D") RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage", 0) //1 - w momencie obrazeń, 0 - "przed" obrażeniami } public fw_TakeDamage(victim,ent,attacker,Float:damage,damage_type){ if(!is_user_alive(attacker) || attacker!=ent || get_user_weapon(attacker)==CSW_KNIFE) return HAM_IGNORED //float((damage*MNOZNIK_ODRZUTU)/get_entity_distance(vid,aid)) Odrzuc(victim,attacker,floatround(damage)) //lub bez floatround, ale z Float: w parametrach funkcji return HAM_IGNORED } stock Odrzuc(victim, attacker, damage){ //funkcja wywoływana bardzo często, więc najlepiej będzie to zrobić na funkcjach statycznych (?) :) //nie wiem czy to istotne, ale chyba warto wziąć pod uwagę (choćby przy testowaniu) //że więcej niż 450dmg można zadać tylko z bardzo bliska }
Da radę zrobić coś co będzie działało zawsze tak samo dla każdych liczb i przy okazji, żeby miało sens? Z góry dzięki za pomoc, pozdrawiam