←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Natywy

Zablokowany

  • +
  • -
G[o]Q - zdjęcie 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 .
Odpowiedz

Seba - zdjęcie 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
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie 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??
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie 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:
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);
}
Odpowiedz

  • +
  • -
Vertricus - zdjęcie 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
Odpowiedz

  • +
  • -
mgr inż. Pavulon - zdjęcie 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.
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 02.02.2010

dobra czyli jest tak ze musze pierw zarejestrowac biblioteke poprzez

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 }
*/
Odpowiedz

  • +
  • -
R3X - zdjęcie 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_included
znaczy: 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
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 02.02.2010

ok a co dokladnie oznacza get_params(x), komenda i "x"
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 02.02.2010

jako, że B[(id, ile_argumentow)] nie otrzymuje parametrów natywa, musisz je pobrać odpowiednimi funkcjami:
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 xD
get_param(1) = 0
get_param_f(2) = 1.0
get_string(3) = "Test"
Odpowiedz

  • +
  • -
Miczu - zdjęcie 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...
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 02.02.2010

jeszcze nie sprawdzałem, ale przypuszczam, że get_string(0) pobierze nazwę natywu :D dlatego parametry od 1

ok, zabiorę się jutro za tutka porządnego na ten temat
Odpowiedz

  • +
  • -
Miczu - zdjęcie Miczu 02.02.2010

Jak ladnie napiszesz, to moze w przyszlej wersji diablo modu beda natywy :F
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 03.02.2010

dzięki :D a co do natywow w diablo to mozna sobie pisac klasy itemy a potem zalaczac zeby diablo nie edytowac :D tylko dopisac rejestracje :D

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 ?
Odpowiedz

  • +
  • -
Vertricus - zdjęcie 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 :>
Odpowiedz
Zablokowany