Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

MENU - Wyswietlanie nazwy broni. for, parse czy jak?


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

#1 camilost

    ^ BotQ - STER.owiec ^

  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 01.05.2016 14:48

Wyciągnąłem z moda CSGO, menu z wyborem broni, ale nie potrafię ogarnąć wyświetlenie nazw modeli dla wybranej broni

Powinno działać następująco:
1. Wyświetla nam menu nazw broni podstawowej
2. Wybieramy np. AK47
3. Wyświetla nazwy modeli dla AK47
4. Wyświetla menu nazw pistoletów
5. Wybieramy np. GLOCK
6. Wyświetla menu nazw modeli dla GLOCKa

Jakieś propozycje?

Zdefiniowałem nazwy broni (tej co wybieramy), aby czytać z pliku z danego numerka tylko model o danym "id" np. AK47 - 28, w pliku są przedstawione następująco:

Spoiler


btw. teraz wyczaiłem, że dodatkowo źle przechwytuje SelectedWeapon[id], z handlera menu. (data wyswietla ok, ale jak przechwytuje to jej nie wrzuca do SelectedWeapon, i potem menu nie potrafi załapać, jakie jest aby wyświetlić w menu.


  • +
  • -
  • 0

#2 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 01.05.2016 16:14

Jakieś propozycje?

Dynamiczne tablice
  • +
  • -
  • 1

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


#3 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 01.05.2016 16:37

Bardziej to mi chodzi o zastosowanie forów czy coś, aby wyświetlić te dostępne modele dla dane broni :D
ten przechwyt "data" to da się pewnie jakoś inaczej ;d
  • +
  • -
  • 0

#4 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 01.05.2016 17:40

Amxx oferuje ci funkcję zwracająca wielkość tablicy dynamicznej, dzięki czemu łatwo możesz określić ilość powtórzeń.
Pobierz sobie cała linię z pliku.
Funkcja parse umożliwia ci pobranie arg z tekstu, czyli jeśli zrobisz to tak:
Parse(szLine, szID,2,szName, 29)
Otrzymasz
szID = "28"
szName "Outlaw"

Nazwę modelu dodajesz do tablicy.

A co do zastosowania pętli.
Użyj funkcji o której wspomniałem wczesniej.
Zmienna licznikowa pozwoli ci odnieść sie do kolejnych elementów tablicy.
Pobraną wartość dodajesz do menu i gotowe :)
  • +
  • -
  • 1

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


#5 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 01.05.2016 17:51


Hmm... Już mniej więcej sam zrobiłem, bez dynamicznych.
Tylko pytanie, dlaczego mi zwraca dziwne wyniki w tablicy SelectedWeapon[id]

to mam w handlerze, wybieram ak i zarówno data jak i SelectedWeapon wynosi 28 (prawidlowo), a potem się chrzani jak w Menu odczytuje


  • +
  • -
  • 0

#6 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 01.05.2016 17:56

Raz używasz SelectedWeapon jako zmienna typu integer a kolejny już jako string.
  • +
  • -
  • 1

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


#7 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 01.05.2016 18:06

// jestem idiotą. xD pewnie przez stresy przed matura

Spoiler

 

Ostatnie czego no ogar:

 

 

Zapis nvault, chciałbym każdą broń zapisać do pliku na nick gracza, tylko jak zrobić, by się nie pierdzielić z %d, tylko dać for'a?
Tablica wygląda tak:

UsingWeapon[33][31]

Do każdego id gracza jest przypisane ID od broni (30 to p90 - MAX, więc 31 indexów).

Wychodzi - ma zapisywać zmienną wybranej broni

Wchodzi - ma wczytywać

