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

Gangi+CoD


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

#1 Chmielik

    Profesjonalista

  • Użytkownik

Reputacja: 8
Nowy

  • Postów:153
  • GG:
  • Lokalizacja:PgW
Offline

Napisano 17.06.2012 14:30

Witam. Byłby ktoś w stanie pomóc mi wykonać pewien zabieg. Chciałbym wyciągnąć z pluginu jb-gangs funkcję, która zwracałaby aktualny gang w którym znajduję się gracz, i zapisać ją jaku natyw.

Załączone pliki


  • +
  • -
  • 0

#2 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 17.06.2012 17:07

Może być ID gangu zwracane?

jb_gangs.inc:
#if defined _jb_gangs_included
#endinput
#endif
#define _jb_gangs_included

#pragma reqlib jb_gangs
#if !defined AMXMODX_NOAUTOLOAD
#pragma loadlib jb_gangs
#endif

/**jb_get_user_gang
* @param id ID gracza
* @return Zwraca ID gangu podangego gracza. */
native jb_get_user_gang(id);


Dodajesz do jb_gangs pluginu:
public plugin_natives() {
register_library ("jb_gangs")
register_native("jb_get_user_gang", "n_get_user_gang")
}
public n_get_user_gang(plugin, params) {
new id = get_param(1);
if(id<0||id>32)
log_error(MX_ERR_MEMACCESS, "Invalid player ID specified");
if(!is_user_connected(id))
log_error(AMX_ERR_NOTFOUND, "Player not found");

return g_iGang[id];
}


I powinno śmigać ;)

Użytkownik GwynBleidD edytował ten post 17.06.2012 17:09

  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#3 Chmielik

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:153
  • GG:
  • Lokalizacja:PgW
Offline

Napisano 17.06.2012 17:20

Dzięki, zaraz testuje
  • +
  • -
  • 0

#4 Chmielik

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:153
  • GG:
  • Lokalizacja:PgW
Offline

Napisano 17.06.2012 18:45

Hmm, dało by się przerobić tak by ID konwertowało na nazwę gangu?

Lub zrobić tak, by w zmiennej zapisało nazwę gildii gracza (bez natywów)
  • +
  • -
  • 0

#5 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 17.06.2012 20:49

Najprościej, żeby zrobić jak największą funkcjonalność natywów, jest dorobić jeszcze jeden natyw pobierający nazwę gangu dla podangego id gangu, wtedy wywoływałbyś to np. tak:
jb_get_gang_name(jb_get_user_gang(id), name, charsmax(name))


Do jb_gangs dodajesz wtedy:
/**jb_get_gang_name
* @param gid ID gangu
* @param name Tablica do zapisania nazwy gangu
* @param len Maksymalna długość nazwy gangu
* @return Zwraca długość zapisanej do zmiennej nazwy gangu lub -1 dla nieistniejącego gangu o podanym ID */
native jb_get_gang_name(gid, name[], len);


Do plugin_natives dodajesz:
register_native("jb_get_gang_name", "n_get_gang_name") 


i nastęnie tworzysz obsługę natywa:
public n_get_gang_name (plugin, params) {
new aData[ GangInfo ];
if(!ArrayGetArray( g_aGangs, get_param(1), aData ))
return -1;

return set_array(2, aData[GangName], min(63, get_param(3)));
}

  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#6 Chmielik

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:153
  • GG:
  • Lokalizacja:PgW
Offline

Napisano 18.06.2012 14:56

