Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Natywy "Wywołania"


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
19 odpowiedzi w tym temacie

#1 ELOS

    No i pozamiatane ;*

  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 10:00

Witam potrzebuję zrobić natywów wywołania na moje oko przypominają one natywy z coda chodzi dokładniej o register_class
potrzebuje zrobić coś takiego aby zarejestrować 4 zmienne 2 consty i 2 zwykłe następnie pobrać id zarejestrowanego pluginu i go wywołać.

Zrobiłem sobie takie coś
include:
native NU_register(const nazwa[], const opis[], mana, odpocznij);
I tu w głównym pluginie takie coś zaczerpnięte z coda ale zapewne jest to źle zrobione:
public ZarejestrujNazwy(plugin, params)
{
if(params != 4)
  return PLUGIN_CONTINUE;

get_string(1, nazwy_klas[ilosc_nazw], MAX_WIELKOSC_NAZWY);
get_string(2, opisy_klas[ilosc_nazw], MAX_WIELKOSC_OPISU);

czakra[ilosc_nazw] = get_param(3);
odpocznij[ilosc_nazw] = get_param(4);

return ilosc_nazw;
}
Do tego rejestruje mój plugin o to takim kodem
NU_register(nazwa, opis, mana, odpocznij);

I teraz moje pytanie grzmi jak zrobić takie coś w stylu wywołania np:
NU_Wywołaj(id, "Nazwa")
i jak zrobić aby przy takim wywołaniu czytało funkcje z danego publica.
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 24.04.2012 14:58

nie widzę tu rejestrowania natywu w plugin_natives

I teraz moje pytanie grzmi jak zrobić takie coś w stylu wywołania np:

NU_Wywołaj(id, "Nazwa")
i jak zrobić aby przy takim wywołaniu czytało funkcje z danego publica.

:huh:
zarejestruj kolejny natyw który będzie zwracał dane z tablic które ustawiasz w pierwszym natywie
  • +
  • -
  • 1

#3 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 15:09

Czyli mam stworzyć natywy do nazwy, opisu, many i odpoczynku ?
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#4 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 24.04.2012 15:54

Tak, i każdy natyw musisz zarejestrować w funkcji plugin_natives()
  • +
  • -
  • 0
Zapraszam na http://zapalka.net.pl

#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 24.04.2012 15:55

czytałeś http://amxx.pl/topic/20034-natywy/ ?
  • +
  • -
  • 0

#6 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 15:58

No dobra gdy już to zrobiłem no to co dalej mam robić skoro nadal nie wiem jak pobrać i wykonać działanie drugiego pluginu gdzie użyłem zarejestrowania natywu
NU_register(nazwa, opis, mana, odpocznij);

czytałeś http://amxx.pl/topic/20034-natywy/ ?

Tak czytałem to 3 razy zanim napisałem na forum i nadal mi nie wychodzi.

Nie wiem czy mnie dobrze zrozumieliście chcę po prostu zarejestrować z innego pluginu daną rzecz, aby móc ją potem odtworzyć w mniej więcej takim wyglądzie
NU_Wywołaj(id, "Nazwa")
Nie chce tworzyć do każdego pluginu osobnego natywu.
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#7 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 24.04.2012 16:00

DarkGL podał ci linka, przeczytaj cały temat a się wszystkiego dowiesz, nie ma co pisać dwa razy to samo.

Dobra, więc musisz utworzyć kilka tablic, które będą trzymały dane podawane przy rejestracji dodatkowego pluginu.

W pluginie, w którym wywołujesz natyw piszesz: "new ilosc=NU_register(...);"
Wynik, który zwróci plugin "dowodzący" będziesz miał w zmiennej ilosc.
Natomiast w funkcji, którą wykonuje natyw dopisujesz do tablic wszystkie dane, które przekazał drugi plugin oraz pasowałoby zwiększyć utworzoną wcześniej zmienną globalną, która będzie trzymała ilość np. klas.

Użytkownik Zapalka edytował ten post 24.04.2012 16:13

  • +
  • -
  • 2
Zapraszam na http://zapalka.net.pl

#8 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 16:20

Kawałek mojego kodu
new const nazwa[] = "Nazwa";
new const opis[] = "Opis";
new mana = 40;		/// Potrzebna mana
new odpocznij = 6;	  /// Odpoczynek liczony 0,5sekundy w tym przypadku trwa 3 sekundy.
/////////////////////////////////////////////////////////
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
NU_register(nazwa, opis, mana, odpocznij);

gMaxPlayers = get_maxplayers();
}

No tu coś takiego mam no to domyślam się że w tym pluginie mam dobrze i teraz w głównym pluginie jak mam zrobić aby tamte wartości były przekazywane w takim formacie aby szło je odczytać po przez jakieś id czy coś bo normalnie to jest jedna wielka mieszanka która się będzie nadpisywać w przypadku zwykłego natywu (bynajmniej mi się tak zdaje)
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#9 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 24.04.2012 16:25

No to pokaż jak masz zrobione teraz w tym drugim pluginie.
  • +
  • -
  • 1
Zapraszam na http://zapalka.net.pl

#10 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 16:30

Rejestruje natyw.
public plugin_natives()
{
register_library("nu");
register_native("NU_registe", "Zarejestruj");
}
natyw

