←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

trigger_multiple i wywolanie funkcji


Najlepsza odpowiedź Asiap 21.09.2015 12:18

velocity_by_aim

 

kod z mojego pluginu

static Float:fVelocity[3], fOrigin[3];

velocity_by_aim(id, 300, fVelocity); // pobranie wektora o dlugosci 300 w strone ktora patrzy gracz
fVelocity[2] += 100; // dodanie 100 do kata odchylenia od osi x

pev(id, pev_origin, fOrigin); // pobranie pozycji gracza

set_pev(iEnt, pev_origin, fOrigin); // ustawienie entowi pozycji gracza
set_pev(iEnt, pev_movetype, MOVETYPE_TOSS); // ustawie rodzaju ruchu entowi
set_pev(iEnt, pev_velocity, fVelocity); // ustawienie szybkosci entowi
Przejdź do postu

  • +
  • -
Bunker - zdjęcie Bunker 12.09.2015

Witam,

Stworzyłem skrypt, który tworzy ent'a w miejscu gdzie stoi gracz i niestety ten ent nic nie zrobi bo nie mogę przekazać informacji o tym, że gracz na nim stoi.

Chciałbym aby ten element działał w podobny sposób jak amunicja w hl czyli jak na niego nadepnę to daje mi amunicję, napisał coś, robił cokolwiek. Jednak gdy na niego nachodzę to nic nie robi. I tutaj moje pytanie, jak mogę przechwyć to zdarzenie? Próbowałem zarówno za pomocą Engine jak i Fakemeta bez rezultatu.

 

A to kodzik

Spoiler

Obiekt nie ma blokować ani gracza ani pocisków, gdy blokuje to wszystko działa ale jeśli ustalę tak jak ma być to ponownie nie wywołuje funkcji

 

Za wszelką pomoc bardzo dziękuję :)  i liczę na szybkie rozwiązanie problemu.

Odpowiedz

  • +
  • -
Asiap - zdjęcie Asiap 12.09.2015

public Lecz(iEnt, id)
{
	static szClassName[32];
	entity_get_string(iEnt, EV_SZ_classname, szClassName, 31);
	if(!equal(szClassName, "Apteczka"))
	{
		return FMRES_IGNORED
	}

	set_user_health(id,20)
	client_print(0,print_center, "id")
	return FMRES_IGNORED
}

ps: nei wiem po co mieszasz engine z fakemeta, uzyj jednego modulu

Odpowiedz

  • +
  • -
Bunker - zdjęcie Bunker 13.09.2015

Dzięki Asiap niestety mam jeszcze jeden problem tym razem z set_task

Kod wyglada w ten sposob

public ZacznijLeczyc(iEnt, id)
{
	static szClassName[32];
	entity_get_string(iEnt, EV_SZ_classname, szClassName, 31);
	if(equal(szClassName, "Apteczka"))
	{
		new tdData[1]
		tdData[0]=id
		set_task(Float:1.0,"ZaleczanieRan",6973,tdData , sizeof( tdData ))
		return FMRES_IGNORED
	}
	return FMRES_IGNORED
}

public ZaleczanieRan(id)
{
        aktualnepz[id]=get_user_health(id)
	set_user_health(id,(aktualnepz[id]+1))
}

Chciałem aby co sekundę dodawało jeden hp ale niestety set_task nie działa. Proszę o wskazanie mi błędu/błędów jakie popełniłem.

Za odpowiedzi jak zawsze bardzo dziękuję :D


Użytkownik Bunker edytował ten post 13.09.2015 20:32
Odpowiedz

  • +
  • -
Asiap - zdjęcie Asiap 13.09.2015

set_task(1.0,"ZaleczanieRan", id)

 

i to nie bedzie leczyc co sekunde tylko za sekunde

Odpowiedz

  • +
  • -
Bunker - zdjęcie Bunker 20.09.2015

dzięki Asiap :D

Mam jeszcze ostatnie 2 pytania.

Chciałbym aby ten ent apteczki był wyrzucany jak bronie. Czy da się to zrobić i jeśli tak to jak to się robi?

Czytałem to http://amxx.pl/topic...rzedza-graczem/ ale mało co zrozumiałem :/

Odpowiedz

  • +
  • -
Asiap - zdjęcie Asiap 20.09.2015

musisz ustawic movetype na MOVETYPE_TOSS

Odpowiedz

  • +
  • -
Bunker - zdjęcie Bunker 21.09.2015

Mam to ale chodzi mi o sam ruch tego enta do przodu (tak jak jest to w przypadku wyrzucenia broni/bomby. Tak jakbym użył przycisku "g" do wywalenia apteczki. Nie chciałbym też podmieniać żadnej broni/paki :)

Odpowiedz

  • +
  • -
Najlepsza odpowiedź Asiap - zdjęcie Asiap 21.09.2015

velocity_by_aim

 

kod z mojego pluginu

static Float:fVelocity[3], fOrigin[3];

velocity_by_aim(id, 300, fVelocity); // pobranie wektora o dlugosci 300 w strone ktora patrzy gracz
fVelocity[2] += 100; // dodanie 100 do kata odchylenia od osi x

pev(id, pev_origin, fOrigin); // pobranie pozycji gracza

set_pev(iEnt, pev_origin, fOrigin); // ustawienie entowi pozycji gracza
set_pev(iEnt, pev_movetype, MOVETYPE_TOSS); // ustawie rodzaju ruchu entowi
set_pev(iEnt, pev_velocity, fVelocity); // ustawienie szybkosci entowi
Odpowiedz