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

jak zrobic natyw pobierający nazwe


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

#1 tytusek

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:822
Offline

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])

 


  • +
  • -
  • 0

#2 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

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% :)


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#3 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

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

  • +
  • -
  • 1

#4 tytusek

    Czempion

  • Autor tematu
  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:822
Offline

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]]); 


  • +
  • -
  • 0

#5 tytusek

    Czempion

  • Autor tematu
  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:822
Offline

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 


  • +
  • -
  • 0

#6 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

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

  • +
  • -
  • 2

#7 tytusek

    Czempion

  • Autor tematu
  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:822
Offline

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 

 

  1. public test(id)
  2. {
  3. new szName[63];
  4. get_user_name2(id, szName, 31);
  5.  
  6. client_print(0, print_chat, "Wartosc zwrocona przez natyw to %s", szName);
  7. }
  • ?

    • +
    • -
    • 0

    #8 Asiap

      Wszechpomocny

    • Girl

    Reputacja: 171
    Profesjonalista

    • Postów:323
    • Lokalizacja:Kętrzyn
    Offline

    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


    • +
    • -
    • 1

    #9 tytusek

      Czempion

    • Autor tematu
    • Power User

    Reputacja: 229
    Wszechwidzący

    • Postów:822
    Offline

    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 


    • +
    • -
    • 0

    #10 Asiap

      Wszechpomocny

    • Girl

    Reputacja: 171
    Profesjonalista

    • Postów:323
    • Lokalizacja:Kętrzyn
    Offline

    Napisano 22.12.2015 18:52

    a sprawdz zamiast g_iPlayer[id] to daj samo id

    g_szName[id]

    • +
    • -
    • 0

    #11 tytusek

      Czempion

    • Autor tematu
    • Power User

    Reputacja: 229
    Wszechwidzący

    • Postów:822
    Offline

    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 


    • +
    • -
    • 0

    #12 Asiap

      Wszechpomocny

    • Girl

    Reputacja: 171
    Profesjonalista

    • Postów:323
    • Lokalizacja:Kętrzyn
    Offline

    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...


    • +
    • -
    • 0

    #13 tytusek

      Czempion

    • Autor tematu
    • Power User

    Reputacja: 229
    Wszechwidzący

    • Postów:822
    Offline

    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;
    }
    
    chyba wystarczy jest to urywek jedynie 

    • +
    • -
    • 0

    #14 Master Yoga

      Support Team | Mocarz

    • Support Team

    Reputacja: 136
    Zaawansowany

    • Postów:275
    • Lokalizacja:Magistrala Adresowa
    Offline

    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 :D. U siebie tym sposobem zwracam element tablicy oraz index.


    • +
    • -
    • 1

    HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


    MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


    #15 tytusek

      Czempion

    • Autor tematu
    • Power User

    Reputacja: 229
    Wszechwidzący

    • Postów:822
    Offline

    Napisano 24.12.2015 17:09

    w zmiennej 

    new jakies_id

    ona musi coś zawierać ? id nazwy ?


    • +
    • -
    • 0

    #16 Master Yoga

      Support Team | Mocarz

    • Support Team

    Reputacja: 136
    Zaawansowany

    • Postów:275
    • Lokalizacja:Magistrala Adresowa
    Offline

    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


    • +
    • -
    • 0

    HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


    MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


    #17 tytusek

      Czempion

    • Autor tematu
    • Power User

    Reputacja: 229
    Wszechwidzący

    • Postów:822
    Offline

    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 :_:


    • +
    • -
    • 0

    #18 Master Yoga

      Support Team | Mocarz

    • Support Team

    Reputacja: 136
    Zaawansowany

    • Postów:275
    • Lokalizacja:Magistrala Adresowa
    Offline

    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

    • +
    • -
    • 1

    HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


    MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


    #19 tytusek

      Czempion

    • Autor tematu
    • Power User

    Reputacja: 229
    Wszechwidzący

    • Postów:822
    Offline

    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 ?


    • +
    • -
    • 0

    #20 Master Yoga

      Support Team | Mocarz

    • Support Team

    Reputacja: 136
    Zaawansowany

    • Postów:275
    • Lokalizacja:Magistrala Adresowa
    Offline

    Napisano 25.12.2015 20:44

    A

    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 ?

    Jasne możesz obliczyć długość stringu i wyświetlać hud dopiero gdy długość > 0

    Ale ja zrobiłbym warunek w natywie i zwracał "brak" lub nazwę
    • +
    • -
    • 0

    HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


    MKW0tb8.pngMKW0tb8.pngMKW0tb8.png





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

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

    Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
    Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
    Automatyczny Bot Levelowania Steam - LVLUPSteam.com
    CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg