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 ![]()


Dodatki SourceMod













