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.
|
Gangi+CoD
#1
Napisano 17.06.2012 14:30
#2
Napisano 17.06.2012 17:07
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
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ę.
#3
Napisano 17.06.2012 17:20
#4
Napisano 17.06.2012 18:45
Lub zrobić tak, by w zmiennej zapisało nazwę gildii gracza (bez natywów)
#5
Napisano 17.06.2012 20:49
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)));
}
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ę.
#6
Napisano 18.06.2012 14:56
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.
#7
Napisano 18.06.2012 17:39
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ć.
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ę.
#8
Napisano 18.06.2012 18:35
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
#9
Napisano 19.06.2012 02:25
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ę.
#10
Napisano 20.06.2012 14:49
#11
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))
Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !
#12
Napisano 20.06.2012 17:15
[ 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
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych