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

Kilka pytań o menu i zmiennych.


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

#1 GoldeN

    Wszechmogący

  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 08.03.2011 00:14

Witam. Jak mogę zrobić coś takiego:

//***************************************************************************************************************************************************************

Gracz wpisuje /menu, otwiera mu się menu, klika opcję nr. 1 i wtedy do drugiego menu (które stworze) dodaje się 1. Gracz %s dodał wpisz do menu

I jak mogę, gdy kolejny gracz wpisze /menu i wybierze 1 to do drugiego menu dopisze się (Jeżeli jest już jeden wpis): 2. Gracz %s dodał wpisz do menu

Menu wiem jak zrobić, ale nie wiem jak dopisanie.

Oczywiście, żeby mi się to wszystko zapisywało i inny gracz mógł to zobaczyć.

//***************************************************************************************************************************************************************

Kolejne pytanie.

enum cos { zero = 0, dwa, trzy }

new cos:g_handle[33] = { zero,... }


O co chodzi w zmiennej g_handle?

//***************************************************************************************************************************************************************

Czemu niektóre funkcje wyglądają tak:

public moja_funkcja(id){
// Code
}


a niektóre:

public _moja_funkcja2(id)
{
// Code
}


Po co to "_" przed nazwą funkcji?

Z góry bardzo dziękuję za odpowiedzi

Użytkownik GoldeN edytował ten post 08.03.2011 00:33


#2 Knopers

    Nie patrz tak na mnie !

  • Przyjaciel

Reputacja: 588
Wszechwiedzący

  • Postów:2 013
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Cz-wa
Offline

Napisano 08.03.2011 09:03

2. zmienna ta będzie zwracać wartość typu "cos" który jest powiedzmy psełdo typem zaimplementowanym przez programistę za pomocą enum.
Przykład :
enum cos{zero = 0, jeden, dwa, trzy};
new cos:g_handle[4] = {zero, jeden, dwa, trzy};
wtedy g_handle[0] zwróci ci zero (nie myl ze stringiem) a nie 0
jeśli być miał:
enum cos {zero = 0, jeden, dwa, trzy};
new g_handle[4] = {zero, jeden, dwa, trzy};
wtedy g_handle[0] zwróci ci 0 a nie zero (nie myl ze stringiem)
możesz jeszcze zrobić tak :
enum cos {zero = 0, jeden, dwa, trzy};
new cos:g_handle[4] = {0, 1, 2, 3};
wtedy g_handle[0] zwróci ci zero (nie myl ze stringiem) a nie 0
3.niczym się ona nie różni nazwa funkcji jest ustalana przez programistę ( nazwa może zawierać litery a-z, A-Z, 0-9 oraz _ ) to że programista dał sobie _ lub jej nie dał zależy wyłącznie od niego i to w jaki sposób mu się łatwiej pisze czytelny kod. inną sprawą jest gdyby było
public _:nazwafunkcji() ...
Wtedy to oznacza że zwraca wartość typu całkowitego.
  • +
  • -
  • 1

#3 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 08.03.2011 12:40

co do menu to tak działa nowy styl menu, daj globalne zmienne na nie i przy naciśnięciu klawisza zrób menu_additem()

__ zwykle daje się przed funkcjami, które inny programista mógłby niechcący chcieć nadpisać, np. w plikach includowanych
  • +
  • -
  • 1

#4 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 08.03.2011 14:46

No dobra, ale to mi się zapisze do innego menu? Jak to ogólnie powinno wyglądać? Mógłby ktoś opisać?

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /mmm", "menu1")
register_clcmd("say /aaa", "command")
}

public command(id){
new c[34];
get_user_name(id, c, 33)
menu1(id, c)
}

public menu1(id, nick[]){
new menu1 = menu_create("Menu1", "menu1_handle")

new text[32][512];
for(new i = 0; i < 32; i++)
{
format(text[i], 511, "\rGracz \y%s \wdodal wpis",nick)
}
menu_additem(menu1, text[id])

menu_display(id, menu1, 0);

return PLUGIN_HANDLED;
}

