←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Jak zrobić aby dana funkcja uruchamiana by...

Zablokowany

  • +
  • -
Proziom1 - zdjęcie Proziom1 25.12.2013

Witam wszystkich

 

Od niedawna uczę się a w zasadzie chciałbym nauczyć się pisać pluginy do Cs.I mam takie problem założyłem sobie że zrobię taki dosyć prosty plugin może nie do końca sensowny ale mniejsza oto chciałem poprostu coś swojego napisać.I szczerze mówiąc nie wiem do końca jak się za to zabrać.A mianowicie plugin ten miałby polegać na czymś takim że Ktoś wpisze w sayu "Czesc" ma mu wyświetlić się na środku ekranu napis "Witamy Cię na naszym serwerze!Za wpisanie tej komendy otrzymujesz dodatkowe 50 HP!"Lecz to 50HP ma się włączyć tylko raz na mapie każdemu graczowi kto spełni ten warunek.Oraz po wpisaniu komendy na sayu "/muza " ma być puszczona jakaś muzyka dla gracza którą tam wrzucę tak przykładowo na serwer.I po wpisaniu komendy "/niespodzianka " gracz ginie w rundzie w której to wpisał lecz tej komendy można użyć tylko raz na mape.

 

No i tak mój początek tego pluginu wygląda tak 

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Plugin powitanie"
#define VERSION "1.0"
#define AUTHOR "Proziom"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say Czesc","przywitanie")   
	// Add your code here...
}
public przywitanie(id)
{
	client_print(id, print_center, "Witamy Cię na naszym serwerze!Za wpisanie tej komendy otrzymujesz dodatkowe 50 HP!");
}

no i nie wiem jak mam dalej postępować tzn. wiem co teraz powinno się wydarzyć aby serwer to odczytał lecz nie wiem jakie mam komendy wpisać zbytnio.Tzn. Póki co ten plugin działa tak że jak jakiś gracz wpisze na say słowo "Cześć" wyświetli mu się na środku ekranu napis ten który wpisałem.No ale co mam dalej pisać ? Wydaje mi się że teraz powinienem napisać w pluginie słowo register_event aby powiedzieć pluginowi że po wpisaniu słowa "Cześć" ma on dodać graczowi te 50HP ale tylko raz na mape.Lecz nie wiem co musiałbym wpisać aby tak się stało,jakie zdarzenie.A dalszy kawałek pluginu wykonałbym tak:

register_clcmd("say /muza","muzyka")
public plugin_precache()
precache_sound("sound/muzyka/rs.mp3")

A co dalej to nie bardzo już wiem.Bardzo proszę o pomoc w tym temacie i z góry dziękuję :)

 

Odpowiedz

  • +
  • -
Wielkie Jol - zdjęcie Wielkie Jol 25.12.2013

Zacznijmy od tego, by gracz mógł coś zrobić tylko raz na mape ( zakładając, że gracz nie wyjdzie z serwera ). Do tego służy wartość bool, która przyjmuję tylko i wyłącznie wartość fałsz lub prawda. http://4programmers.net/C/Bool

 

Przy połączeniu do gry, ta wartość powinna przyjmować wartość false i jeżeli gracz wpisze daną komendę, to powinna ona przyjąć wartość true, by więcej się nie wykonała.  Powinno to wyglądać mniej więcej tak:

new wykonala[33];
 
public client_connect(id)
    wykonala[id]=false;

 

następnie zmieniasz wartość na true w funkcji, jeżeli gracz wywołał funkcję. I za każdym razem sprawdzasz wartość, "wykonala", jeżeli jest ona na true, to najzwyczajniej nic się nie robi, jeżeli na false, to się wykonuje i przyjmuje wartość true, po czym już się nie wykona.

 

HP dodajesz za pomocą modułu #fun, wszystko jest w dokumentacji amxx.

 

Co do umierania, robisz to samo, robisz komendę niespodzianka, dajesz wartość bool, używasz funkcji user_kill, która odpowiada za zabicie gracza.

 

co do dźwięku używasz plugin_precache, gdzie mówisz serwerowi, że będziesz używał jakiegoś dźwięku, następnie za pomocą o czegoś takiego

client_cmd(id, "mp3 play sound/misc/PIOSENKA.MP3")

włączasz dźwięk u gracza. przy czym zmieniasz ścieżkę pliku

Odpowiedz
Zablokowany