Tak, aby zapisywało i odczytywało w poniższy sposób (tutaj już bym potrzebował kod, jakbym mógł prosić ew. zaś jakaś podpowiedź :P

//Zapis
formatex(vaultdata, 127, "ON%dWPNS#%d#%d#%d#%d#%d#%d#%d", Skiny[id], UsingWeapon[id][1], UsingWeapon[id][2], UsingWeapon[id][3], UsingWeapon[id][4], UsingWeapon[id][5], UsingWeapon[id][6], UsingWeapon[id][7]); // i tak do 30 :D

PS. Nie ogarniam działania explode od DarkGL temu piszę :D


  • +
  • -
  • 1

#8 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 02.05.2016 08:47

No tutaj masz po prostu operację na stringach.
Przy zapisie dajesz pętlę + konkatenacje.
Przy odczycie użyj jakiejś funkcji rozdzielającej string na 2 części przy pierwszym występowaniu danego znaku ( z tego co pamiętam to w Pawnie powinna być taka funkcja jak strtok <-- sprawdź w dokumentacji ).
Ustalmy że pierwsza część będzie nazywała sie A a druga B. Część A a zamieniasz na zmienn typu int ( tutaj pomoże ci funkcji str_to_num ). A zapomniałem wczesniej dodać byś stworzył sobie jakąś zmienną pomocniczą. Część B przypisz bądź skopiuj do tablicy pomocniczej. Oczywiście wszystko ma się odbywać w pętli.

New szLine[100];

New pomocnicza = szLine;

For( New i = 0; i < zakres; i++)
{
Nie pamiętam argumentów funkcji, więc zademonstruje ci tylko jej działanie, na skaldnie nie zwracaj uwagi :)


New szA[50],szB[100]
Strtok(pomocnicza,szA,49,szB,49,'#')

UsingWeapon[ID][i] = str_to_num(szA)

Copy(pomocnicza, charsmax(szB),szB) lub pomocnicza = szB przy czym pawn nie pozwoli ci przypisać wartości tych zmiennych gdy wielkość obu zmiennych będzie się różnić.
}

Do roboty :)
  • +
  • -
  • 1

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


#9 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 02.05.2016 10:27

Nie dodaje, innych wartości w String, co za tym idzie, w formatex(vaultdata), dodaje jakby tylko Skiny[id], bo wyniki print_console:
 

 

i[ZERO] wynosi D 2 (SKINY 0,1 - OFF 2 - ON)
i[1] wynosi D: 0 .
i[2] wynosi D: 0 .
i[3] wynosi D: 0 .
i[4] wynosi D: 0 .
i[5] wynosi D: 0 .
i[6] wynosi D: 0 .
i[7] wynosi D: 0 .
i[8] wynosi D: 0 .
i[9] wynosi D: 0 .
i[10] wynosi D: 0 .
i[11] wynosi D: 38 .
i[12] wynosi D: 0 .
i[13] wynosi D: 0 .
i[14] wynosi D: 0 .
i[15] wynosi D: 0 .
i[16] wynosi D: 0 .
i[17] wynosi D: 0 .
i[18] wynosi D: 0 .
i[19] wynosi D: 0 .
i[20] wynosi D: 0 .
i[21] wynosi D: 0 .
i[22] wynosi D: 21 .
i[23] wynosi D: 0 .
i[24] wynosi D: 0 .
i[25] wynosi D: 0 .
i[26] wynosi D: 35 .
i[27] wynosi D: 0 .
i[28] wynosi D: 2 .
i[29] wynosi D: 14 .
i[30] wynosi D: 0 .
[ZAPISANO] KEY: "Player"-wpns  DATA: 2 // powinny być tutaj powyższe liczby dla danego i (razem z zerami).


  • +
  • -
  • 0

#10 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 02.05.2016 10:54

dodaje jakby tylko Skiny[id],

Nie używaj tej samej zmiennej w formatex i num_to_str.
  • +
  • -
  • 0

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


#11 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 02.05.2016 11:10

Oki działa
Data zapsuje jako np: ON2#0#0#0#14#0#0#30#0#0#0#0#22#29

liczb z # jest tyle ile ID max broni ;)

teraz pora, ogarnąć Load, bo w ogóle nie czyta mi nic


  • +
  • -
  • 0

#12 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 02.05.2016 12:20

new out[sizeof(AllWeapon)][4];
explode(vaultdata,'#',out,AllWeapon,3);
for(new i = 0 ; i < AllWeapon;i++){

Co to jest AllWeapon ??
Bo widzę, że raz zwracasz tego rozmiar, a potem zwyczajnie używasz.

P.S Piszesz maturę z informatyki :) ??
  • +
  • -
  • 0

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


#13 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 02.05.2016 23:50