public menu1_handle(id, menu, item){
switch(item)
{
case 1:
{
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}


Takie coś napisałem, owszem, dodaje ale się nie zapisuje, bo jak wpisuje /mmm to nic nie pisze. Dziękuję za odpowiedzi wyżej.

#5 Leihto

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:452
  • Lokalizacja:Rabka
Offline

Napisano 09.03.2011 01:49

na przyklad tak to mozesz zrobic
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Nowy plugin"
#define VERSION "1.0"
#define AUTHOR "Blak Rajder"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /cos","Lista")
register_clcmd("costamse", "Lista2")
}

public Lista(id)
{
new menu = menu_create("Moje menu", "menu_pokaz")
menu_additem(menu, "Twoje cos w menu", "1", 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz")
menu_display(id, menu, 0)
}

public menu_pokaz(id, menu, item)
{
if (item == MENU_EXIT)
{
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:{
new name[32];
get_user_name(id, name, 33);
client_print(id, print_chat, "Gracz %s wybral pozycje 1 w menu /cos", name)
client_cmd(id, "costamse")
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu)
return PLUGIN_CONTINUE;
}
public Lista2(id)
{
new menu2 = menu_create("Moje menu2", "menu_pokaz2")
menu_additem(menu2, "Twoje cos w menu 2", "1", 0)
menu_setprop(menu2, MPROP_EXIT, MEXIT_ALL)
menu_setprop(menu2, MPROP_EXITNAME, "Wyjdz")
menu_display(id, menu2, 0)
}
public menu_pokaz2(id, menu2, item)
{
if (item == MENU_EXIT)
{
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu2, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:{
client_print(id, print_chat, "Wpisales cos tam se")
menu_destroy(menu2)
return PLUGIN_HANDLED
}
}
menu_destroy(menu2)
return PLUGIN_CONTINUE;
}

Jeden z kinku sposobow ;)
  • +
  • -
  • 0
Portek: Za 20zł, to ja nawet notatnika nie otworze..

Nowe portfolio. Ciekawe artykuły, ciekawe przykłady: WojtusDEV.pl

#6 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 09.03.2011 14:16

@Blak Rajder

Nie skomentuje Cię. -.- Jak stworzyć menu na kilka sposobów to ja wiem bardzo dobrze. Chodzi mi jak dodać coś AUTOMATYCZNIE Z NICKIEM GRACZA który wpisze np. /menu. -.-

#7 Leihto

    Wszechobecny

  • Użytkownik

Reputacja: 150
Profesjonalista

  • Postów:452
  • Lokalizacja:Rabka
Offline

Napisano 09.03.2011 14:38

Hmm z tego co widze to w moim kodzie jest to co chcesz...
Dokladniej tu:
case 1:{
                new name[32];
                get_user_name(id, name, 33);
                client_print(id, print_chat, "Gracz %s wybral pozycje 1 w menu /cos", name)
            client_cmd(id, "costamse")
            menu_destroy(menu)
            return PLUGIN_HANDLED
        }
Wiec lopatologicznie nick pobierasz tak:
new name[32];
get_user_name(id, name, 33);
i wpisujesz go np. tak
client_print(0, print_chat, "Gracz %s zrobil cos tam")

A jesli chcesz np. w menu dodac nick gracza to robisz to tak:
new name[32];
get_user_name(id, name, 33);
new menu = menu_create("Menu gracza %s ", "menu_pokaz", name)

Wiec nie rozumiem co ty masz do mojego kodu.
  • +
  • -
  • 0
Portek: Za 20zł, to ja nawet notatnika nie otworze..

Nowe portfolio. Ciekawe artykuły, ciekawe przykłady: WojtusDEV.pl

#8 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 09.03.2011 14:40

...

TO WSZYSTKO MA PISAĆ W MENU POD DANYMI KLAWISZAMI A NIE W CHATCIE!

Po drugie jak tak nick chcesz pobrać, to gratuluję.

new name[32];
get_user_name(id, name, 33);

Z 32 tablic nagle zamienia się na 33? Brawo.

Po drugie tego raczej tak nie sformatujesz:

new menu = menu_create("Menu gracza %s ", "menu_pokaz", name)

Więc STFU. Naucz się czytać ze zrozumieniem.

Użytkownik GoldeN edytował ten post 09.03.2011 14:42


#9 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 09.03.2011 18:49


new formats[64];
new name[32];
get_user_name(id,name,31)
new menu = menu_create("Nazwa Twojego Menu","Menu_Handle");
formatex(formats,charsmax(formats),"Twoj Nick To : [ %s ]",name);
menu_additem(menu,formats)


Powinno zadziałać, nie jestem do końca pewien czy oto ci chodzi bo piszesz strasznie chaotycznie, ale ok.
  • +
  • -
  • 1

#10 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 10.03.2011 00:18

Dobra, opisze to lepiej. Wpisuje w say /menu, otwiera się menu:

1. Obejrzyj liste wpisow.
2. Dodaj swoj wpis!


Gdy klikniemy 1.

To pojawia nam się menu ze wszystkimi wpisami wszystkich graczy jakie dodali. (W tym właśnie by pisało np. "Wpis dodał: %s")
Dla każdego gracza osobny numer do kliknięcia.

Gdy klikniemy 2.

To do menu dopisuje się "Wpis dodał moj nick"

Tylko, żeby to przy każdym kliknięciu w klawisz 1 otwierała się aktualna lista wpisów danych graczy..

Użytkownik GoldeN edytował ten post 10.03.2011 00:24


#11 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.03.2011 00:39

obczaj to: Wklejka 12997138022873 - AMXX.pl: Support AMX Mod X

Twój pierwszy kod był prawie dobry, ale na pewno nie zadziała. Globalne zmienne to te dostępne ogólnie i są poza definicjami funkcji. Raz stworzone menu masz w zmiennej menu i do niego dodajesz kolejne pozycje. Żeby wyczyścić takie menu robisz destroy i nowe create na tej samej zmiennej. Do zapobiegania 2 wpisów od 1 gracza służy tablica bool: i jest true jak już jest na liście i false jak może być dodany
  • +
  • -
  • 1

#12 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 10.03.2011 15:06

O to mi chodziło! ; DD

A jak teraz zrobić, by gracz wpisujący swój wpis mógł usunąć tylko swój wpis?

#13 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.03.2011 16:29

usunąć czy zrobić nie do kliknięcia? bo usuwać się nie da i musiałbyś (zwróć uwagę na formę 'ty') odtwarzać menu bez jednego elementu, żeby wyglądało to na usunięcie; opcja z nieaktywnym wpisem jest dużo łatwiejsza, bo ustawiasz callback do każdego z itemów i tablicę z określonym usuniętym wpisem true/false
  • +
  • -
  • 1

#14 GoldeN

    Wszechmogący

  • Autor tematu
  • Zbanowany

Reputacja: 69
Pomocny

  • Postów:676
  • Imię:Kamil
  • Lokalizacja:DG
Offline

Napisano 10.03.2011 20:08

Wolałbym usunięcie, ale jak już trudno, to wstawienie słowa "Zablokowane" (Czyt. Callback).




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

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