←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Wywołanie komendy na graczu przy zadaniu dmg.

  • +
  • -
skorpius - zdjęcie skorpius 01.08.2015

Potrzebuje kodu który przy zadaniu dmg wywolalby kucniecie (ctrl) bez wstawania oraz kucniecie że wstanianiem (puszczenie ctrl)
Oraz podskok (spacja) czekam na propozycję!
Coś jak:
-duck, +duck
Oraz
-jump, +jump.
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 01.08.2015

złap TakeDamage Post, sprawdź czy ofiara jest żywa, jeżeli tak to użyj wtedy client_cmd(this, "+duck") albo +jump, a jak chcesz żeby potem wstał sam to set_task, jako id taska podajesz id ofiary i w funkcji od taska wykonujesz client_cmd z komendą -jump/-duck.

 

Chyba jasno napisałem

Odpowiedz

  • +
  • -
skorpius - zdjęcie skorpius 01.08.2015

this ???

byłem przekonany że  "   id  "

 

jest w ogóle różnica?

Odpowiedz

  • +
  • -
skorpius - zdjęcie skorpius 01.08.2015

register_event("Damage", "Kucnij_se", "b", "2!=0");
public Kucnij_se(id)
{
	new idattacker = get_user_attacker(id);

	if(!is_user_alive(idattacker))
		return;

	if(!ma_klase[idattacker])
		return;

	if(random_num(1, 2) != 1)
		return;

	client_cmd(id, "+duck");
}

To mi nie działa /testowane na botach

Jakieś sugestie?

Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 01.08.2015

Użyj kanapki, napisałem

this czy id, to kwestia jak sobie nazwiesz parametr... W każdym razie chodzi mi o ofiare, a standardowo jest to nazwane this
Odpowiedz

  • +
  • -
skorpius - zdjęcie skorpius 03.08.2015

RegisterHam(Ham_TakeDamage, "player", "Fw_PlayerTakeDamage", 0)

public Fw_PlayerTakeDamage(id, idinflictor, idattacker, Float:damage, damagebits)
{
	if(!ma_klase[idattacker])return;


if(random_num(1, 2) != 1)
return;


client_cmd(id, "+duck");return HAM_SUPERCEDE
}

no za pomocą "kanapki" to tylko tak potrafię.


Użytkownik skorpius edytował ten post 03.08.2015 18:11
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 03.08.2015


złap TakeDamage Post

 

Ty łapiesz pre -.-

 

 

sprawdz czy attacker jest podłączony i czy ofiara jest żywa (id w tym przypadku)

 

 

Gdzieś czytałem że random jest szybsze, więc

if(random_num(1, 2) != 1)
return;

->

if(!random(2)) return
return HAM_SUPERCEDE

Tym to sobie możesz... Zablokujesz wszystkie obrażenia, chyba że o to Ci chodzi, ale kompilator i tak wyrzuci błąd bo użyłeś raz returna bez wartości, a potem zwracasz supercede

 

 

+dorób task z -duck, jeżeli ma wstać po jakimś czasie

 

 

EDIt: Tak, prawie ci lekcje, bo nie czytasz tego co pisze, gdybyś włożył minimum wysiłku i poszukał troszkę w różnych pluginach kodu to byś miał, na gotowca nie licz (niedość, że na tel to i tak nie)

Odpowiedz

  • +
  • -
skorpius - zdjęcie skorpius 03.08.2015

Stary widzę że lekcje mi prawisz/ zrób mi gotowca i po temacie. Proszę.

Odpowiedz

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 04.08.2015

Jak powiedzial kiedyś ktoś mądry :

Daj człowiekowi rybę, a będzie najedzony przez jeden dzień. Daj człowiekowi wędkę, a będzie najedzony przez całe życie.

 

My staramy się Tobie wytłumaczyć, jak zrobić to tak, abyś w przyszłości umiał zrobić to sam.
Dawanie gotowców to ostra droga na skróty. Jeżeli nie chcesz się uczyć podstawowego programowania w tym języku, to lepiej skończ z serwerami...


co do tematu :

public Fw_PlayerTakeDamage(id, idinflictor, idattacker, Float:damage, damagebits)
{
    if(!ma_klase[idattacker])return;


if(random_num(1, 2) != 1)
return;


client_cmd(id, "+duck");
return HAM_SUPERCEDE
}

Ten kod nie jest zły, lecz ma dwie zasadnicze wady.

 

1.

Kod się nie skompiluje z błędem
 

error 078: function uses both "return" and "return <value>" 

ponieważ używasz return bez parametru, a następnie return z parametrem w jednej funkcji. Jest to niedozwolone oraz owocuje wywaleniem w/w błędu. (daj return HAM_IGNORED zamiast return przy randomie oraz sprawdzaniu czy ma klase)

 