AllWeapon to wszystkie bronie jakie wyczytało z pliku skins.cfg, tam akurat źle go użyłem, bo chciałem, żeby sprawdził wszystkie ID(do max, ale max d 30 więc 31 daje.

Kurde prawie wszystko pięknie, ale mam problem, explode pobiera mi S1, a ma pobierać tylko to co po #, co za tym idzie Out[i=30] nie kopiuje nic.
Jak wyciągnąć te S1, żeby było podobnie jak w containi? i explode czytał tylko po # ?
Hmm... albo prościej - wyciągnąć to S% i z vaultdata je usunąć, tylko jak? :D
print_console (do sprawdzeń):

Spoiler

 

kod Load i Save

Spoiler

 


  • +
  • -
  • 0

#14 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 03.05.2016 00:34

Jak wyciągnąć te S1,

Hmm... albo prościej - wyciągnąć to S% i z vaultdata je usunąć, tylko jak?

 
Split favicons.png ,
strtok favicons.png
a potem dajesz explode().
  • +
  • -
  • 0

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


#15 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.05.2016 02:10

@EDIT

Spoiler

new out[31][3];  
// zmieniłem na

new out[32][3];  

i działa ok, a for i tak jest do i < 31, bo bron max to 30 jak już pisałem.

Pozostało mi menu jeszcze - sprawdzanie czy jest skin do dane broni (AllWeapons)
Załóżmy w tym (w komentarzach dałem co i jak:

Spoiler

Chcę sprawdzić, czy jest wczytany z pliku model GRANATA, FLASHA, SMOKE'a czy też C4 (nie ma ich dodanych, bo tylko kosy są), ale jak potem dodam to żeby je wyświetliło, a tak to żeby ich nie wyświetlało jak ich nie dodałem w skins.cfg

Spoiler


 


  • +
  • -
  • 0

#16 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 03.05.2016 10:26

Co od razu rzuca się w oczy to :
 

new const OtherWeaponNames[][][] =
{
    { "KNIFE", "weapon_knife", "29" },    
    { "C4", "weapon_c4", "6" },
    { "HEGRENADE", "weapon_hegrenade", "4" },
    { "FLASHBANG", "weapon_flashbang", "25" },
    { "SMOKEGRENADE", "weapon_smokegrenade", "9" }
};

Twoje użycie :

if(containi(OtherWeaponNames[i][2], Weapons[OtherWeaponNames[i][2]])){

Widziałeś kiedyś tekst w indexie ??

 

 

Co do pytania drugiego. 

Stwórz sobie kilka zmiennych logicznych.

Sprawdzaj za pierwszym razem czy w lini występuję np. "KNIFE"

jeśli tak to dajesz zmienną na true;

Przy wyświetlaniu menu daj warunek;

if(moja_zmienna == true)
      menu_additem(menu,"KOSY")

albo wyświetlaj każdą opcje, tylko blokuj jej użycie w menu callback. ( Opcję będzie szara, będzie istniała lecz nie będzie można jej wybrać )


  • +
  • -
  • 0

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


#17 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.05.2016 11:01

Wiemz tym stringiem, potem zmieniłem str_to_num, bo kombinowałem i doszedłem już do takiego etapu, że sprawdziło w Weapons[%] ale linijke, a nie ID broni
Bez dodatkowych zmiennych się na pewno da, tylko odpowiednia konwersja i sprawdzenie czy wczytało ;c
Już no nic, mam cały dzień :D Kombinuje dalej

Teraz mam takie (już jakis sukces :D)

Tyle że wpn[] czyta z linijki 29, a chce, żeby sprawdził czy w jakiejś linijce jest to id broni, wtedy wypisuje i jak inna znajdzie to tez wypisuje ;P

Spoiler

 


  • +
  • -
  • 0

#18 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 03.05.2016 11:12


for(new a; a < sizeof(AllWeapon); i++)

Spójrz na tą linię. Już wiesz czemu ci Crash'owało ?


  • +
  • -
  • 1

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


#19 camilost

    ^ BotQ - STER.owiec ^

  • Autor tematu
  • Power User

Reputacja: 430
Wszechobecny

  • Postów:968
  • GG:
  • Steam:steam
  • Imię:Kamil
  • Lokalizacja:Tychy
Offline

Napisano 03.05.2016 12:17

:D dzięki :D
Wyświetla mi nóż (KNIFE, bo jest zawarty w Weapons[%], ponieważ jest w pliku skins.cfg zawarty 6razy, tyle mi razy go w menu wyświetla (ITEM KNIFE od 1. do 6.)
Próbowałem break; ale nie podołałem, bo jedyne co to mi blokowało całość - nic nie wyświetliło :D
Da się jakoś bez nowej zmiennej? :D

PS. Taka kolejność for'ów ponieważ w odwrotnej kolejności, wywalało z serwera - Reliable channel overflowed (5 broni x 43(wpisy w AllWeapon - zapytania))

a przy 43 AllWeapon / 5 id broni działa ... mniej więcej :D


  • +
  • -
  • 0

#20 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 115
Zaawansowany

  • Postów:250
  • GG:
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 03.05.2016 12:58

Da się jakoś bez nowej zmiennej?

Jasne.
Sprawdzaj podczas zapisywania ID czy nie masz już takiej wartości w tablicy.
  • +
  • -
  • 0

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





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

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