←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Inteligentne menu

  • +
  • -
1stADXionC's Photo 1stADXionC 17.06.2017

Witam.

Tworzę menu:

 

public Menu(id)
{
new menu = menu_create("Wybierz opcje", "Menu_Handler")


menu_additem(menu, "Moje Bronie")


menu_display(id, menu)
}


public Menu_Handler(id, menu, item)
{
switch(item)
{
case 0:    MojeBronie(id)
}
}

I teraz pytanie, jak zrobić aby po wybraniu " Moje Bronie " otworzyło się menu:

 

( Gdy klasa posiada broń, tylko Famasa - klasa Admirał )

 

 

public Menu(id)
{
new menu = menu_create("Wybierz opcje", "Menu_Handler")


menu_additem(menu, "FAMAS")


menu_display(id, menu)
}

( Gdy klasa posiada broń, AWP, Deagle - klasa Snajper )

public Menu(id)
{
new menu = menu_create("Wybierz opcje", "Menu_Handler")


menu_additem(menu, "AWP")
menu_additem(menu, "DEAGLE")

menu_display(id, menu)
}

Chyba dobrze wytłumaczyłem :)

Z góry dzięki!

Quote

  • +
  • -
Robiin's Photo Robiin 17.06.2017

Pobierasz id broni, którą ma klasa i ilość broni, w pętli tworzącej menu_additem dodajesz zmienną formatowaną wcześniej jako nazwa broni, która zależeć będzie od id broni. Ilość wykonania pętli jako ilość broni, nie zapominając o knife.

Quote

  • +
  • -
1stADXionC's Photo 1stADXionC 17.06.2017

Mógłbyś mnie bardziej nakierować jak to zrobić? Bo zbytnio nie wiem jak do tego się zabrać
Quote

  • +
  • -
d0naciak's Photo d0naciak 18.06.2017

new bronie[32], ilosc, nazwa_broni[32];
get_user_weapons(id, bronie, ilosc); //zwraca do tablicy bronie jakie posiada gracz, ilosc - ilosc broni
 
for(new i = 0; i < ilosc; i++) { //petla po kazdej broni jaką posiada gracz
get_weaponname(bronie[i], nazwa_broni, 31); //zwracamy do tablicy nazwa_broni nazwę broni jaką posiada gracz w formacie np. weapon_m4a1
replace(nazwa_broni, 31, "weapon_", ""); //usuwamy przedrostek weapon_
strtoupper(nazwa_broni); //ustawia wielkie litery, czyli z m4a1 robi M4A1
 
menu_additem(menu, nazwa_broni); //dodaje bron do menu
}
Quote

  • +
  • -
1stADXionC's Photo 1stADXionC 18.06.2017

Dzięki, wszystko ładnie działa.

A co muszę zrobić żeby po wybraniu x broni przechodziło do menu z skinami do x broni.

 

 

public WybierzBron(id)
{
if(!is_user_alive(id))
return 0;


new bronie[32], ilosc, nazwa_broni[32];
get_user_weapons(id, bronie, ilosc);


new menu = menu_create("\yWybierz bron -", "WybierzBron_Handler");


for(new i = 0; i < ilosc; i++) 
{
get_weaponname(bronie[i], nazwa_broni, 31); 
replace(nazwa_broni, 31, "weapon_", ""); 
strtoupper(nazwa_broni); 


menu_additem(menu, nazwa_broni); 
}
menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Wstecz");
menu_display(id, menu);
return 1;
}


public WybierzBron_Handler(id, menu, item)
{
switch(item)
{
case 0: MojeSkiny(id)
}
}


public MojeSkiny(id)
{
if(!is_user_alive(id))
return 0;


Wczytaj(id);


new menu = menu_create("\yMoje Skiny -", "MojeSkiny_Handler");
new text[33], skin;
for(new i=1; i<=ILOSC_SLOTOW; i++)
{
skin = ArrayGetCell(aSkiny, id*ILOSC_SLOTOW+i)
if(!skin)
formatex(text, 32, "Pusty slot");
else
{
get_skin_name(skin, text, 32);
}
menu_additem(menu, text);
}
menu_setprop(menu, MPROP_NEXTNAME, "Dalej");
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Wstecz");
menu_display(id, menu);
return 1;
}

 


Edited by 1stADXionC, 18.06.2017 10:58.
Quote

  • +
  • -
d0naciak's Photo d0naciak 18.06.2017

Zależy na jakiej podstawie przechowujesz skiny do broni.

Quote

  • +
  • -
1stADXionC's Photo 1stADXionC 18.06.2017

Właśnie nie mam sposobu, cały czas myślę nad rozwiązanie
Quote

  • +
  • -
d0naciak's Photo d0naciak 19.06.2017

Nie ma co się zastanawiać, podział jest na pewno na bronie - każda broń ma swoje skiny. Najlepiej "przypisywać broniom" skiny, musisz wiedzieć ile skinów jest w danej broni, potem gdy gracz np. wybierze interesującą go broń, to sprawdza co wybrał i na podstawie broni wyciąga skiny które gracz posiada - chyba żadna filozofia, gorzej napisać :P

Quote