public Zarejestruj(plugin, params)
{
if(params != 4)
return PLUGIN_CONTINUE;

get_string(1, nazwy_klas[ilosc_nazw], MAX_WIELKOSC_NAZWY);
get_string(2, opisy_klas[ilosc_nazw], MAX_WIELKOSC_OPISU);

czakra[ilosc_nazw] = get_param(3);
odpocznij[ilosc_nazw] = get_param(4);

return ilosc_nazw;
}


Co do tego publica zarejestruj jestem pewny że jest zły.
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#11 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 24.04.2012 16:33

"ilosc_nazw" oczywiście masz gdzieś w globalnych zmiennych?
Musi być tak
public Zarejestruj(plugin, params)
{
if(params != 4)
return PLUGIN_CONTINUE;

get_string(1, nazwy_klas[ilosc_nazw], MAX_WIELKOSC_NAZWY);
get_string(2, opisy_klas[ilosc_nazw], MAX_WIELKOSC_OPISU);

czakra[ilosc_nazw] = get_param(3);
odpocznij[ilosc_nazw] = get_param(4);

return ilosc_nazw++;
}

czyli wpisy w tabeli będą się zaczynać od 0, albo tak
public Zarejestruj(plugin, params)
{
if(params != 4)
return PLUGIN_CONTINUE;

get_string(1, nazwy_klas[++ilosc_nazw], MAX_WIELKOSC_NAZWY);
get_string(2, opisy_klas[ilosc_nazw], MAX_WIELKOSC_OPISU);

czakra[ilosc_nazw] = get_param(3);
odpocznij[ilosc_nazw] = get_param(4);

return ilosc_nazw;
}

czyli wpisy będą się zaczynać od 1.
Do tego musisz dać jakiś warunek, co by nie dało się przepełnić tabel.
  • +
  • -
  • 2

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#12 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 16:37

Zaraz prze testuje tylko mam pytanie jak teraz z tego odczytać dane ?
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#13 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 24.04.2012 16:54

Robisz natyw do każdej danej, np. get_user_mana itd.
przykład z achieventów:

public _ach_get_target(plugin, params)
{
if(params != 1)
{
return 0;
}
new ach_id = get_param(1);
return ArrayGetCell(AchTarget, ach_id);
}
public _ach_get_name(plugin, params)
{
if(params != 3)
{
return 0;
}
new ach_id = get_param(1);
new iAchName[64];
ArrayGetString(AchName, ach_id, iAchName, 63);
set_string(2, iAchName, get_param(3));
return 1;
}

  • +
  • -
  • 1

#14 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 24.04.2012 16:57

Utwórz nowy natyw, w którym będziesz zwracał daną wartość, np. funkcja natywu: "public PobierzNazwe(id) return nazwy_klas[id];"
I w drugim pluginie tak: "new nazwa=PobierzNazwe(jakiesID);"
Jako id podstawiasz identyfikator klasy, który otrzymujesz przy rejestrowaniu danego pluginu.

#Edit

Fii mnie uprzedził :P

Użytkownik Zapalka edytował ten post 24.04.2012 16:58

  • +
  • -
  • 2
Zapraszam na http://zapalka.net.pl

#15 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 17:02

czyli przykładowo coś takiego zadziała ?
public Native_KosztMana(plugin, params)
koszt_mana=params;

Jeżeli tak to użycie będzie
Native_KosztMana(1)
?
1 - to idenfikator
  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#16 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 24.04.2012 17:09

Nie.
Zrób to tak:
public Native_KosztMana(id)
return koszt_mana[id];


I użycie:
new koszt=Native_KosztMana(1);


Tylko przy rejestrowaniu natywu musisz dodać trzeci argument(style) i nadać mu wartość 1.
register_native("Native_KosztMana", "Native_KosztMana", 1);

Użytkownik Zapalka edytował ten post 24.04.2012 17:15

  • +
  • -
  • 2
Zapraszam na http://zapalka.net.pl

#17 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 17:29

A czy w jakiś sposób zamiast id idzie wpisać nazwę z consta nazwa?
aby
Native_KosztMana(1);
zamienić na np
Native_KosztMana("Test");

  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#18 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 24.04.2012 17:39

Wtedy musisz znaleźć id wybranego elementu. np.

public Native_PobierzID(nazwa[])
{
for(new i=0;i<ilosc_nazw;i++)
{
if(equal(nazwy_klas[i],nazwa))
return i;
}
return -1;
}


No i możesz wtedy zrobić tak:
Native_KosztMana(Native_PobierzID("Test"));

  • +
  • -
  • 2
Zapraszam na http://zapalka.net.pl

#19 ELOS

    No i pozamiatane ;*

  • Autor tematu
  • Power User

Reputacja: 145
Zaawansowany

  • Postów:703
  • GG:
  • Imię:Kamil
  • Lokalizacja:Będzin
Offline

Napisano 24.04.2012 17:42

A czy nie da się od razu tego wbudować w funkcje zarejestruj albo kosztmana aby nie przedłużać kodu ?

I teraz jeszcze jedno pytanie jak użyć np publica
public start(id)
{
	 //kod
}
W danym pluginie używając
Native_PobierzID("Test")

  • +
  • -
  • 0

[Aktualizacja 22.01.2015] GunXpMod 2.7.4

http://wklej.to/vlMW7


#20 Zapalka

    Wszechwidzący

  • Użytkownik

Reputacja: 194
Profesjonalista

  • Postów:283
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Janów Lubelski
Offline

Napisano 25.04.2012 17:04

Dodaj wykonanie start(id); do funkcji Native_PobierzID
  • +
  • -
  • 1
Zapraszam na http://zapalka.net.pl




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych