←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

nvault + menu

Locked

  • +
  • -
Stachuu :D ??'s Photo Stachuu :D ?? 24.09.2011

siemka mam pytanie

załóżmy ze mamy przypisane do nazw graczy ich fragi w pliku nvalut

czy jest sposób aby dodać do menu (menu_additem) każdego gracza i po wybraniu go wyskoczyło by info ile on zdobył fragów ( pytanie czysto teoretyczne )
Edited by Stachu123, 24.09.2011 23:21.
Quote

  • +
  • -
sebul's Photo sebul 25.09.2011

Jest sposób, a chyba nawet dwa.
Quote

  • +
  • -
Fili:P's Photo Fili:P 25.09.2011

Zastanawiam się czy to info, miałoby być w menu czy w say-u.
Quote

  • +
  • -
Stachuu :D ??'s Photo Stachuu :D ?? 25.09.2011

Jest sposób, a chyba nawet dwa.


powiedział co wiedział <_<

@up .
Quote

mierzwi's Photo mierzwi 25.09.2011

każdego gracza - czyli wszystkich online czy tych też offline? jak tych offline to nvault_util trzeba chyba użyć.
Quote

  • +
  • -
Whisper's Photo Whisper 25.09.2011


public PlayersMenu(id)
{
new menu = menu_create("\wWybierz gracza:", "PlayersMenuHandler");

new players[32], pnum, tempid;

new szName[32], szTempid[10];

get_players(players, pnum);

for( new i; i<pnum; i++ )
{
tempid = players[i];

get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(menu, szName, szTempid, 0);

}
menu_display(id, menu, 0);
}
public PlayersMenuHandler(id, PlayersMenu , item)
{
if( item == MENU_EXIT )
{
menu_destroy(PlayersMenu);
return PLUGIN_HANDLED;
}

new data[6], szName[64];
new access, callback;
menu_item_getinfo(PlayersMenu, item, access, data,charsmax(data), szName,charsmax(szName), callback);

new tempid = str_to_num(data);

ColorChat(id, GREEN, "Gracz %s posiada %d fragow.", szName, nazwa_twojej_tablicy[tempid]);

return PLUGIN_CONTINUE;
}

Edited by Whisper, 25.09.2011 13:26.
Quote

  • +
  • -
sebul's Photo sebul 25.09.2011

Jest sposób, a chyba nawet dwa.


powiedział co wiedział <_<

@up .

Pytałeś czy jest sposób i że pytanie czysto teoretyczne, to odpowiedziałem. Następnym razem precyzuj bardziej pytania to uniknie się takich sytuacji. Są dwa sposoby, bo można przy wejściu gracza wczytać jego fragi z vault, a potem wszystko robić na zmiennej do której przypisało się ilość fragów, albo można za każdym razem wczytywać vault i zwracać ilość fragów poprzez return.
Quote

  • +
  • -
Stachuu :D ??'s Photo Stachuu :D ?? 25.09.2011

@up sebul sory za niesprecyzowanie

Funfel napisał dobrze chodzi mi o wszystkie wpisy z pliku

Wersja whispera tyczy sie jedynie graczy online


//////////////////////////

Moze inaczej

Zakładamy ze w pliku valut mamy 100 wpisów graczy.

Teraz jak zrobić menu aby wyświetliło wszystkich graczy (100)
Quote

mierzwi's Photo mierzwi 25.09.2011

musisz użyć nvaut_util, wywnioskować z niej ile jest wszystkich wpisów i za pomocą arrayów musisz dodawać przez additem każdemu wpisowi. (posiadam taki kod + rozbudowanie po kliknięciu ale niestety nie mogę go udostępnić bo prywaciak)
Quote

  • +
  • -
Stachuu :D ??'s Photo Stachuu :D ?? 25.09.2011

ok dzięki all juz mam tylko jeszcze jedno

public menu(id)
{
      new iVaultHandle = nvault_util_open( szTestVault );
   
    new key[128]
    new MyMenu=menu_create("Info","info");
   
    new iPos , szKey[ 32 ] , szVal[ 64 ] , iTimeStamp;
    new iCount = nvault_util_count (iVaultHandle)
   
    for ( new iCurrent = 1 , n=1; iCurrent <= iCount ; iCurrent++ )
    {
        iPos = nvault_util_read( iVaultHandle , iPos , szKey , charsmax( szKey ) , szVal , charsmax( szVal ) , iTimeStamp );
        formatex(key, 127, "%s",szKey);
        oddaj_id[n++] = iCurrent;
        menu_additem(MyMenu, key, _, _,  _);
    }
    menu_setprop(MyMenu,MPROP_EXITNAME,"Wyjscie");
   
    menu_setprop(MyMenu,MPROP_BACKNAME,"Wroc")
    menu_setprop(MyMenu,MPROP_NEXTNAME,"Nastepne")
   
    //zawsze pokaż opcję wyjścia
    menu_setprop(MyMenu,MPROP_EXIT,MEXIT_ALL);
   
    menu_setprop(MyMenu,MPROP_PERPAGE,7)
   
    menu_display(id, MyMenu);
}

do pliku danego pliku zapisuje

format(vaultkey,63,"%s-GIL",AuthID)

i przy wybieraniu w menu widać

1.nick_gracza1-GIL
2.nick_gracza2-GIL

etc.

da się jakoś usunąć "-GIL"
Quote

  • +
  • -
sebul's Photo sebul 25.09.2011

for ( new iCurrent = 1 , n=1; iCurrent <= iCount ; iCurrent++ )
{
iPos = nvault_util_read( iVaultHandle , iPos , szKey , charsmax( szKey ) , szVal , charsmax( szVal ) , iTimeStamp );
formatex(key, 127, "%s",szKey);
replace_all(key, 127, "-GIL", "");
oddaj_id[n++] = iCurrent;
menu_additem(MyMenu, key, _, _, _);
}

Albo zamiast tego replace_all, to można też tak
key[strlen(key)-4] = 0;

też powinno działać.

I nie wiem, czy nie lepiej będzie jak plik vault będziesz wczytywał na początku mapy i dane zapisywał do dynamicznej, czy zwykłej tablicy.
Edited by sebul, 25.09.2011 20:08.
Quote

  • +
  • -
Stachuu :D ??'s Photo Stachuu :D ?? 25.09.2011

ok zrobione można zamknąć
Edited by Stachu123, 25.09.2011 21:27.
Quote

Adminek AMXX.PL's Photo Adminek AMXX.PL 25.09.2011

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: To zamykamy.

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked