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

[ROZWIĄZANE] jak zamienic id broni na nazwe CSW_*


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


  • Zamknięty Temat jest zamknięty
28 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

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

  • +
  • -
  • 0

#2 dasiek

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 2 077
Godlike

  • Postów:5 706
  • Imię:Adaś
  • Lokalizacja:No teraz trochę dalej od WWy
Offline

Napisano 26.08.2013 14:22

29 to już CSW_KNIFE

Zobacz sobie w amxxconst.ini

#define CSW_KNIFE		29

  • +
  • -
  • 0

#3 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 26.08.2013 14:51

Możesz komórce tablicy przypisać wartość, nameweaponTarcza[0] = 29
Zapisuje tą wartość w pierwszej komórce.
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#4 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

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,_,_,_,_,_,_ ??


  • +
  • -
  • 0

#5 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

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


  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#6 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 28.08.2013 12:31

czyli ta tablica nie musi być tablicą tylko normalną zmienną


  • +
  • -
  • 0

#7 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

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ą


  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#8 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

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?

 


  • +
  • -
  • 0

#9 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

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ę :D

 

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


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#10 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

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)

 


  • +
  • -
  • 0

#11 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 28.08.2013 16:01

nameweaponTarcza[x] = 29

pod "x" podkładasz sobie cyfrę od 0 do 7 to twój wybór :D


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#12 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

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ę :D

 

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


  • +
  • -
  • 0

#13 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 28.08.2013 19:04

to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę :D

 
comment_Ux9g1G8G2usoPkOKlJjCO6ek7G6lt7J2

stracimy tyle pamięci że aż server sie pewnie wyłączy bo ramu i SWAPU braknie xD

 

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

  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#14 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

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.


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#15 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

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

  • +
  • -
  • 1
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#16 d0naciak

    Godlike

  • Power User

Reputacja: 1 029
Hero

  • Postów:2 414
  • GG:
  • Steam:steam
  • Imię:Dawid
  • Lokalizacja:Kotlarka
Offline

Napisano 28.08.2013 22:16

to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę :D

 jeden plus


to +1 jest nie potrzebna a sprawi tylko że marnujemy jedną komórkę :D

 

+ wygodniejsze

+ komórka dla serwera (uwierz że przydatne)

+ ładniej wyglądające ^^


  • +
  • -
  • 0

#17 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

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ć  :P


W żadnym wypadku nie neguje tego tylko stwierdzam że tego nie trzeba robić acz można.

  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#18 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 28.08.2013 23:58

Nie trzeba, ale ta oszczędność jednej komórki nie wynagrodzi nam dziesiątek jak nie setek odejmowania.
sebul (29.08.2013 09:10):
Dlatego ja bym powiedział, że trzeba tworzyć tablicę o jedną większą, wyżej zostało już wytłumaczone dlaczego.

  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#19 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

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

  • +
  • -
  • 0

#20 Gość_21977_*

  • Gość

Reputacja: 0

Offline

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)





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

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