Witam
Mam takie pytanie.
Jak zamienić id broni np (29 - knife) na nazwe CSW_KNIFE??
---------
jak przypisac tej tablicy wartosc 29
new nameweaponTarcza[8] nameweaponTarcza[] = 29
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.
|
Najlepsza odpowiedź G[o]Q, 02.09.2013 15:45
rozczaruje Cie
new temp[33] get_weaponname(2,temp,32); log_amx("---- %s ----- ",temp);
niestety nie wypisało nic o tarczy w zasadzie to poza "-" to nic nie wypisało do sprawdzania tarczy masz http://amxx.pl/dokum...get-user-shield
Przejdź do postu
Napisano 26.08.2013 14:16
Witam
Mam takie pytanie.
Jak zamienić id broni np (29 - knife) na nazwe CSW_KNIFE??
---------
jak przypisac tej tablicy wartosc 29
new nameweaponTarcza[8] nameweaponTarcza[] = 29
Napisano 26.08.2013 14:22
29 to już CSW_KNIFE
Zobacz sobie w amxxconst.ini
#define CSW_KNIFE 29
Napisano 26.08.2013 14:51
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 27.08.2013 12:28
ale jak przypisac do tej tablicy wartosc 29? w pierwszej komórce? ale tablica jest 8 elementowa. czyli zapisze to jako 2,9,_,_,_,_,_,_ ??
Napisano 27.08.2013 12:40
nie bo zapisujesz liczbe a liczba zajmuje jedna komórkę pamieci wiec musisz podac index w ktorym chcesz ta liczbe wpisac
Napisano 28.08.2013 12:31
czyli ta tablica nie musi być tablicą tylko normalną zmienną
Napisano 28.08.2013 12:44
no moze byc tablica ale nie musi bo zapisujesz jedna liczbe chyba ze chcesz zapisac rozne liczby dla roznych graczy wtedy musisz zrobic tablice o rozmiarze rownym get_maxplayers()+1 albo poprostu 33 elementową
Napisano 28.08.2013 12:59
Czyli jak chce zapisac liczbe to nie musi być to tablica. Okej. Ale co z tym?
new nameweaponTarcza[8];
if (RandomWpnId == 2) { get_weaponname(RandomWpnDoTarczy, nameweaponTarcza, 7) } else { nameweaponTarcza[] = 29 }
Wynika z tego że nameweaponTarcza musi być tablica bo używam get_weaponname
ale jak przypisac 29 do tarczy w taki sposob zeby dzialalo?
Napisano 28.08.2013 13:18
no moze byc tablica ale nie musi bo zapisujesz jedna liczbe chyba ze chcesz zapisac rozne liczby dla roznych graczy wtedy musisz zrobic tablice o rozmiarze rownym get_maxplayers()+1 albo poprostu 33 elementową
to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę
dla 32 graczy można zrobić 32 elementową tablicę nie trzeba robić 33 elementowej
nameweaponTarcza[] = 29
Trzeba podać komórkę w tablicy do której chcesz wpisać swoją liczbę.(tylko podczas robienia zmiennej możesz to pominąć gdyż kompilator sam sobie policzy jak duża ma być tablica)
Zarzuć całym kodem najlepiej
Napisano 28.08.2013 14:09
new nameweaponTarcza[8], nameweapon[8];
new challenger_name[32], challenged_name[32] get_user_name(g_challenger, challenger_name, 31) get_user_name(g_challenged, challenged_name, 31) client_print(0, print_chat, "ZGODZIL SIE!") g_knifeArena = true new RandomWpnId = g_ZestawyIdBroni[random(charsmax(g_ZestawyIdBroni))]; get_weaponname(RandomWpnId, nameweapon, 7); if (RandomWpnId == 2) { new RandomWpnDoTarczy = g_ZestawyIdBroniTarcza[random(charsmax(g_ZestawyIdBroniTarcza))] get_weaponname(RandomWpnDoTarczy, nameweaponTarcza, 7) give_item(g_challenger, "weapon_shield") give_item(g_challenger, nameweaponTarcza) cs_set_user_bpammo(g_challenger, RandomWpnDoTarczy, maxAmmo[RandomWpnDoTarczy]) give_item(g_challenged, "weapon_shield") give_item(g_challenged, nameweaponTarcza) cs_set_user_bpammo(g_challenged, RandomWpnDoTarczy, maxAmmo[RandomWpnDoTarczy]) } else { give_item(g_challenger, nameweapon) cs_set_user_bpammo(g_challenger, RandomWpnId, maxAmmo[RandomWpnId]) give_item(g_challenged, nameweapon) cs_set_user_bpammo(g_challenged, RandomWpnId, maxAmmo[RandomWpnId]) //nameweaponTarcza[] = 29 }
jesli randomwpn != 2 to chce przypisac do tablicy nameweaponTarza liczbe 29 (czyli id noza)
Napisano 28.08.2013 16:01
nameweaponTarcza[x] = 29
pod "x" podkładasz sobie cyfrę od 0 do 7 to twój wybór
Napisano 28.08.2013 18:53
no moze byc tablica ale nie musi bo zapisujesz jedna liczbe chyba ze chcesz zapisac rozne liczby dla roznych graczy wtedy musisz zrobic tablice o rozmiarze rownym get_maxplayers()+1 albo poprostu 33 elementową
to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę
dla 32 graczy można zrobić 32 elementową tablicę nie trzeba robić 33 elementowej
A wygody w tym tyle że można się przed monitorem spocić z nerwów
Napisano 28.08.2013 19:04
to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę
stracimy tyle pamięci że aż server sie pewnie wyłączy bo ramu i SWAPU braknie
tylko po co? po to zeby potem przy kazdej operacji robic cos takiego
indexy[id-1]
pozatym możemy przyjąć ze graczy mamy 33 bo id= 0 to server wiec tablica 33 elementowa to najlepsze wyjście.
pozwólcie że pozwole sobie wyczeprać temat. Więc:
- Nie da sie zamienic CSW_* na liczbę bo CSW_* już jest liczbą tyle ze "zapisaną" w enumie i kompilator rozumie ją za liczbe to tak jak ty patrzysz na kartke i tam masz napisane 2 i 'dwa' to rozumiesz to tak samo
- get_weaponname służy do pobrania nazwy i zarazem klasy broni czyli czegos takiego z przedrostkiem "weapon_" i tutaj musisz miec już tablice o długości najlepiej równej długości ciągowi
"weapon_smokegrenade"+1
bo to najdluzsza klasa broni jaka może zostac zwrócona.
Uwaga podaje przykład
new nazwa[]="weapon_smokegrenade"; get_weaponname(CSW_KNIFE,nazwa, charsmax(nazwa));
jest równoznaczne czemuś takiemu:
new nazwa[]="weapon_smokegrenade"; get_weaponname(29,nazwa, charsmax(nazwa));
i oba te kody wpiszą do nazwa "weapon_knife"
jeśli chcesz wpisac bron jako liczbe to wpisujesz poprostu:
new bron=29
lub
new bron=CSW_KNIFE
a o to chodzi od początku więc nie wiem coście się tak wszyscy uczepili tego get_weaponname skoro to nie ma nic wspólnego z tematem
Użytkownik G[o]Q edytował ten post 28.08.2013 19:08
Napisano 28.08.2013 19:54
A wygody w tym tyle że można się przed monitorem spocić z nerwów
stracimy tyle pamięci że aż server sie pewnie wyłączy bo ramu i SWAPU braknie
tylko po co? po to zeby potem przy kazdej operacji robic cos takiego
indexy[id-1]
pozatym możemy przyjąć ze graczy mamy 33 bo id= 0 to server wiec tablica 33 elementowa to najlepsze wyjście.
Przeczytajcie jeszcze raz:
to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę
dla 32 graczy można zrobić 32 elementową tablicę nie trzeba robić 33 elementowej
Stwierdziłem tylko iż to stwierdzenie:
no moze byc tablica ale nie musi bo zapisujesz jedna liczbe chyba ze chcesz zapisac rozne liczby dla roznych graczy wtedy musisz zrobic tablice o rozmiarze rownym get_maxplayers()+1 albo poprostu 33 elementową
Wprowadza w błąd gdyż wcale tego +1 nie musimy używać. W żadnym wypadku nie neguje tego tylko stwierdzam że tego nie trzeba robić acz można.
Napisano 28.08.2013 20:06
to +1 to ulatwienie które powinno sie stosowac
Użytkownik G[o]Q edytował ten post 28.08.2013 20:07
Napisano 28.08.2013 22:16
to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę
jeden plus
to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę
+ wygodniejsze
+ komórka dla serwera (uwierz że przydatne)
+ ładniej wyglądające
Napisano 28.08.2013 22:22
Donciak tak wiem o tym bardzo dobrze ale pisząc o tym +1 nie miałem zamiaru nikogo do tego nakłaniać tylko stwierdzić iż nie trzeba tego robić
W żadnym wypadku nie neguje tego tylko stwierdzam że tego nie trzeba robić acz można.
Napisano 28.08.2013 23:58
DarkGL to mój autorytet.
skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować
Napisano 29.08.2013 09:07
Tutaj cały kod. Wnioskuje z tego że nameweapon musi być tablicą, bo zapisuje do niej nazwę broni z get_weaponname żeby potem dodać tą broń.
new nameweaponTarcza[8], nameweapon[8]; new g_ZestawyIdBroni[] = {1,2,3,5,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,26,27,28,29,30}; new g_ZestawyIdBroniTarcza[] = {1,11,16,17,26,29}; new const maxAmmo[31]={0,52,0,90,1,32,1,100,90,1,120,100,100,90,90,90,100,120,30,120,200,32,90,120,90,2,35,90,90,0,100};
Akceptuj() { new challenger_name[32], challenged_name[32] get_user_name(g_challenger, challenger_name, 31) get_user_name(g_challenged, challenged_name, 31) new RandomWpnId = g_ZestawyIdBroni[random(charsmax(g_ZestawyIdBroni))]; get_weaponname(RandomWpnId, nameweapon, 7); if (RandomWpnId == 2) { new RandomWpnDoTarczy = g_ZestawyIdBroniTarcza[random(charsmax(g_ZestawyIdBroniTarcza))] get_weaponname(RandomWpnDoTarczy, nameweaponTarcza, 7) give_item(g_challenger, "weapon_shield") give_item(g_challenger, nameweaponTarcza) cs_set_user_bpammo(g_challenger, RandomWpnDoTarczy, maxAmmo[RandomWpnDoTarczy]) give_item(g_challenged, "weapon_shield") give_item(g_challenged, nameweaponTarcza) cs_set_user_bpammo(g_challenged, RandomWpnDoTarczy, maxAmmo[RandomWpnDoTarczy]) engclient_cmd(g_challenger, nameweaponTarcza) engclient_cmd(g_challenged, nameweaponTarcza) } else { give_item(g_challenger, nameweapon) cs_set_user_bpammo(g_challenger, RandomWpnId, maxAmmo[RandomWpnId]) give_item(g_challenged, nameweapon) cs_set_user_bpammo(g_challenged, RandomWpnId, maxAmmo[RandomWpnId]) engclient_cmd(g_challenger, nameweapon) engclient_cmd(g_challenged, nameweapon) //nameweaponTarcza[] = 29 } }
Czyli jeśi CSW_KNIFE to 29, a 29 to CSW_KNIFE to jeżeli walne coś takiego:
public CurWeapon(id) { new weaponType = read_data(2) if (weaponType == 29) return PLUGIN_CONTINUE return PLUGIN_CONTINUE }
to wtedy zadziała?
Bo znalazłem to
http://amxx.pl/dokum...s-get-weapon-id
Użytkownik Lolunio edytował ten post 29.08.2013 09:12
Napisano 31.08.2013 17:10
Tak, kod "zadziała", choć nie ma żadnego sensu, czyt. nic nie zmienia.
Funkcja cs_get_weapon_id zwraca identyfikator typu broni na podstawie identyfikatora bytu, będącego bronią.
Jednak zamiast stosować nieczytelny kod
if (weaponType == 29)
wprowadzono definicje stałych, by łatwiej identyfikować m.in. właśnie bronie:
if (weaponType == CSW_KNIFE)
0 użytkowników, 0 gości, 0 anonimowych