Natywy
G[o]Q
02.02.2010
Witam chciałbym zapytać was o natywy głównie interesuje mnie to po co one w ogóle są ,do czego służą no i jak się ich używa .
Seba 02.02.2010
Do uruchomienia funkcji z pliku inkluda (bądź z innego pluginu), zerknij do plików .inc
Użytkownik Seba edytował ten post 02.02.2010 07:00
Użytkownik Seba edytował ten post 02.02.2010 07:00
G[o]Q
02.02.2010
czyli ze rejestrujac natywy w jednym plugu i tworzac plik *.inc moge w innym pluginie uzywac funkcji z pluginu nr 1??
mgr inż. Pavulon
02.02.2010
R3X tu zrobił "przykład": Przekazywanie item - Nieoficjalny polski support AMX Mod X - strona 2
Dodał do oryginalnego diablomod'a:
wraz z odpowiednimi funkcjami które potem wykorzystał w diablo_daj_wez.sma
Dodał do oryginalnego diablomod'a:
public plugin_natives(){
register_library("DiabloMod_Items");
register_native("diablo_send_user_item", "_diablo_send_user_item");
register_native("diablo_get_user_item", "_diablo_get_user_item");
}
wraz z odpowiednimi funkcjami które potem wykorzystał w diablo_daj_wez.sma
#include <diablomod_items>
if(error == false){
ColorChat(0, GREEN, "[^x01DiabloMod^x04]^x01 Gracz^x04 %s^x01 przekazal item graczowi^x04 %s", szName2, szName);
diablo_send_user_item(id2, id);
}
Vertricus
02.02.2010
GoQ najlepszym przykładem jest Zombie Plauge
Na alliedach w dziale HighTrafic Plugins masz sporo pluginów które korzystają z natyw z ZP
Na alliedach w dziale HighTrafic Plugins masz sporo pluginów które korzystają z natyw z ZP
mgr inż. Pavulon
02.02.2010
GoQ najlepszym przykładem jest Zombie Plauge
Na alliedach w dziale HighTrafic Plugins masz sporo pluginów które korzystają z natyw z ZP
Nie, najlepszym przykładem jest to że w (prawie?) każdym pluginie korzystasz z funkcji natywnych z tą różnicą że funkcje te nie są zapisane w pluginach tylko bibliotekach.
G[o]Q
02.02.2010
dobra czyli jest tak ze musze pierw zarejestrowac biblioteke poprzez
i wrzucic do tego pliku naglowki funkcji ktorych bd uzywac w innym pluginie tak??
a potem rejestrowac natywy poprzez
Ale co dokladnie oznaczaja te parametry to sa naglowki funkcji tak??
czy oznaczaja one to ze pierwszy parametr to naglowek jaki bedziemy uzywac w innych plugach a parametr 2 to nazwa funkcji w pluginie gdzie natyw rejestrujemy??
aha no i jak powinien wygladac ten plik inc ??
bo ten co R3X zrobil wyglada tak
register_library("nazwa biblioteki");
i wrzucic do tego pliku naglowki funkcji ktorych bd uzywac w innym pluginie tak??
a potem rejestrowac natywy poprzez
register_native("A", "B");
Ale co dokladnie oznaczaja te parametry to sa naglowki funkcji tak??
czy oznaczaja one to ze pierwszy parametr to naglowek jaki bedziemy uzywac w innych plugach a parametr 2 to nazwa funkcji w pluginie gdzie natyw rejestrujemy??
aha no i jak powinien wygladac ten plik inc ??
bo ten co R3X zrobil wyglada tak
#if defined _DiabloMod_Items_included #endinput #endif #define _DiabloMod_Items_included // to jest nazwa biblioteki jaka dawalo sie w register_library tak??? #pragma library "DiabloMod_Items" // a to pewnie jest nazwa jaka uzywamy w include tak?? native diablo_get_user_item(id); //a tutaj naglowek z parametrem tak?? native diablo_send_user_item(id, item); /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
R3X
02.02.2010
register_native("A", "B");
w pluginie, który rejestruje natywa musi być publiczna funkcja B w takiej postaci:
public B(ID_PLUGINU, LICZBA_PARAMETROW){
gdy w innym pluginie użyjesz funkcji A() to B() zajmuje się jej obsługą, dlatego masz dostęp do danych z tego pluginu w innym
co do inc`a, to pierwsze linie dbają, by nagłówek 2 razy użyty (2 linijki z #include<mojabilbioteka>) nie sprawiał problemów przy kompilaciji
#if defined _DiabloMod_Items_included #endinput #endif #define _DiabloMod_Items_includedznaczy: jeśli istnieje już stała "_DiabloMod_Items_included" nie idź dalej
#pragma library "DiabloMod_Items"to jest związane z register_library();
dalej są nagłówki funkcji, informujące w jaki sposób ich używać; mile widziane komentarze jeśli nazwa i argumenty funkcji nie mówią za dużo
R3X
02.02.2010
jako, że B[(id, ile_argumentow)] nie otrzymuje parametrów natywa, musisz je pobrać odpowiednimi funkcjami:
native test(id, Float:fValue, const szMessage[]);
ten x to pozycja parametru
Numerujemy tak:
1 - id
2 - fValue
3 - szMessage
test(0, 1.0, "Test");
uwaga: Duży skrót składni
get_param(1) = 0
get_param_f(2) = 1.0
get_string(3) = "Test"
get_param() //komórka pamięci, np. int,char get_param_byref(); //jw. z tym, że przez referencję get_param_f(); //Float: get_string()//tekst get_array();//tablica komórek get_array_f(); //tablica Float:zależnie od typu
native test(id, Float:fValue, const szMessage[]);
ten x to pozycja parametru
Numerujemy tak:
1 - id
2 - fValue
3 - szMessage
test(0, 1.0, "Test");
uwaga: Duży skrót składni
get_param(1) = 0
get_param_f(2) = 1.0
get_string(3) = "Test"
Miczu
02.02.2010
R3X moglbys to skopiowac, moze lekko rozwinac i bedzie male info dla tech co chca uzyc natyw (w tej dziedzinie spewnoscia mnie przewyzszasz).
Parametry zaczynaja sie od 1? Zawsze musza mieszac w tych jezykach, raz od zera a raz od 1...
Parametry zaczynaja sie od 1? Zawsze musza mieszac w tych jezykach, raz od zera a raz od 1...
R3X
02.02.2010
jeszcze nie sprawdzałem, ale przypuszczam, że get_string(0) pobierze nazwę natywu dlatego parametry od 1
ok, zabiorę się jutro za tutka porządnego na ten temat
ok, zabiorę się jutro za tutka porządnego na ten temat
Miczu
02.02.2010
Jak ladnie napiszesz, to moze w przyszlej wersji diablo modu beda natywy :F
G[o]Q
03.02.2010
dzięki a co do natywow w diablo to mozna sobie pisac klasy itemy a potem zalaczac zeby diablo nie edytowac tylko dopisac rejestracje
a powiedz mi jedno czy mozna uzyskac w jednym plugu wartosc zmiennej z innego pluga? np pobrac klase diablo zapisana w
a powiedz mi jedno czy mozna uzyskac w jednym plugu wartosc zmiennej z innego pluga? np pobrac klase diablo zapisana w
player_class[33]i uzyc jej np w diablo_wez_daj ?
Vertricus
03.02.2010
np.
public native_klasa(index) return player_class[index]Oczywiście rejestrujesz natywe w diablo robisz include i powinno zadziałać przynajmniej u mnie kuka