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

[Problem]Nieaktywna funkcja w Menu, która powinna być aktywna?


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

#1 he1st

    Diablo Mody i te sprawy ;3

  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 24.07.2015 11:53

Jak w temacie mam taki kod:

public knife_deploy(id)
{
new aktywna=menu_makecallback("aktywna_func");
new nieaktywna=menu_makecallback("nieaktywna_func");
 
new menu = menu_create("Wybierz skin noza", "NozSkinHandler");
menu_additem(menu, "Default", ""); // case 0
menu_additem(menu, "M9 Bayonet | Sapphire[VIP]", "", has_flag(id,"t,x")?aktywna:nieaktywna); // case 1
menu_additem(menu, "Butterfly | Slaughter[SVIP]", "", ADMIN_FLAG_X); // case 2
menu_additem(menu, "Huntsman | Crimson Web[SVIP]", "", ADMIN_FLAG_X); // case 3
 
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
 
menu_display(id, menu, 0);
 
return PLUGIN_HANDLED;
}

I ma on za zadanie aktywować drugą funkcję w menu, gdy gracz ma flagę "t" lub flagę "x" wcześniej zdefiniowaną jako:

#define ADMIN_FLAG_X (1<<23)

Gdy gracz ma flagę "x" wszystko jest w porządku, jednak, gdy gracz ma flagę "t" druga funkcja w menu jest nieaktywna. 

 

Korzystałem z tego tematu jako pomoc: http://amxx.pl/topic/60353-flagi/

 

Oczekuję pomocy jako wyjaśnienia problemu. Nie chcę gotowca, bo w ten sposób człowiek niczego się nie nauczy.

 

Pozdro


Użytkownik GH.Just Me edytował ten post 24.07.2015 11:58

  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#2 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 24.07.2015 14:16

Robisz dwa callbacki, po co?

Zrób jeden, i tam sprawdź flagi przez get_user_flags jeżeli ma to zwracasz ITEM_ENABLED else DISABLED
  • +
  • -
  • 1

#3 he1st

    Diablo Mody i te sprawy ;3

  • Autor tematu
  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 24.07.2015 15:00

Robisz dwa callbacki, po co?

Zrób jeden, i tam sprawdź flagi przez get_user_flags jeżeli ma to zwracasz ITEM_ENABLED else DISABLED

 

Łatwiej mi operować dwoma callbackami. Zawsze tak robiłem i problemów nigdy nie było ^^

public aktywna_func(id, menu, item){
return ITEM_ENABLED;
}
public nieaktywna_func(id, menu, item){
return ITEM_DISABLED;
}

Nawet u siebie w diablo przy menu mam 2x callback do pomocy :P

 

Przetestuję twój sposób i zobaczymy jak to wyjdzie.


Użytkownik GH.Just Me edytował ten post 24.07.2015 15:01

  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#4 he1st

    Diablo Mody i te sprawy ;3

  • Autor tematu
  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 24.07.2015 20:18

Zrobiłem w każdym z czterech menu do wyboru cztery różne rozwiązania i żadne z nich nie podziałało. Zostałem przy wyborze drugiej opcji tylko dla jednej flagi i chyba już tak zostanie, bo kolejnych rozwiązań już nie mam lub po prostu nie da się tego zrobić tak jakbym tego chciał  :zle:  :poddaje_sie:

 

 

Temat do zamknięcia.


  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#5 glut

    Godlike

  • Przyjaciel

Reputacja: 954
Master

  • Postów:2 086
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Namysłów
Offline

Napisano 24.07.2015 20:18

Dawno w tym nie siedziałem, ale to nie powinno być raczej zamiast
 
has_flag(id,"t,x")
to

has_flag(id,"tx")
?? :D
  • +
  • -
  • 0

Nie pomagam za darmo na PW/GG/Steam od tego jest forum

 

TP Game + RR

 

Znak rozpoznawczy :coto:


#6 he1st

    Diablo Mody i te sprawy ;3

  • Autor tematu
  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 24.07.2015 20:23

Dawno w tym nie siedziałem, ale to nie powinno być raczej zamiast
 

has_flag(id,"t,x")
to

has_flag(id,"tx")

?? :D

 

 

has_flag(id,"tx")

powinno działać, gdy gracz ma obie flagi

has_flag(id,"t,x")

powinno działać, gdy gracz ma tą lub tą flagę. 

 

 