2.
łapiesz wydarzenie pre zamiast post. (0 zamiast 1 w ost parametrze RegisterHam)

 

A być może gracz zginie od zadanego dmg ?
Z tego co pamiętam, albo na zbotach albo na podbotach nie działa wykonywanie komend.
zaproś kumpla, aby pomógł ci stestować daną funkcje. Testowanie na botach to ostateczność...


Użytkownik NoLiFeR edytował ten post 04.08.2015 04:46
Odpowiedz

  • +
  • -
Rivit - zdjęcie Rivit 04.08.2015

@up

 

ad 1, 2 - napisałem o tym przecież xD

 

 

 

Co do komend:

+jump można wykonać ustawiając jakieś velocity, żeby gracza do góry "hopło"

Odpowiedz

  • +
  • -
skorpius - zdjęcie skorpius 16.08.2015

NoLiFeR

Tak się odpowiada. +

 

TibacK (mniej podchodów )

zaproś kumpla

nikt nie gra w 1.6 tylko nudne GO.

Z tego co pamiętam, albo na zbotach albo na podbotach nie działa wykonywanie komend.

Domyślałem się bo Exp i perki też nie daje za zabicie.

 

 

Close down Mr Admin.

Odpowiedz

  • +
  • -
Linux' - zdjęcie Linux' 16.08.2015

NoLiFeR

Tak się odpowiada. +

 

TibacK (mniej podchodów )

zaproś kumpla

nikt nie gra w 1.6 tylko nudne GO.

Z tego co pamiętam, albo na zbotach albo na podbotach nie działa wykonywanie komend.

Domyślałem się bo Exp i perki też nie daje za zabicie.

 

 

Close down Mr Admin.

 

 

Czym innym jest wykonywanie komend na bocie a czym innym funkcji. W silniku po prostu zdobywanie itemow i doswiadczenia gdy nie ma sie klas jest zablokowane.

 

Edit: Poza tym nie mozna wykonywac komend z przedrostkiem +/-.

Odpowiedz

  • +
  • -
skorpius - zdjęcie skorpius 16.08.2015

Czym innym jest wykonywanie komend na bocie a czym innym funkcji. W silniku po prostu zdobywanie itemow i doswiadczenia gdy nie ma sie klas jest zablokowane.

Botów do cod moda które mają wybrane klasy też się tyczy?

Edit: Poza tym nie mozna wykonywac komend z przedrostkiem +/-.

Nie wiem o co panu chodzi; +duck-kliknięcie Ctrl -duck puściłeś Ctrl (granie na skryptach uczy)

 

Bez tych przedrostków system nie będzie wiedział co ma zrobic, nie ma osobnego duck // stand .

 

 

Sp. Dzięki że czytasz poje wcześniejsze posty:

Stary widzę że lekcje mi prawisz/ zrób mi gotowca i po temacie. Proszę.

Już zostałem ukarany. Skoro twierdzisz że za mało.....ok.

Odpowiedz

  • +
  • -
Linux' - zdjęcie Linux' 16.08.2015

Czym innym jest wykonywanie komend na bocie a czym innym funkcji. W silniku po prostu zdobywanie itemow i doswiadczenia gdy nie ma sie klas jest zablokowane.

Botów do cod moda które mają wybrane klasy też się tyczy?

Edit: Poza tym nie mozna wykonywac komend z przedrostkiem +/-.

Nie wiem o co panu chodzi; +duck-kliknięcie Ctrl -duck puściłeś Ctrl (granie na skryptach uczy)

 

Bez tych przedrostków system nie będzie wiedział co ma zrobic, nie ma osobnego duck // stand .

 

 

Sp. Dzięki że czytasz poje wcześniejsze posty:

Stary widzę że lekcje mi prawisz/ zrób mi gotowca i po temacie. Proszę.

Już zostałem ukarany. Skoro twierdzisz że za mało.....ok.

 

 

 

Czym innym jest wykonanie okreslonej komendy po stronie gracza a czym innym po stronie serwera. Po stronie gracza mozna wykonac wszystko ale po stronie serwera np nie przypiszesz funkcji po nacisnieciu +attack. Co do tych botow, nie chce mi sie nawet wypowiadac. Poucz sie chlopczyku pozniej mnie cytuj, tyle w temacie.
 

Odpowiedz

  • +
  • -
NoLiFeR - zdjęcie NoLiFeR 18.08.2015

Po stronie gracza mozna wykonac wszystko ale po stronie serwera np nie przypiszesz funkcji po nacisnieciu +attack.

 

Oj tutaj się nie zgodze :P

łapanie cmdpre + pev_button (IN_ATTACK) + pev_oldbuttons (~IN_ATTACK) + danafunkcja(id)

 

Ale ogólnie poprzez register_clcmd nie przypisze funkcji, przy czym masz racje :)

Odpowiedz