Hmm, nadal coś nie tak z HUDem :(

najpierw daje globalny

new gang_gracza[32];

później
public PokazGang(id)
{
new gang_gracza[id] = jb_get_gang_name(id);

id -= ZADANIE_POKAZ_GANG;

if(!is_user_alive(id))
{
remove_task(id+ZADANIE_POKAZ_GANG);
return;
}

set_hudmessage(255, 215, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "^n^n^n^n^n^n^n[Gang: %i]", gang_gracza[id]);
}


I wyskakuje błąd na linii
    new gang_gracza[id] = jb_get_gang_name(id);

Must be a constant expression.
  • +
  • -
  • 0

#7 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 18.06.2012 17:39

Ojj wszystko źle robisz.

Funkcja jb_get_gang_name przyjmuje 3 parametry
1. gid - ID gangu, którego nazwę chcesz uzyskać, NIE ID GRACZA !!
2. name - tablica (string), do której zostanie zapisana nazwa gangu
3. len - maksymalna długość nazwy, którą chcesz pobrać. NIE może być większa, niż tablica podana w name!!

Podałem zresztą post wyżej przykład użycia, czyli:
jb_get_gang_name(jb_get_user_gang(id), name, charsmax(name))

Co pobiera Ci do zmiennej name nazwę gangu gracza, podanego w id.

Drugi błąd, który popełniasz: deklaracja tablicy, czyli to:
new gang_gracza[id] =

Stąd się bierze błąd. Jako wielkość tablicy nie możesz podawać zmiennej, musi być to stała liczba, w tym przypadku daj 64, czyli:
new gang_gracza[64]

Dodatkowo, do tablicy bezpośrednio nie przypiszesz w ten sposób wartości funkcji (funkcja nie może zwrócić tablicy).

Trzeci błąd:
ShowSyncHudMsg(id, SyncHudObj, "^n^n^n^n^n^n^n[Gang: %i]", gang_gracza[id]); 

Tu również id w tablicy jest błędem, powinieneś podać tą tablicę całkiem bez indeksu, czyli:
ShowSyncHudMsg(id, SyncHudObj, "^n^n^n^n^n^n^n[Gang: %i]", gang_gracza); 


Widzę, że porywasz się z motyką na słońce trochę... Zacznij programowanie od jakichś prostszych pluginów, od całkowitych podstaw. Np. jak pobrać nick gracza, jego ip, steamID. Jak dać komuś nieśmiertelność itp. Edycja modu, takiego jak gangi JB, a nawet korzystanie z prostych natywów jak na razie Cię przerasta, jak widać.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#8 Chmielik

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:153
  • GG:
  • Lokalizacja:PgW
Offline

Napisano 18.06.2012 18:35

Zrobiłem tak jak napisałeś.

public PokazGang(id, name)
{
new gang_gracza[id] = jb_get_gang_name(jb_get_user_gang(id), name, charsmax(name))

id -= ZADANIE_POKAZ_GANG;

if(!is_user_alive(id))
{
remove_task(id+ZADANIE_POKAZ_GANG);
return;
}

set_hudmessage(255, 215, 0, 0.02, 0.23, 0, 0.0, 0.3, 0.0, 0.0);
ShowSyncHudMsg(id, SyncHudObj, "^n^n^n^n^n^n^n[Gang: %i]", gang_gracza);
}


Argument type mismatch (argument 2)
Must be a constant expression.

PS. Ten natyw za prosty nie jest :)
  • +
  • -
  • 0

#9 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 19.06.2012 02:25

Nie zrobiłeś tak, jak pisałem, przeczytaj jeszcze raz posta mojego, a najlepiej jego ostatni akapit. Jeśli koniecznie potrzebujesz tego pluginu, napisz w Scripting AMXX -> Pluginy z prośbą, aby Ci go ktoś napisał, bo wątpię, żebyś sam podołał z tak małym doświadczeniem i wiedzą. Nie zrozum mnie źle, nie chcę Cię urazić pisząc, że nic nie umiesz, po prostu każdy od czegoś zaczynał :)
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#10 Chmielik

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:153
  • GG:
  • Lokalizacja:PgW
Offline

Napisano 20.06.2012 14:49

Jak na razie nikt nie podołał temu zadaniu :) Jeżeli byś mógł mi już ostatecznie w tym pluginie pomóc, zapraszam - http://amxx.pl/topic...natywu-pod-hud/
  • +
  • -
  • 0

#11 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 20.06.2012 15:42

jb_get_gang_name(jb_get_user_gang(id),gang_gracza,charsmax(gang_gracza))
zamiast
new gang_gracza = jb_get_gang_name(jb_get_user_gang(id),name,charsmax(name))

  • +
  • -
  • 1

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#12 Chmielik

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 8
Nowy

  • Postów:153
  • GG:
  • Lokalizacja:PgW
Offline

Napisano 20.06.2012 17:15

Skompilowało się bez błędów, natomiast teraz nie wyświetla HUD.

[
L 06/20/2012 - 18:18:01: [AMXX] Displaying debug trace (plugin "jb_gangs_1.1_admins.amxx")
L 06/20/2012 - 18:18:01: [AMXX] Run time error 10: native error (native "get_param")
L 06/20/2012 - 18:18:01: [AMXX]    [0] jb_gangs_1.1_admins.sma::n_get_user_gang (line 258)
Zaraz dodam z debugu

Użytkownik Chmielik edytował ten post 20.06.2012 17:21

  • +
  • -
  • 0




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

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