Ogólnie tak jak mówiłem, żaden sposób nie działa, a nie jestem specem od wszystkiego. Robiłem wszystko według poradnika Darka na temat flag i tak jak już mówiłem 3 razy. NIE MA ROZWIĄZANIA NA MÓJ PROBLEM.


Użytkownik GH.Just Me edytował ten post 24.07.2015 20:25

  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#7 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 24.07.2015 20:27


NIE MA ROZWIĄZANIA NA MÓJ PROBLEM.


Zrób jeden, i tam sprawdź flagi przez get_user_flags jeżeli ma to zwracasz ITEM_ENABLED else DISABLED

  • +
  • -
  • 0

#8 he1st

    Diablo Mody i te sprawy ;3

  • Autor tematu
  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 24.07.2015 20:31

 


NIE MA ROZWIĄZANIA NA MÓJ PROBLEM.

 

 


Zrób jeden, i tam sprawdź flagi przez get_user_flags jeżeli ma to zwracasz ITEM_ENABLED else DISABLED

 

 

Toć Ci tłumaczę, że już to robiłem, ale też niezbyt dużo to dało. Tym bardziej, że jak sprawdzam flagi w callbacku to przy kompilacji wypi*****a błąd, że nie zwraca wartości pomimo tego returna.

 

Ponadto użycie

has_flag

jest o wiele prostsze i na dodatek do tego wcale nie potrzebuje nawet callbacka.

 

Z

read_flags
jest to samo (co do tego jestem pewny, że read_flags współpracuje z flagami v,w,x)

Użytkownik GH.Just Me edytował ten post 24.07.2015 20:44

  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#9 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 24.07.2015 21:00

zajrzyj do amxmisc.inc, a odkryjesz prawdę o has_flag -.-

public knife_deploy(id)
{
new cb=menu_makecallback("callback");

new menu = menu_create("Wybierz skin noza", "NozSkinHandler");
menu_additem(menu, "Default"); // case 0
menu_additem(menu, "M9 Bayonet | Sapphire[VIP]", "", cb); // case 1
menu_additem(menu, "Butterfly | Slaughter[SVIP]", "", ADMIN_FLAG_X); // case 2
menu_additem(menu, "Huntsman | Crimson Web[SVIP]", "", ADMIN_FLAG_X); // case 3
 
menu_display(id, menu);
 
return PLUGIN_HANDLED;
}

public callback(id) // nie sprawdzam czy item == 1, bo jest tylko do jednej opcji callback
{
    new flag = get_user_flags(id)
    if(flag & ADMIN_LEVEL_H || flag & ADMIN_LEVEL_X) return ITEM_ENABLED

    return ITEM_DISABLED
}

  • +
  • -
  • 0

#10 he1st

    Diablo Mody i te sprawy ;3

  • Autor tematu
  • Użytkownik

Reputacja: 132
Zaawansowany

  • Postów:357
  • GG:
  • Imię:Michał
  • Lokalizacja:Legionowo
Offline

Napisano 24.07.2015 21:19

 

zajrzyj do amxmisc.inc, a odkryjesz prawdę o has_flag -.-

public knife_deploy(id)
{
new cb=menu_makecallback("callback");

new menu = menu_create("Wybierz skin noza", "NozSkinHandler");
menu_additem(menu, "Default"); // case 0
menu_additem(menu, "M9 Bayonet | Sapphire[VIP]", "", cb); // case 1
menu_additem(menu, "Butterfly | Slaughter[SVIP]", "", ADMIN_FLAG_X); // case 2
menu_additem(menu, "Huntsman | Crimson Web[SVIP]", "", ADMIN_FLAG_X); // case 3
 
menu_display(id, menu);
 
return PLUGIN_HANDLED;
}

public callback(id) // nie sprawdzam czy item == 1, bo jest tylko do jednej opcji callback
{
    new flag = get_user_flags(id)
    if(flag & ADMIN_LEVEL_H || flag & ADMIN_LEVEL_X) return ITEM_ENABLED

    return ITEM_DISABLED
}

 

Tak jak już mówiłem 4 razy. Ten sposób nie działa, gdy gracz ma tylko flagę "t", a nie ma flagi "x". Przecież miałem dokładnie ten sam kod co Ty. Tylko zamiast zmiennej "cb" miałem "aktywna"


Użytkownik GH.Just Me edytował ten post 24.07.2015 21:21

  • +
  • -
  • 0

b_350_20_000000_000000_FFFFFF_DA0707.png
b_350_20_000000_000000_FFFFFF_DA0707.png


#11 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 25.07.2015 00:03

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0




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

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