Operacje na graczu
Merciless
29.07.2013
Witam . Chciałbym się dowiedzieć jak po nacelowaniu na gracza mogę na nim operować np.pobrać jego pozycje/zmienić pozycje ale tylko wtedy gdy na niego celuje, nie na najbliższych graczy tak jak działa to find_sphere_class
@edit
Doszedłem już do tego, lecz mam następny problem, nie umiem dla gracza nadać swojej pozycji
new target,body get_user_aiming(id, target, body); // tutaj chodzi o nacelowanego gracza new Poz[2][3]; // pozycje new Float: wektorPoz[2][3]; // pozycje wektorów get_user_origin(id, Poz[0]); // tutaj pobiera moją pozycje x,y,z entity_get_vector(target, EV_VEC_origin, wektorPoz[1]); // tutaj pobiera wektor nacelowanego entity_get_vector(id, EV_VEC_origin, wektorPoz[0]); // tutaj pobiera mój wektor get_user_origin(target, Poz[1]); // tutaj pobiera pozycje nacelowanego x,y,z entity_set_vector(target, EV_VEC_velocity, wektorPoz[0]); // tutaj dla nacelowanego nadaje mój wektor
Nie wiem czy dobrze podpisałem ale piszę tak jak to rozumiem. Po nacelowaniu na gracza i wpisaniu odpowiedniej komendy gracz leci w kąt , próbowałem też bez pobierania wektorów, na samych pozycjach, lecz to w ogóle nie działa.
Znalazłem jeszcze funkcje entity_set_origin, lecz do tego trzeba mieć zmienną float a takiej zmiennej nie wsadzę do get_user_origin, nie wiem też czy da się float przekonwertować na zwykłą zmienną
Użytkownik Merciless edytował ten post 29.07.2013 13:00
BlackPerfum
29.07.2013
A więc to zależy jak chcesz zrobić można na dwa sposoby(pewnie jest ich więcej ale nie mam zamiaru rozmyślać nad innymi):
1)W think'u gracza sprawdzać funkcją "get_user_aiming" czy gracz na kogoś patrzy (samo sprawdzanie jest bardzo nie wydajne już lepiej sprawdzić czy po naciśnięciu przycisku ktoś na kogoś patrzy), ta funkcja zwraca poprzez referencję id gracza na którego patrzymy (2 argument) a jak masz id gracza to możesz już robić z gracze co chcesz (no prawie)
2) Zarejestrowanie eventu "StatusValue" i sprawdzanie czy argument nr.1 równa się 2. Coś takiego:
register_event("StatusValue","Aiming","be","1=2")
A teraz funkcja:
public Aiming(id) { new id2 = read_data(2) //id == gracz patrzący //id2 == gracz na którego się patrzy }
Jeśli nie wiesz jak posługiwać się otrzymanym id to pisz a pomogę
// Mogłeś szybciej edytować napisz co chcesz zrobić po nacelowaniu w gracza to pokażę ci przykład
Użytkownik BlackPerfum edytował ten post 29.07.2013 13:05
Merciless
29.07.2013
Chciałbym zrobić przyciągnęcie gracza do mnie, czyli to do czego zmierzałem, nadanie graczowi moich koordów
W tej funkcji aiming mogę wrzucić swój kod i przez komende odpalać?
Dziwna sprawa wynikła po dodaniu tego eventu, jeżeli bot na mnie naceluje to lecę do niego , a jeżeli ja na niego naceluje to leci w kąt jak dotychczas
Użytkownik Merciless edytował ten post 29.07.2013 13:22
Merciless
29.07.2013
Przepraszam za doubla ale chciałbym zadać kolejne pytanie dotyczące lasera a niestety nie mogę edytować posta. Zrobiłem taki laser, którym strzela się do gracza
new target,body; new pozycja[3]; get_user_aiming(id, target,body); get_user_origin(target, pozycja); message_begin( MSG_BROADCAST, SVC_TEMPENTITY, pozycja ); write_byte(TE_BEAMENTPOINT) write_short(id) write_coord(pozycja[0]) write_coord(pozycja[1]) write_coord(pozycja[2]) write_short(sprajt) write_byte(0) write_byte(10) write_byte(1) write_byte(5) write_byte(0) write_byte(255) write_byte(0) write_byte(0) write_byte(255) write_byte(0) message_end(); set_user_health(target, get_user_health(target) - 1); if(get_user_health(target) <= 80) { remove_task(target); }
Zadaniem jest nacelować na gracza i wpisać odpowiednią komende aby wystrzelić laser do gracza, pytania są następujące. Czy mogę ten efekt utrzymywać do tej pory aż dla gracza nie zostanie np. 30 hp mimo tego iż starciłbym go ze swego celownika to wiązka pozostałaby ode mnie do niego do czasu aż tych hp nie straci? Próbowałem zrobić utrzymywanie tej akcji laseru taskiem, lecz teraz to w ogóle nie widać tego laseru.
Użytkownik Merciless edytował ten post 29.07.2013 19:22
K!113r
29.07.2013
Niestety nie zalinkuje bo na telefonie jestem, ale jest lista na amxmodx.org
I wtedy przedłużać tę wiadomość taskiem
BlackPerfum
30.07.2013
Pisałem że pomogę więc postaram się ci pomóc (co do wektorów)
Przedstawię ci jak by wyglądał kod dzięki któremu gracz po nacelowaniu na innego gracza i naciśnięciu "e"
(dokładnie to po użyciu komendy "+use") przyciągnie do siebie gracza (w którego nacelował oczywiście :D)
Dodam jeszcze iż nie ograniczałem możliwości graczom oraz nie ma tu zbyt wielu zabezpieczeń gdyż to ma być wzór a nie gotowiec.
PreThink gracza:
Merciless
30.07.2013
dzięki bardzo, rozumiem o co tutaj chodzi . A co do tego SVC_TEMPENTITY i innych rzeczy SVC_ gdzie mogę znaleźć opis tych rzeczy i jakiś tutorial?