Nasze Serwery
  Nazwa Serwera Adres IP Monitor Mapa Gracze Status  
FFA [NS/S]145.239.236.245:27015de_nuke26/32OnlinePOŁĄCZ
TS3cs-lamers.com10/124OnlinePOŁĄCZ
Na naszych serwerach napierdala obecnie 26 graczy, maksymalnie może grać ich 32. Daje to zapełnienie rzędu 81.25% :-)

Pisanie pluginów dla początkujących.

NuDnYxD aka Ricky

  • Awatar użytkownika

(#1) Napisano 13 mar 2013, o 16:54

Zawartość Poradnika:
1.Ogólnie
2.Początek
3.Budowanie
4.Cvar'y
5.Szukając wiecej tutków

__________________________________________________
___________________________

Ogólnie:

Więc chcesz stworzyć swój plugin? Powinieneś więc dobrze rozumieć jaką pionek wykonuje prace. Powinieneś przeczytać ten dokumente, usiąć przy komputerze, z właczonym edytorem tekstowym i kompilatorem. Robiąc to interaktywnie pomagam ci w uczeniu. Nie będziesz pisał pluginy takie jak WC3, Matrix Mod i CSDM odrazu, ten Tutek pozwoli ci wejść w świat modow i plugów AMX Mod X. Najlepszym edytorem tekstowym dla pisania źródeł pluginów jest Amxx- Studio


__________________________________________________
____________________________

Początek:

AMX Mod X plugin może mieć cztery główne typy funkcji. Pierwszą jest "Public" funcion (funkcja publiczna). Ten typ jest publicznie widoczny dla silnika(ang. engone) Amxmodx . Drugim typem jest "native" funcion (tzw pod funkcja funkcji publicznej), która jest umiejscowiona w module albo w "core"(rdzeń) AMX Mod X. Trzeci typ jest regularną funkcją użytkownika, która jest zdeklarowana bez jakiś specjalnych cech. Czwartym typem jest "forward" funcion (funkcja odsyłania , przyspiesznia ), która jest połączona kiedy następuje specjalne wydarzenie ( funkcja ta jest tez publiczna ). Plugin AMX Mod X musi się rozpocząć od funkcji inicjalizujący plugin:

// To robi to więc możesz użyć rdzeń AMX Mod X funkcji
// To " zawiera " rodzime definicje od zawiera \ amxmodx. inc
# zawrzyj <amxmodx >

// Deklarować trzy zmienne sznura
new PLUGIN [ ] = " Demonstracja AMXX "
new AUTOR [ ] = " BAILOPAN "
new WERSJA [ ] = " 1.00 "

// Tu jest publiczna funkcja (public function)
// To jest konieczne, by inicjalizować działał twoj skrypt pod AMX Mod X.
// To nie bierze żadnych parametrów i jest działające dobrze po ładowaniu mapy.
public plugin_init ( )
{
// Tu jest funkcja, która bierze trzy tzw sznury (ang.strings).
// Tu rejestruje twoją funkcję w AMX Mod X i wyznacza jakąś podstawową informację.
register_plugin ( PLUGIN, WERSJA, AUTOR )
}

Spróbuj zestawić powyższy scenariusz w Amxx studio. To będzie bardzo krótko wygladało - ponieważ to nie robi niczego narazie specjalnego . Jednakże, jeżeli załadujesz ten scenariusz i typ " pluginu amxx", powinieneś widzieć nowe wejście na liście.

__________________________________________________
___________________________

Budowanie:

AMX Mod X dostarcza sposób, by łatwo dodać komendy adminom. Każdy rozkaz jest "register" (rejestrowany) jako rozkaz konsoli. Kiedy rejestrujesz rozkaz, musisz zdefiniować cztery własności: Typ komendy , funkcja która interpretuje komende , poziom dostępu , krótki opisu rozkazu.

Dla tej demonstracji, zbudujmy plugin, który pozwala tobie zmienić zdrowie graczy na serwerze na komende " amx_hp ".

Będziemy potrzebowali zrobić dwie rzeczy,najpierw by zacząć, potrzebujemy zarejestrowac komende (register_concmd) w konsoli. Ponieważ łaczymy komendę do publicznej funkcji, musimy wtedy upewnić się, że takowa funkcja istnieje.

# include <amxmodx >
# include <amxmisc > // To zawiera jakieś przydatne funkcje
# include <fun > // Tu zawiera funkcję/moduł, by zmienić zdrowie

new PLUGIN [ ] = " zmiana zdrowia "
new AUTOR [ ] = " BAILOPAN "
new WERSJA [ ] = " 1.00 "

public plugin_init ( )
{
register_plugin ( PLUGIN, WERSJA, AUTOR )
register_concmd ( " amx_hp " , " cmd_hp " , ADMIN_SLAY, " <cel > " )
}

public cmd_hp ( id, level, cid )
{
return PLUGIN_HANDLED
}

Słownictwo
return - zwracać / powracać

Pierwsza nową funkcją jest " register_concmd ", która bierze cztery parametry. Pierwsza jest rozkazem, którą gracz musi napisać w konsoli. Druga jest publiczną funkcją, która będzie uruchamiała rozkaz. Trzecia jest dostępem zrównuje wasz rozkaz zapotrzebowań . W końcu, możesz podać pass (sznur), który opisuje jak użyć twojego rozkazu ( dla amx_help).

Następnie, utworzyliśmy publiczną funkcję, by działał rozkaz amx_hp. Zauważ, że dajemy tej funkcji trzy parametry. Te parametry będą trzymały specjalne dane kiedy rozkaz jest użyty - "id" będzie trzymał id gracza, który uruchomił komendę, "level" poziom dostępu do komendy ( musisz uzyskać dostęp aby sprawdzić siebie) i "cid" będzie posiadał wewnętrzne id komendy.

Zauważ PLUGIN_HANDLED . Ma dwie główna zwroty wartości, którymi powinieneś zająć się. PLUGIN_CONTINUE ogólnie znaczy " kontynuowanie operacji " i PLUGIN_HANDLED znaczy " zablokować operację ". Różnice są subtelne ale ważne. Na przykład, kiedy łacząc komende, powinieneś nigdy nie zwrócić PLUGIN_CONTINUE. Ale, jeżeli zwracasz PLUGIN_HANDLED kiedy wpisując do " say" komende, to nie wyświetli tekstu gracza . Musisz być ostrożny w jakich wolisz sytuacjach aby sie pokazywała wpisana komenda. Jednakże, nie zostały poruszone rzeczy: ( takie jak zadania, wydarzenia i inne rzeczy, na które wpadniesz sam później).

Tak, najpierw najważniejsze rzeczy. Jak robimy pewny użytkownik jest adminem,i ma dostęp do ADMIN_SLAY?

public cmd_hp ( id, level, cid )
{
if ( ! cmd_access ( id, level, cid, 3 ) )
return PLUGIN_HANDLED
return PLUGIN_HANDLED
}

Słownictwo
level - poziom
if - jeżeli
return - powrót

Cmd_access () funkcja sprawdzi informację komendy ( użytkownik(user), poziom dostępu(acces level i id) i upewnia się dwóch rzeczy: że użytkownik ma dostęp do tego i, że to zostało dane minimalną liczba parametrów. Tutaj podaliśmy trzy, ponieważ rozkaz bedzie wygladał jak to : amx_hp <target>(cel) <amount>(suma,ilość, wynik) i faktyczne komenda sama sumuje jako parametr. Jeżeli cmd_access zawodzi, mamy rozkaz aby zakonczyć to.

Następna porcją rozwiązań jest: potrzebujemy wziąć dwa parametry i zdekodować je. Parametr " amoutch "(ilość) jest łatwy, ponieważ tylko przerabiamy to od sznura do numeru. Drugi parametr będzie podstępny, ponieważ chcemy być zdolni, by mieć na celu trzy różne typy ludzi:

@ CT or @ T - CTs albo Ts
@ All - wszyscy
<target>(cel) - Częściowe imię gracza

public cmd_hp ( id, level, cid )
{
if ( ! cmd_access ( id, level, cid, 3 ) )
return PLUGIN_HANDLED
new Arg1 [ 24 ]
new Arg2 [ 4 ]

// odczytywanie argumetow z konsoli
read_argv ( 1 , Arg1, 23 )
read_argv ( 2 , Arg2, 3 )

// Przerabiać zdrowie od sznura do numeru
new Healt = str_to_num ( Arg2 )

// Dajesz jakis pierwszy charakter z symbolu @(masz wyzej)?
if ( Arg1 [ 0 ] == " @ " )
{
new Team = 0
// Sprawdź, który zespół został wyszczególniony.
// Zauważ, że zaczynamy od [ 1], to jest w porządku
// to tylko znaczy @ nie jest zawarty,
if ( equali ( Arg1 [ 1 ] , " CT " ) )
{
Team = 2
} else if ( equali ( Arg1 [ 1 ] , " T " ) ) {
Team = 1
}
new players [ 32 ] , num // Ta funkcja napełni graczy [ 32] zmienną
// z ważnym id gracza. num zawrze numer
// graczy, którzy są ważni.
get_players ( players, num )
new i
for ( i = 0 ; <num i; i ++ )
{
if ( ! Team )
{
// Ustalony to stan zdrowia gracza
set_user_health( players [ i ] , Healt )
} else {
if ( get_user_team( players [ i ] ) == Teams )
{
set_user_health( players [ i ] , Healt )
}
}
}
} else {
// odkrycia id gracza, że mecze częściowy nazywać dany
// 1 środków, że to nie będzie miało na celu gracza, jeżeli on
// ma dostępna odpornośc
new player = cmd_target ( id, Arg1, 1 )
if ( ! player )
{
// to będzie pokazywac wiadomość dla użytkownika,ktory wpisal komende
// format dla to rozkaz jest nazywanym " format () " styl,
// gdzie najpierw sznur formatuje wiadomość zgadzającą
// dowolną ilość pójścia za parametrami.
// % s znaczy sznur
// % d albo % i znaczy całość
// % f znaczy pływaka
// tak " Cześć % s, jestem % d lata stare " jest
// nakazują sznur i całość, by pójść za
console_print ( id, " Przepraszam, gracz % s nie mógłby zostać znaleziony albo targetted! " , Arg1 )
return PLUGIN_HANDLED }
else {
set_user_health ( player, Healt )
}
}

return PLUGIN_HANDLED }

Tak, oto nasz koncowy wynik napisania pluginu amx_hp wyglada tak:

#include <amxmodx>
#include <amxmisc>
#include <fun>

new PLUGIN[]="Change Health"
new AUTHOR[]="BAILOPAN"
new VERSION[]="1.00"

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("amx_hp", "cmd_hp", ADMIN_SLAY, "<target> <hp>")
}

public cmd_hp(id, level, cid)
{
if (!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new Arg1[24]
new Arg2[4]

//podaje komendy do konsoli
read_argv(1, Arg1, 23)
read_argv(2, Arg2, 3)

//wybieraz ill hp dostje gracz
new Health = str_to_num(Arg2)

//wybierz któraś z druzyn na początek?
if (Arg1[0] == '@')
{
new Team = 0
if (equali(Arg1[1], "CT"))
{
Team = 2
} else if (equali(Arg1[1], "T")) {
Team = 1
}
new players[32], num
get_players(players, num)
new i
for (i=0; i<num; i++)
{
if (!Team)
{
set_user_health(players[i], Health)
} else {
if (get_user_team(players[i]) == Team)
{
set_user_health(players[i], Health)
}
}
}
} else {
new player = cmd_target(id, Arg1, 1)
if (!player)
{
console_print(id, "Przepraszam, Gracz %s nie moze skorzystać z napelnienia zdrowia", Arg1)
return PLUGIN_HANDLED
} else {
set_user_health(player, Health)
}
}

return PLUGIN_HANDLED
}

__________________________________________________
___________________________________

Cvar'y:

CVARs jest w serwerze - stroną przechowywania kluczy. Na przykład, " mp_startmoney " jest w CS CVARem który definiuje ile kasyt gracze otwrzymuję gracze po dołaczeniu do gry. Możesz zrobić własnei CVARy przez rejestrowanie ich w plugin_init (). Pozwolmy sobie przybliżyć "mp_startmoney".


#include <amxmodx>
#include <cstrike>

public plugin_init()
{
register_plugin("CVAR Test", "1.0", "BAILOPAN")
//ustawiamy wartośc domyślną 500$
register_cvar("amx_startmoney", "500")
}

//kiedy to nastepuje, nastepuje gdy gracz wbije na serva
public client_putinserver(id)
{
if (get_cvar_num("amx_startmoney") > 0)
{
cs_set_user_money(id, get_cvar_num("amx_startmoney"))
} else {
cs_set_user_money(id, get_cvar_num("mp_startmoney"))
}
}

Ten plugin prawdopodobnie nie będzie pracował, to jest tylko demonstracja). Możecie ustawić CVARs jakie tylko chcecie , np ilosć czegoś, wartość jakaś (biegania , grawitacja itp ) i wiele innych .

__________________________________________________ __________________________________

Wróć do Poradniki AMX Mod X



Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości

Wymiana linkami: cs-hax.comLamernialamernia/a> •

cron