Screen Menu do klas
BoB0_
16.08.2011
Siemka.
Chciałem sobie zrobić dla zabawy screen menu z klasami z funkcją od R3X'a ale pod zmienieniu kodu plugin się nie wczytuje a errorów brak
Oto kawałek który zmieniłem:
Tutaj tylko pozamieniałem menu na smenu, ale usuwałem Poprzednia strona itp i próbowałem coś poprawić mimo wszystko dalej nie działało mimo że kompilowało się bez problemów. Może pokazać jak to dobrze zrobić i czy w ogóle takie menu może czytać klasy.
Chciałem sobie zrobić dla zabawy screen menu z klasami z funkcją od R3X'a ale pod zmienieniu kodu plugin się nie wczytuje a errorów brak
Oto kawałek który zmieniłem:
public WybierzKlase(id)
{
new menu = smenu_create("Wybierz klase:", "WybierzKlase_Handle");
new klasa[50];
for(new i=1; i <= ilosc_klas; i++)
{
WczytajDane(id, i);
format(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
smenu_additem(menu, klasa);
}
WczytajDane(id, klasa_gracza[id]);
smenu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
smenu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
smenu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
smenu_display(id, menu);
client_cmd(id, "spk QTM_CodMod/select");
}
public WybierzKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item++ == MENU_EXIT)
{
smenu_destroy(menu);
return PLUGIN_CONTINUE;
}
if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
return PLUGIN_CONTINUE;
nowa_klasa_gracza[id] = item;
if(klasa_gracza[id])
client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}
return PLUGIN_CONTINUE;
}
Tutaj tylko pozamieniałem menu na smenu, ale usuwałem Poprzednia strona itp i próbowałem coś poprawić mimo wszystko dalej nie działało mimo że kompilowało się bez problemów. Może pokazać jak to dobrze zrobić i czy w ogóle takie menu może czytać klasy.
Fili:P
17.08.2011
W screen menu może być max. 8 elementów menu. W wybierz klasę nie ma żądnych funkcji dotyczących menu, więc nie może to działać.
BoB0_
17.08.2011
Czy da się to w ogóle zrobić?
Klas mam 6.
Jeżeli się da to podrzućcie kod jak to ma wyglądać. Będę bardzo wdzięczny.
Klas mam 6.
Jeżeli się da to podrzućcie kod jak to ma wyglądać. Będę bardzo wdzięczny.
Nomaf
17.08.2011
Fili, pozycji możesz sobie upchnąć ile chcesz, byle by tylko starczyło RAM'u
Bobo, jak wywołujesz menu? Poprzez wpisanie komendy, tak? To źle, trzeba przez klawisz, który się przytrzymuje. Chociażby E.
Bobo, jak wywołujesz menu? Poprzez wpisanie komendy, tak? To źle, trzeba przez klawisz, który się przytrzymuje. Chociażby E.
BoB0_
17.08.2011
Wybierz klase jest przypisane do komendy /klasa. Ale na razie nie w tym problem.
Gdy dodam to co jest teraz do kody Codmod'a to plugin się nie wczytuje
W liście pluginów pisz error a wszystkie klasy i perki są automatycznie wyłączane.
Gdy dodam to co jest teraz do kody Codmod'a to plugin się nie wczytuje
W liście pluginów pisz error a wszystkie klasy i perki są automatycznie wyłączane.
BoB0_
21.08.2011
Pisze tylko
Może trzeba jakieś pliki wrzucić na serwer?
Dodaje w załączniku .sma może ktoś pomoże.
bad loadczyli nic ciekawego
Może trzeba jakieś pliki wrzucić na serwer?
Dodaje w załączniku .sma może ktoś pomoże.
Załączone pliki
R3X
21.08.2011
bad load jest wręcz arcyciekawe! oznacza, że plugin nie został dobrze zainstalowany, pewnie nie wrzuciłeś samego ScreenMenu.amxx albo wrzuciłeś ale pod codmodem
BoB0_
21.08.2011
R3X zrobiłem właśnie tak jak napisałeś. Dziękuję za pomoc ale jest kolejny problem. Otóż menu mam pod komendą /klasa i po wejściu na serwer wyświetal się menu trochę rozjechane ale jest. Nie mogę wybrać żadnej z opcji. Po prostu menu sobie jest na ekranie i tyle. Muszę to zbindować pod jakiś klawisz czy coś w tym stylu? Da radę zrobić to pod tą komendę?
R3X
21.08.2011
jak robiłem coś podobnego to /klasa robiła display, a lewy czy prawy klawisz myszy close()
a i nie wiem czy o tym już wspominałem, ale menu nie będzie działać na nieżywych graczach (chyba że na freelook)
a i nie wiem czy o tym już wspominałem, ale menu nie będzie działać na nieżywych graczach (chyba że na freelook)
BoB0_
21.08.2011
Coś takiego?
??
new menuklas;
register_clcmd("say /klasa", "cmdStartWybierz");
register_clcmd("say /class", "cmdStartWybierz");
register_clcmd("mouse1", "cmdStopWybierz");
public WybierzKlase(id)
{
menuklas = smenu_create("Wybierz klase:", "WybierzKlase_Handle");
new klasa[50];
for(new i=1; i <= ilosc_klas; i++)
{
WczytajDane(id, i);
format(klasa, charsmax(klasa), "%s \yPoziom: %i", nazwy_klas[i], poziom_gracza[id]);
smenu_additem(menuklas, klasa);
}
WczytajDane(id, klasa_gracza[id]);
smenu_display(id, menu);
client_cmd(id, "spk QTM_CodMod/select");
}
public WybierzKlase_Handle(id, menu, item)
{
if(item > 0)
client_print(id, print_chat, "Wybrales opcje %d", item);
client_cmd(id, "spk QTM_CodMod/select");
if(item++ == MENU_EXIT)
{
smenu_destroy(menu);
return PLUGIN_CONTINUE;
}
if(item == klasa_gracza[id] && !nowa_klasa_gracza[id])
return PLUGIN_CONTINUE;
nowa_klasa_gracza[id] = item;
if(klasa_gracza[id])
client_print(id, print_chat, "[COD:MW] Klasa zostanie zmieniona w nastepnej rundzie.");
else
{
UstawNowaKlase(id);
DajBronie(id);
ZastosujAtrybuty(id);
}
return PLUGIN_CONTINUE;
}
public cmdStartWybierz(id){
smenu_display(id, menuklas);
return PLUGIN_HANDLED;
}
public cmdStopWybierz(id){
smenu_exit(id);
return PLUGIN_HANDLED;
}
??
R3X
21.08.2011
nie mouse1 tylko łap cmd_start czy prethink i sprawdzaj klawisze to by było zbyt proste
BoB0_
21.08.2011
Możesz podrzucić kod jak masz pod ręką? Nie wiem ocb z tym co napisałeś.
W jaki sposób się wybiera opcje z menu?
@edit.
Coś takiego? Na co zamienić IN_USE?
Użytkownik BoB0_ edytował ten post 21.08.2011 23:00
W jaki sposób się wybiera opcje z menu?
@edit.
public fwPlayerPreThink(id){
if(!is_user_alive(id))
return FMRES_IGNORED;
static buttons, oldbuttons;
buttons = pev(id, pev_button);
oldbuttons = pev(id, pev_oldbuttons);
if(player_smenu_info(id) == menu){
if(buttons&IN_USE == 0)
smenu_exit(id);
}else{
new Float:fNow = get_gametime();
if(buttons&IN_USE && oldbuttons&IN_USE == 0)
gfLastUse[id] = fNow;
else{
if(fNow-gfLastUse[id] < 0.1)
smenu_display(id, menu, -2);
}
}
return FMRES_IGNORED;
}
Coś takiego? Na co zamienić IN_USE?
Użytkownik BoB0_ edytował ten post 21.08.2011 23:00
R3X
21.08.2011
BoB0_
21.08.2011
Zrobiłem coś takiego:
I usunąłem z tym mouse1. Jest jeszcze jeden problem. Otóż zaraz po wejściu na serwer wyświetla się to menu ale nie mogę wybrać żadnej opcji. Mogę korzystać z broni ale nie są one pokazywane. Po wciśnięciu mouse1 menu się nie zamyka. Jest widoczne przez cały czas
public client_PreThink(id)
{
new button = get_user_button(id)
if(zmienna[id]==0 && button & IN_ATTACK) smenu_exit(id);
if(button & IN_ATTACK) zmienna[id] = 1
else zmienna[id] = 0
}
I usunąłem z tym mouse1. Jest jeszcze jeden problem. Otóż zaraz po wejściu na serwer wyświetla się to menu ale nie mogę wybrać żadnej opcji. Mogę korzystać z broni ale nie są one pokazywane. Po wciśnięciu mouse1 menu się nie zamyka. Jest widoczne przez cały czas
A może sma?
21.08.2011
Musisz usunąć z silnika CoDa pokazywanie menu jeżeli nie ma się klasy:
public Odrodzenie(id)
{
if(!task_exists(id+ZADANIE_POKAZ_INFORMACJE))
set_task(0.1, "PokazInformacje", id+ZADANIE_POKAZ_INFORMACJE, _, _, "b");
if(nowa_klasa_gracza[id])
UstawNowaKlase(id);
/*if(!klasa_gracza[id])
{
WybierzKlase(id);
return PLUGIN_CONTINUE;
}*/ //usun to co zakomentowałem
DajBronie(id);
ZastosujAtrybuty(id);
if(punkty_gracza[id] > 0)
PrzydzielPunkty(id);
return PLUGIN_CONTINUE;
}
BoB0_
21.08.2011
To wykluczyło tylko błąd po zrespieniu. Ale gdy otworzę menu przez komendę dalej nie mogę wybrać opcji i problem jest taki sam jak opisałem na górze.