Jak najbardziej. Wyjaśnię w kilku krokach jak można taki skrypt napisać.
Nasłuchujemy do listenera zdarzenia 'on damage:'. Sprawdzamy czy ofiara (victim) to gracz.
Zapisujemy do jakiejś zmiennej lokalnej (na przykład {_v}) wektor zaczynający się w lokalizacji zaatakowanego i kończący się w lokalizacji atakującego. Tutaj przyda się te wyrażenie z dokumentacji.
Normalizujemy ów wektor (zmniejszamy jego moduł (długość) do 1). Powinniśmy tak zrobić, gdyż obrażenia zadawane przez strzałę zależą od jej prędkości, a bez normalizacji mielibyśmy sytuację, że im dalej stałby atakujący, tym szybciej strzała wędrowałaby w jego kierunku (a więc zadawałaby więcej obrażeń).
Możemy przemnożyć (ale nie musimy) ten wektor przez jakąś stałą, aby zmienić prędkość strzały.
Niestety, Skript nie wspiera mnożenia wektorów przez skalar. Jesteśmy zmuszeni więc stworzyć wektor o identycznych współrzędnych (np. 'set {_scalarVector} to vector 0.8, 0.8, 0.8').
Gdy już stworzyliśmy sobie taki wektor, możemy go przemnożyć przez nasz wektor z punktu 3 i zapisać wynik tego mnożenia (który jest rzecz jasna wektorem) do jakiejś zmiennej lokalnej. Najprościej jest posłużyć się tym wyrażeniem.
Finalnie, możemy użyć efektu 'shoot'. Na końcu musimy dodać nasz wektor, aby Skript wiedział w jakim kierunku ma zostać wystrzelona strzała.