Witam potrzebuje zrobić z tego natyw, ale mi nie wychodzi jakieś propozycje ?
new xxx = g_iPlayer[id]"%s nazwa xxx",g_szName[xxx])
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.
|
Napisano 19.12.2015 21:29
Witam potrzebuje zrobić z tego natyw, ale mi nie wychodzi jakieś propozycje ?
new xxx = g_iPlayer[id]"%s nazwa xxx",g_szName[xxx])
Napisano 21.12.2015 23:29
Odpowiedź brzmi następująco - tak samo jak każdy inny natyw
public plugin_native() { register_native("pobierz_nazwe","native_pobierz_nazwe",1) } [...] public native_pobierz_nazwe(id) { return g_szName[g_iPlayer[id]]; }
no a później to już chyba niż prostszego:
[...] public test(id) { client_print(0,print_chat,"Wartosc zwrocona przez natyw to %s",pobierz_nazwe(id)) }
P.S działa w 100%
★ HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++
Napisano 22.12.2015 01:26
string nalezy pobrac oraz przypisac do zmiennej
public native_pobierz_nazwe(id, szReturn[], iLen){
param_convert(2);
copy(szReturn, iLen, g_szName[g_iPlayer[id]]);
}
i przyklad
native pobierz_nazwe(id, szReturn, iLen);
public test(id)
{static szName[32];
pobierz_nazwe(id, szName, 31);
client_print(0,print_chat,"Wartosc zwrocona przez natyw to %s",szName)
}
Użytkownik Asiap edytował ten post 22.12.2015 01:28
Napisano 22.12.2015 14:27
string nalezy pobrac oraz przypisac do zmiennej
public native_pobierz_nazwe(id, szReturn[], iLen){
param_convert(2);
copy(szReturn, iLen, g_szName[g_iPlayer[id]]);
}
i przyklad
native pobierz_nazwe(id, szReturn, iLen);
public test(id)
{static szName[32];
pobierz_nazwe(id, szName, 31);
client_print(0,print_chat,"Wartosc zwrocona przez natyw to %s",szName)
}
nic nie wyświetla
i błędami wali "Unhandled dynamic native error" do tej linijki
copy(szReturn, iLen, g_szName[g_iPlayer[id]]);
Napisano 22.12.2015 15:46
Odpowiedź brzmi następująco - tak samo jak każdy inny natyw
public plugin_native() { register_native("pobierz_nazwe","native_pobierz_nazwe",1) } [...] public native_pobierz_nazwe(id) { return g_szName[g_iPlayer[id]]; }no a później to już chyba niż prostszego:
[...] public test(id) { client_print(0,print_chat,"Wartosc zwrocona przez natyw to %s",pobierz_nazwe(id)) }P.S działa w 100%
tu całkowicie całe HUD coda znikło jak tylko dodałem
Napisano 22.12.2015 16:59
#include <amxmodx> new g_szName[33][32]; new g_iPlayer[33]; public plugin_natives() { register_native("get_user_name2", "__get_user_name2", 1); } public __get_user_name2(id, szReturn[], iLen) { param_convert(2); copy(szReturn, iLen, g_szName[g_iPlayer[id]]); }subplugin:
#include <amxmodx> native get_user_name2(id, szReturn[], iLen); public plugin_init() { register_plugin("Subplugin Example", "0.1", "asiap"); register_clcmd("say /test", "test"); } public test(id) { new szName[32]; get_user_name2(id, szName, 31); client_print(0, print_chat, "Wartosc zwrocona przez natyw to %s", szName); }
Użytkownik Asiap edytował ten post 22.12.2015 17:01
Napisano 22.12.2015 17:32
no tak a jeśli new szName jest tak zapisane w pierwszym pluginie
new g_szName[MAX+1][64]
to w subpluginie w test
- public test(id)
- {
- new szName[63];
- get_user_name2(id, szName, 31);
- client_print(0, print_chat, "Wartosc zwrocona przez natyw to %s", szName);
- }
Napisano 22.12.2015 17:56
new szName[64]; get_user_name2(id, szName, 63);
PS: jesli jest to zmienna w ktorej przechowywane sa nicki graczy to zmien rozmiar na 32 poniewaz w nicku moze byc najwiecej tyle znakow
Napisano 22.12.2015 18:46
teoretycznie poszło tylko pobiera ID a nie nazwe co dla mnie jest dziwne bo w pierwszym pluginie wynika jasno ze
g_szName[g_iPlayer[id]]wyświetla nazwę przy użyciu %s a gdy został z tego zrobiony natyw to pobiera id
Napisano 22.12.2015 18:52
a sprawdz zamiast g_iPlayer[id] to daj samo id
g_szName[id]
Napisano 22.12.2015 19:08
to samo tylko id przy %d wyswietla przy %s nic
i to ID też zle pobiera cały czas jest 0 a powinno być akurat w moim przypadku 2 przy tej rzeczy co testuje
Napisano 22.12.2015 19:48
pokaz jak przypisujesz wartosc do zmiennej g_iPlayer
najlepiej pokaz caly kod pluginu , bedzie latwiej pomoc
bo na razie stawiamy same hipotezy...
Napisano 22.12.2015 20:03
#include <amxmodx> #include <amxmisc> #include <codmod> new g_iKlansCount; new g_iCount[192] new g_szKlanName[MAX_KLANS+1][32] new g_szKlanOwner[2][MAX_KLANS+1][64]; new g_szKlanMembers[MAX_MEMBERS+1][MAX_KLANS+1][64]; new g_iKlanLevel[MAX_KLANS+1], Float:g_iKlanExperience[MAX_KLANS+1], g_iKlanMembersCount[MAX_KLANS+1], g_iKlanAdditionalPoints[5][MAX_KLANS+1] new g_iKlanCoins[MAX_KLANS+1]; new bool:szTrigger = true new g_szTop10Motd[MAX_BUFFER_LENGTH+1]; new g_iPlayerKlan[33], g_iIsKlanOwner[2][33]; new g_szPlayerName[33][33]; new g_iLastQuestioner[33]; public client_authorized(id) { get_user_name(id, g_szPlayerName[id], 32); g_iPlayerKlan[id] = get_user_klan(id); if(g_iPlayerKlan[id] != -1) { g_iIsKlanOwner[0][id] = is_Leader(id, g_iPlayerKlan[id]) g_iIsKlanOwner[1][id] = is_VCLeader(id, g_iPlayerKlan[id]) } } public client_disconnect(id) { g_iPlayerKlan[id] = -1; g_iIsKlanOwner[0][id] = 0; g_iIsKlanOwner[1][id] = 0; g_iLastQuestioner[id] = 0; remove_task(id+909); } public plugin_natives() { register_native("cod_name_klan", "cod_name_klan", 1); } public cod_name_klan(id, szReturn[], iLen) { param_convert(2); copy(szReturn, iLen, g_szKlanName[g_iPlayerKlan[id]]); } public UpdateInfo(dane[]) { new id = dane[0] if(!is_user_connected(id)) { remove_task(id+909); return PLUGIN_CONTINUE; } if(g_iPlayerKlan[id] == -1) { remove_task(id+909); return PLUGIN_CONTINUE; } if(is_user_alive(id)) { static iKlan, iLevel; iKlan = g_iPlayerKlan[id]; iLevel = g_iKlanLevel[iKlan] set_hudmessage(255, 125, 0, 0.97, 0.4, 0, 1.0, 1.0, 0.1, 0.1); ShowSyncHudMsg(id, g_MsgSyncLoop, "| Klan : %s |^n| Lvl : %d/%i |^n| EXP : %0.1f/%0.1f |", g_szKlanName[iKlan], iLevel, MAX_LEVEL); } return PLUGIN_CONTINUE; }
Napisano 24.12.2015 02:53
Wybacz stary, że wprowadziłem cię w błąd, ale ten "mój" sposób działa tylko wtedy jeżeli funkcje wywołujesz z tego samego pluginu
Sposób Asiap jest jak najbardziej poprawny. Tylko nie wolno zapomnieć o konwertowaniu parametru.
param_convert(2)
to samo tylko id przy %d wyswietla przy %s nic
i to ID też zle pobiera cały czas jest 0 a powinno być akurat w moim przypadku 2 przy tej rzeczy co testuje
Funkcja zwraca liczbę skopiowanych znaków, może być ona różna od len.
Nie wiem tylko czemu trzeba konwertować parametr. Jeżeli tego nie zrobimy to nam nie pyknie. I będzie zwracać pustą wartość dla string i 0 dla integer.
Jeśli Asiap byłabyś tak miła i powiedziała nam byłbym bardzo wdzięczny.
Jeśli chcesz zwrócić nazwę i id to zrób taki myk ( od razu mówię, że przekazanie przez referencje int'a nie pyknie. Musiałbyś się bawić tak jak z tą nazwą konwertowanie i kopiowanie )
new jakies_id[32] [...] public __get_user_name2(id, szReturn[], iLen) { param_convert(2); copy(szReturn, iLen, g_szName[g_iPlayer[id]]); return jakies_id[32]; }
użycie
public test(id) { new dawajid,szReturn[20],iLen dawajid = test_natyw(id,szReturn,iLen) client_print(id,print_chat,"Nazwa = %s id = %d",szReturn,dawajid) }
p.s to już sprawdziłem i teraz działa . U siebie tym sposobem zwracam element tablicy oraz index.
★ HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++
Napisano 24.12.2015 17:09
w zmiennej
new jakies_id
ona musi coś zawierać ? id nazwy ?
Napisano 24.12.2015 19:16
w zmiennej
new jakies_id
ona musi coś zawierać ? id nazwy ?
Nie rozumiem za bardzo twojego pytania.
Może prościej będzie jak napiszesz co chcesz dokładnie zwrócić tym natywe
★ HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++
Napisano 24.12.2015 20:09
iKlan = g_iPlayerKlan[id];
ShowSyncHudMsg(id, g_MsgSyncLoop, "| Klan : %s ", g_szKlanName[iKlan], to i tylko to ale jak to zrobiłem jak ty podałeś sposobem nadal nie działa :_:
Napisano 25.12.2015 16:20
natywów używa się gdy chce się pobrać jakaś zmienna z innego pluginy.
jeśli chcesz pobrać tylko zmienna tekstową to robisz to w taki sposób:
public nativie_test_natyw(id,text[],iLen) { param_convert(2) // 2 bo konwertujesz drugi parametr ? copy(text,iLen,twoja_zmienna) // parametr 1 to zmienna do ktorej skopiujesz zmienna twoja_zmienna || iLen musisz sobie wczesniej obliczyć }
no a natyw wywołujesz w taki sposób
public test(id) { new text[20] test_natyw(id,text,sizeof(text)-1) }
Musi ci to działać, albo robisz coś źle.
P.S mam nadzieje, że zmiennej text nie używasz jako zmiennej typu int.
Bo jak pobierasz tak jak w przykładzie na górze tj:
new text[20]
test_natyw(id,text,sizeof(text)-1)
a potem zmiennej text używasz tak: text[id]
to wyświetli ci jedynie znak przy czym jeśli zająłeś tylko 5 komórek a odwołujesz się do 20 to otrzymasz pustą wartość
W takim wypadku używa zmiennej bez indexu. No chyba, że to co podałeś wyżej to tablica
Użytkownik Master Yoga edytował ten post 25.12.2015 16:26
★ HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++
Napisano 25.12.2015 16:45
poszło, tylko jeśli nie wyświetla żadnego tekstu to HUD całe znika i pojawia się dopiero gdy wyświetla jakiś tekst da rade zrobić żeby pisało brak gdy nie wyświetla żadnego tesktu ?
Napisano 25.12.2015 20:44
Jasne możesz obliczyć długość stringu i wyświetlać hud dopiero gdy długość > 0poszło, tylko jeśli nie wyświetla żadnego tekstu to HUD całe znika i pojawia się dopiero gdy wyświetla jakiś tekst da rade zrobić żeby pisało brak gdy nie wyświetla żadnego tesktu ?
★ HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++
0 użytkowników, 0 gości, 0 anonimowych