Reklama znika po zalogowaniu się. Jeśli nie masz konta zarejestruj się.




Poprzedni temat «» Następny temat

Tagi tematu: pisanie, pluginow

Pisanie pluginów.
Autor Wiadomość

lou 



Info o userze:
Zaproszone osoby: 21
Dołączył: 20 Cze 2008
Wiek: 17
Wizyt: 1619
Łączny czas: 441,2 godzin
Posty: 750
Fragi: 75/56
Ammo: 0

Odznaczenia:
Medale: Brak

Wysłany: 2008-07-11, 21:42   Pisanie pluginów.

Witaj nieznajomy! Aby przeglądać forum bez ograniczeń i przeszkadzających reklam zarejestruj się lub zaloguj.
Ten Tutorial pozwoli ci poznać ogólny widok pisania pluginów. Poradnik by nemore wersja spolszczona z Wiki.

    Zawartość
    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:

Cytat:
// 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.

Cytat:
# 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?

Cytat:

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

Cytat:

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:

Cytat:
#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".


Cytat:
#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 .

____________________________________________________________________________________


Inne Tutki

Aby nauczyć się więcej o pisaniu zdrodla pluginu dla AMX Mod X, powinieneś przejrzeć www.amxmodx.org w celu zapoznania sie z funkcjami albo czytać pliki zródłowe innych pluginów.

Możesz też rozmawiać na Forach i zadawać pytania, albo przeczytaj jak inni ludzie osiągnęli pewne cele, by nauczyć się i wprowadzać innowacje.
Daj fraga autorowi tego posta
 
 
 

Ice? 



Info o userze:
User Zbanowany
Zakaz Pisania
Dołączył: 10 Lip 2008
Wiek: 17
Wizyt: 150
Łączny czas: 37,4 godzin
Posty: 126
Zdobył 2 fragów(i)
Ammo: 0

Odznaczenia:
Medale: Brak

Wysłany: 2008-07-12, 09:40   

Mi sie podoba jak napisałeś :) wystarczy punkt za punktem i napisany plugin :) należy sie plusik xD :P




Daj fraga autorowi tego posta
 
 
 
Pani Reklama


Polecamy : 
Espmania.pl







Wyświetl posty z ostatnich:   
Pokaz to innym!  Wypowiedź na Sledzik  Wypowiedź dla Wykop  Wypowiedź dla Facebook  Wypowiedź dla Grono  Dodaj status do GG!
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Podobne Tematy
Temat Autor Forum Odpowiedzi Ostatni post
Brak nowych postów Przyklejony: Spis Pluginów
spis wszystkich pluginów na cs-serwer.pl
Gutaj Pluginy 3 2009-12-26, 20:52
hC :*
Brak nowych postów Pisanie Skryptów
Vorlan Poradniki, intrukcje, skrypty 1 2009-02-27, 01:16
bOsskI
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi Pisanie na kolorowo
xX666Xx Kosz 0 2008-06-25, 17:43
xX666Xx
Brak nowych postów Pisanie skryptów
Malakas Poradniki, intrukcje, skrypty 0 2008-07-29, 21:36
Malakas
Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi Pisanie na kolorowo
xX666Xx Kosz 0 2008-06-25, 17:39
xX666Xx
Brak nowych postów Kolorowe pisanie.
knl Poradniki, intrukcje, skrypty 3 2008-09-27, 19:52
Malakas
Brak nowych postów PISANIE NA KOLOROWO
Leju Poradniki, intrukcje, skrypty 5 2008-06-21, 15:34
lou
Brak nowych postów KONKURS NA PISANIE POSTÓW
Dla ambitnych !!
Morti Kosz 2 2008-06-01, 20:42
Dragonauv
Brak nowych postów Pisanie plugin'ów pod AmxModX- część 2
Tak,w końcu jest!
FakeNick Poradniki i Instrukcje 4 2008-08-20, 19:35
hC :*
Brak nowych postów Pisanie plugin'ów pod AmxModX- część 1
FakeNick Poradniki i Instrukcje 5 2008-06-22, 00:39
Un_Nem





Oficjalni Sponsorzy oraz Partnerzy serwisu WWW.CS-SERWER.PL
Sponsorzy:





Reklamy:



Partnerzy:

Najlepsze Serwery Counter-Strike 1.6 CS STEAM i NS Cserwerek.pl - najlepsze serwery Counter-Strike 1.6 w sieci! Siec serwerow cs 1.6 F1WM.pl serwery cs, counter strike, amxx, cs 1.6 Polska Sieć Serwerów Counter-Strike


Linki pozycjonujące:

Counter-Strike, Nonsteam, Counter-Strike, Pneumatyka, Paintball, Infernal Paintball , Paintball w Krakowie, NewDiabloMod.pl, Serwery CS 1.6, Capoeira Wrocław
Statystyki:

statystyka


Mapa forum | Forum Sitemap | Google Sitemap | Forum Tags
Czas: 0,292s. | Godzina: 23:31 | SQL: 20 | GZIP on


Powered by phpBB modified by Przemo © 2003 phpBB Group
Styl cs-serwer.pl v2.1 stworzony przez ekipę cs-serwer.pl. Zabrania się kopiowania jakichkolwiek elementów stylu.
Serwis nie ponosi odpowiedzialności za treść komentarzy, są one własnością ich autorów.
www.cs-serwer.pl © 2008-2010