item írta:
Sziasztok!
Eddig mindig csak átírtam pluginokat, de szeretnék megtanulni sajátot is írni. Annyi lenne a kérésem, hogy ha valaki leírná az alapokat amit egy plugin írásnál bele kell írni, nagyon hálás lennék 
Esetleg hogy #include-nál miket kell beirni, mi az amit mindig be kell és mi az amit még kellhet ha olyan a plugin
meg az ilyen alap parancsokat ha leírnátok megköszönném, meg esetleg azt is hogy mit csinál az a parancs akár önmagában akár más parancsal összevetve.
Köszönöm! En itt tanultam meg plugint irni!
De az se rosz, amit ultra kuldott
**********************************************************************************************************
Alap Menü - Egy alap menü készítése. (Pl.: Fegyver Menü)
Játékos Menü - Egy menü amibe az itemek a játékosok. (Pl.: Kirúgás Menü)
Szimpla Szavazó Menü - Szavazó menü készítése. (Mint egy alap pályaszavazó)
Almenü - Almenü készítése, azaz egy menünek vannak almenüje is!
Szavazó Menü - Szavazó menü készítése. (Extra dolgokkal, Pl.: Galileo Pályaszavazó)
Egy menü több handlerrel - Több menü készítése egy handlerre!
Menü visszahívás - Menüpontok visszahívása, részletek lent!
newmenus.inc - Minden amit erről a függénykönyvtárról tudni kell!
Jegyzetek - Fontos tudni még!
Alap Menü top - Ez egy alap menü, nem mondok róla semmit, mert minden levan írva benne!
Kód:
#include <amxmodx>
#include <cstrike>
public plugin_init()
{
//..egyéb dolgok a pluginban, érdemes regisztrálni a plugint ha csak magában fogod használni!
register_clcmd( "say /alapmenu","AwesomeMenu");
//Regisztráljuk a parancsot, a kliens parancsot, ez esetben a játékosnak ezt kell beírnia a konzolba: "say /alapmenu"
//Erre a parancsra fog teljesülni az "AwesomeMenu" függvény, persze ennek lehet más is a neve, ezt te nevezed el, lehetőleg
//ne olyan nevet adj ami már van, mert akkor hibát fog dobni!
}
//Ez a függvény fog teljesülni a parancsunk beírására, ez esetben ez fogja megnyitni a menünket!
public AwesomeMenu(id)
{
//Első lépés a menü készítéséhez, azaz ez csinálja meg a menünket persze ennek még nincsennek menüpontjai!
new menu = menu_create("\rValasz a menumbol:", "menu_handler");
//Jegyzet - menu_create
//Az első paraméter a menü neve, ez lesz a menüpontok felett pár centivel (Jelen esetben: "\rValasz a menumbol:") \r-ről a lap alján írokű!
//A második paraméter a menü végrehajtására szolgáló függvény elérése. (Jelen esetben "menu_handler") és ( public menu_handler(id, menu, item) )
//A menüpontok készítése:
menu_additem(menu, "\wElso Menupont", "1", 0);
menu_additem(menu, "\wIngyen penz", "2", 0);
menu_additem(menu, "\wUzenet Kozepen", "3", ADMIN_MENU);
//Jegyzet - menu_additem
//Jelen esetben az első menüpont az "Elso Menupont", ez fog látszódni a menüdben! (Erre egy üzenetet fogunk kapni. Bővebben: Lejebb, és a menüt is megsemisítjük!)
//A második menüpontunk az "Ingyen Pénz" lett, erre pénzt fogunk kapni!
//A harmadik menüpont egy üzenetet fog kapni a játékos a képernyője közepén!
//A harmadik menüpont csak adminoknak elérhető, azaz akinek van menü joga("u" betű) (Az admin jogokat az amxconst.inc-ben találod!)
//Az ötödik egyben utolsó paraméter a visszatérés, alapértéke -1 (Magam sem tudom mire jó ez)
//Set a property on the menu
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
//Jegyzet - menu_setprop
//Az első paraméter a menü, tehát a menüd változója!
//A második paraméter:
//A harmadik paraméter:
//Menü megnyitása, az elkészített menüt meg is kell jeleníteni, ne gondoljuk hogy magától megnyitódik!
menu_display(id, menu, 0);
//Jegyzet - menu_display
//Az első paraméter az index, azaz az azonosítója a játékosnak!
//Második paraméter az hogy melyik menüt mutassa (Jelen esetben amit én csináltam azaz: "menu")
//Harmadik paraméter az oldalszámot jelöli, az oldalszámolás 0áról indul!
}
//Jöhetnek a menüpontokra történő dolgok (azé menu_handler mert azt adtuk meg a menü készítésénél)
public menu_handler(id, menu, item)
{
//Ez az elágazás akkor fut le ha az illető a bezárásra kattint!
if( item == MENU_EXIT )
{
menu_destroy(menu);
//Ez megsemmisíti a menünket, majd vissza tér PLUGIN_HANDLEDDEl, azaz hogy ne folytassa!
return PLUGIN_HANDLED;
}
//Hozzuk létre ezt a néhány változót:
new data[6], szName[64];
new access, callback;
//Ez a funkció lekéri nekünk az információkat
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
//visszatekintunk a menu_additem parancsra, minden egyes menuponthoz kuldtunk adatot is, itt lesz "gyanus" a dolog (ezzel adhatod meg a funkciodat)
new key = str_to_num(data);
//en minden adathoz szamot hasznaltam (te barmilyen stringet hasznalhatsz)
//Nos itt vannak a menüpontok, azaz hogy mi történik egy-egy menüponton!
switch(key)
{
case 1:
{
client_print(id, print_chat, "Gratulalunk, sikeresen keszitettel egy menupontot!");
//Ezt a fenti üzenetet fogja megkapni a játékos, majd a menü megintcsak megsemmisül, és vissza térünk PLUGIN_HANDLEDel!
menu_destroy(menu);
return PLUGIN_HANDLED;
}
case 2:
{
cs_set_user_money(id, cs_get_user_money(id) + 3000);
//Ez a második menüpont, a játékosunk kap 3000ezer dollárt a jelenlegi pénzéhez!
}
case 3:
{
//Ez a harmadik menüpont, ez csak adminoknak működik mint fentebb írtam!
client_print(id, print_center, "Hello, en egy uzenet vagyok!");
}
}
//Majd zárjuk be a menüt, és térjünk vissza PLUGIN_HANDLEDel!
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Játékos Menü top*Jegyzet: Ebben már nem kommentelem le azokat a dolgokat amelyeket már az előzőben leírtam! -Ebben a menüben az online játékosok fognak szerepelni!
Kód:
#include <amxmodx>
#include <fun>
public plugin_init()
{
register_clcmd( "my_player_menu","AwesomeMenu");
}
public AwesomeMenu(id)
{
//A menü készítése...
new menu = menu_create("\rValaszd ki a jatekost:", "menu_handler");
//A ciklushoz szükséges változók létrehozása
new players[32], pnum, tempid;
//Változók létrehozása
new szName[32], szTempid[10];
//Lekérjük az online játékosok számát
get_players(players, pnum);
//Ciklus lefutása annyiszor ahány játékos fentvan a szerveren!
for( new i; i<pnum; i++ )
{
//Elmentjük a players[i]-t tempid néven!
tempid = players[i];
//Lekérjük a játékos nevét
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
//Játékos hozzá adása a menübe, menüpontként!
menu_additem(menu, szName, szTempid, 0);
}
//Megjelenítjük a menüt, amiben a játékosok nevei vannak!
menu_display(id, menu, 0);
}
public menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
//Lekérjük a játékos szavazatát (jelen esetben a data)
new tempid = str_to_num(data);
//Ebben az elágazásban lecsekkoljuk hogy a kiválasztott játékos él-e!
if( is_user_alive(tempid) )
{
//Beállítja a kiválasztott játékos életét 100ra!
set_user_health(tempid, 100);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Szimpla Szavazó Menü top*Jegyzet: Ebben már nem kommentelem le azokat a dolgokat amelyeket már az előzőben leírtam!
Ez egy sima szavazó menü, nincs benne semmi extra!
Kód:
#include <amxmodx>
//A szavazó menü változójának létrehozása:
new gVoteMenu;
//A szavazási lehetőségek létrehozása, ez esetben 2 az értéke!
new gVotes[2];
//Ez a változó arra szolgál hogy leellenőrizze hogy a szavazás folyamatban van e már!
new gVoting;
public plugin_init()
{
//Regisztráljük a kliens parancsot, ez esetben ezt kell beírni a konzolba: start_vote
register_clcmd( "start_vote","StartVote");
}
public StartVote(id)
{
//Ebben az elágazásban leellenőrizzük hogy a szavazás folyamatban van e már! Ha igen akkor bele megy az elágazásba!
if( gVoting )
{
client_print(id, print_chat, "Sajnalom, a szavazas mar folyamatban van!");
//Visszatérünk PLUGIN_HANDLED-el hogy ne írja ki a konzolba hogy: "Unkown Command"
return PLUGIN_HANDLED;
}
//Létrehozzuk a menüt
gVoteMenu = menu_create("\rKerlek szavazz!:", "menu_handler");
//A menüpontok
menu_additem(gVoteMenu, "A szerver jo", "0", 0);
menu_additem(gVoteMenu, "A szerver rossz", "1", 0);
//Változók létrehozása, amelyekre szükségünk lesz
new players[32], pnum, tempid;
//Lekérjük az online játékosok számát
get_players(players, pnum);
//Elindítjuk a ciklust, amely annyiszor fut le ahány játékos fentvan a szerveren!!
for( new i; i<pnum; i++ )
{
tempid = players[i];
//Megjelenítjük a menüt a kliensnek!
menu_display(tempid, gVoteMenu, 0);
//Hozzá adunk a gVoting változóhoz egyet, ez akadályozza meg hogy ne lehessen 2szavazás egyszerre!
gVoting++;
}
//Időzítjük a szavazás végét, jelen esetbe 10másodpercre
set_task(10.0, "EndVote");
return PLUGIN_HANDLED;
}
public menu_handler(id, menu, item)
{
//Belép ebbe az elágazásba hogyha nem szavazott, vagy kilépett belőle a játékos!
//Fontos hogy a || azt jelenti hogy: vagy
if( item == MENU_EXIT || !gVoting )
{
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
//Lekérjük azt hogy mire szavazott, jelen esetben az adat tárolja!
new voteid = str_to_num(data);
//Hozzáadunk egy értékek ahoz amire a játékos szavazott
gVotes[voteid]++;
return PLUGIN_HANDLED;
}
public EndVote()
{
//Ez az elágazás leellenőrzi hogy a egyes menüpontra szavaztak e többen! Ha igen akkor bele megy az elágazásba
if( gVotes[0] > gVotes[1] )
client_print(0, print_chat, "A szerver jo (%d) ember szerint!", gVotes[0] );
//Ez meg az ellenkezője, azaz hogyha a második menüpontra szavaztak többen akkor megy bele!
else if( gVotes[0] < gVotes[1] )
client_print(0, print_chat, "A szerver rossz (%d) szerint", gVotes[1] );
//Ez akkor érvényesül ha mindkettőre ugyan annyian szavaztak!
else
client_print(0, print_chat, "A szavazas sikertelen mindenki ugyan arra szavazott! (%d)", gVotes[0] );
//Majd a menü megsemmisítése
menu_destroy(gVoteMenu);
//A gVoting változó értékét 0ára állítjuk, kezdőthet újra a szavazás!
gVoting = 0;
}
Almenü top*Ennek a menünek lesz egy almenüje!
Kód:
#include <amxmodx>
public plugin_init()
{
register_clcmd( "my_awesome_menu","AwesomeMenu");
}
public AwesomeMenu(id)
{
new menu = menu_create("\rKerlek valasz a menubol!:", "menu_handler")
menu_additem(menu, "\wEzzel nem torenik semmi", "1", 0);
menu_additem(menu, "\wEz megnyitja az almenut", "2", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
client_print(id, print_chat, "Gratulalok, nem tortent semmi:)");
}
case 2:
{
//Submenu függvény küldése a játékosnak! Tehát ez lesz az almenü!
SubMenu(id);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
SubMenu(id)
{
//Itt egy új menüt készítünk, fontos hogy a handlernek más nevet adjunk!!!!
new menu = menu_create("\rValasz az almenubol:", "submenu_handler")
menu_additem(menu, "\wMenupont #1", "1", 0);
menu_additem(menu, "\wMenupont #2", "2", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public submenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
//Leellenőrizzük hogy a játékos csatlakozva van e!
if( is_user_connected(id) )
//Elküldjük nekik az AwesomeMenu függvényt! Tehát megnyitódik neki az első menü!
AwesomeMenu(id);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
client_print(id, print_chat, "Ez az egyes menupont!");
}
case 2:
{
client_print(id, print_chat, "Ez a kettes menupont!");
}
}
menu_destroy(menu);
//Ez után megint megnyitjuk neki az első menüt!
AwesomeMenu(id);
return PLUGIN_HANDLED;
}
Szavazó Menü top - Ebben már nemírom le azokat amelyeket már feljebb leírtam!
Kód:
#include <amxmisc>
#include <fun>
//Hány darab menüpont legyen, ez esetben hány darab játékost lehessen kiválasztani!
#define MAX_VOTEIDS 7
//Mennyit érjen egy sima játékos szavazata!
#define WEIGHT_PLAYER 1
//Mennyit érjen egy admin szavazata!
#define WEIGHT_ADMIN 2
new gVoteMenu;
new gVotes[MAX_VOTEIDS];
new gVoting;
//Ez a változó tárolja a szavazatokat!
new gVoteID[MAX_VOTEIDS];
public plugin_init()
{
register_clcmd( "start_vote","StartVote");
}
public StartVote(id)
{
if( gVoting )
{
client_print(id, print_chat, "Sajnálom, a szavazás már folyamatban van!");
return PLUGIN_HANDLED;
}
gVoteMenu = menu_create("\rKi kapjon 255 életet?", "menu_handler");
//A játékosok lekérése, a halott játékosokat kihadjuk!
new players[32], pnum, tempid;
get_players(players, pnum, "a");
//Boole változó, ami azt az adatot tárolja hogy a játékosunk benne van e a szavazásban!
new bool:player_added[33], voteid_count;
new szName[32], szTempid[10];
//While ciklus annyiszor fut le amég az állítás igaz!
while( voteid_count < MAX_VOTEIDS && voteid_count < pnum )
{
//Random játékos kiválasztása!
tempid = players[ random(pnum) ];
//Ha a random játékost nem adták még bele a menübe akkor bele tér az elágazásba!
if( !player_added[tempid] )
{
get_user_name(tempid, szName, charsmax(szName));
//Menüpont generálás!
num_to_str(voteid_count, szTempid, charsmax(szTempid));
menu_additem(gVoteMenu, szName, szTempid, 0);
//A fentebb készített bool változonk igazra állítása, tehát a játékos benne van a menüben!
player_added[tempid] = true;
gVoteID[voteid_count] = tempid;
//voteid_count változóhoz hozzá adunk egy értéket! Tehát mindig amikor ide érkezünk akkor hozzá ad egy értéket!
voteid_count++;
}
}
//Most már megvannak a random játékosok a menüben!
for( new i; i<pnum; i++ )
{
//Elmentjük a tempidt így nem kell újra indexelni!
tempid = players[i];
//Megjelenírjük a menüt a célpontunknak!
menu_display(tempid, gVoteMenu, 0);
//Mennyit ér a szavazat, fent a definicióban adtuk meg!
if( is_user_admin(tempid) )
gVoting += WEIGHT_ADMIN;
else
gVoting += WEIGHT_PLAYER;
}
set_task(10.0, "EndVote");
return PLUGIN_HANDLED;
}
public menu_handler(id, menu, item)
{
//Ha nem szavazott, vagy a kilépésre ment akkor be térünk az elágazásba!
if( item == MENU_EXIT || !gVoting )
{
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
//Lekérjük a szavazatokat!
new voteid_num = str_to_num(data);
//Hozzá adjuk a szavazatokat, admin esetén 2, játlkos esetén 1! Definicióban változtatható!
if( is_user_admin(id) )
gVotes[voteid_num] += WEIGHT_ADMIN;
else
gVotes[voteid_num] += WEIGHT_PLAYER;
return PLUGIN_HANDLED;
}
public EndVote()
{
//Ez a változó tárolja hogy ki hány szavazatot kapott!
new votes_select;
//Ez tartalmazza a legtöbb szavazatot kapó első három játékost!
new votes[3];
//Ez tartalmazza az első hátom szavazatot kapó játékost!
new voteid[3];
new i, j;
//For ciklus lefutása "MAX_VOTEIDS" értékével, tehát ennyiszer fut le!
for( i=0; i<MAX_VOTEIDS; i++ )
{
//Szavazatok lekérése!
if( gVotes[i] )
{
if( votes_select < 3 )
{
votes[votes_select] = gVotes[i];
voteid[votes_select] = i;
votes_select++;
}
else
{
for( j=0; j<3; j++ )
{
//Ha kevesebb szavazat érkezett!
if( votes[j] < gVotes[i] )
{
//Modosítjuk az adatot!
votes[j] = gVotes[i];
voteid[j] = i;
//És itt a vége!
break;
}
}
}
}
}
//Ha senki nem szavazott!
if( !votes_select )
{
client_print(0, print_chat, "Senki nem szavazott xD");
}
//Amennyiben csak egy játékos kapott szavazatot!
else if( votes_select == 1 )
{
//Lefuttatjuk a VoteGiveHealth függvént a voteid[0]-án!
VoteGiveHealth( voteid[0] );
}
//Amennyiben kettő játékos kapott szavazatot!
else if( votes_select == 2 )
{
//Amennyiben a szavazatok eggyenlőek a kettő fél között!
if( votes[0] == votes[1] )
{
//Valamelyiken lefuttatjuk a VoteGiveHealth függvényt!
client_print(0, print_chat, "Kivalasztas veletlenszeruen, mert ketto jatekos egyenlo szavazatot kapott!" );
VoteGiveHealth( voteid[ random(2) ] );
}
//Amennyiben az első több szavazatot kapott mint a második!
else if( votes[0] > votes[1] )
//Az első kapja meg az életet!
VoteGiveHealth( voteid[0] );
//Amennyiben a második többet kapot mint az első!
else
//A második kapja meg az életet!
VoteGiveHealth( voteid[1] );
}
//Ha 3 külömböző emberre szavaztak!
else
{
//A 3ember közül egyet kiválasztunk véletenszerűen!
client_print(0, print_chat, "Harom ember kozul cska egy kaphat eletet:D" );
VoteGiveHealth( voteid[ random(3) ] );
}
menu_destroy(gVoteMenu);
gVoting = 0;
}
VoteGiveHealth(id)
{
if( is_user_alive(id) )
{
set_user_health(id, 255);
new szName[32];
get_user_name(id, szName, charsmax(szName));
client_print(0, print_chat, "%s kapott 255 eletet!", szName);
}
}
Egy menü több handlerrel top - Ebben szerepel egy almenü is, erről már feljebb beszéltem! Itt a kettő menünek egy handlere lesz!
Kód:
#include <amxmodx>
public plugin_init()
{
register_clcmd( "my_awesome_menu","AwesomeMenu");
}
public AwesomeMenu(id)
{
new menu = menu_create("\rValassz a menubol:", "menu_handler")
//Jegyezzuk meg hogy itt a 3parameter elott ott al egy m betu, ez jelzi nekunk hogy ez a MAIN menu!
menu_additem(menu, "\wSemmi", "m1", 0);
menu_additem(menu, "\wUgras az almenube", "m2", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
SubMenu(id)
{
new menu = menu_create("\rValassz az elmenubol:", "menu_handler")
//Jegyezzuk meg hogy itt a 3parameter elott ott al egy s betu, ez jelzi nekunk hogy ez a SUB menu!
menu_additem(menu, "\wAlmenu #1", "s1", 0);
menu_additem(menu, "\wAlmenu #2", "s2", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
public menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
//Lekérjük az első karakterét, tehát s vagy m!
new key = str_to_num(data[1]);
//Bele megyünk s vagy m előjel alapján!
switch( data[0] )
{
//Ez a sima menünk!
case 'm':
{
switch( key )
{
case 1:
{
client_print(id, print_chat, "Ez egy semmi");
}
case 2:
{
SubMenu(id);
}
}
}
//Ez az almenünk!
case 's':
{
switch( key )
{
case 1:
{
client_print(id, print_chat, "Almenü: Semmi 1");
}
case 2:
{
client_print(id, print_chat, "Almenü: Semmi 2");
}
}
//Megnyitjuk a főmenüt!
AwesomeMenu(id);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Menü visszahívása topKód:
#include <amxmodx>
#include <hamsandwich>
//Változó létrehozása amelly tárolja a visszahívást!
new g_MenuCallback;
public plugin_init()
{
register_clcmd( "my_player_menu","RespawnMenu");
//Visszahívási függvény csinálása!
g_MenuCallback = menu_makecallback( "menuitem_callback" );
}
public RespawnMenu(id)
{
new menu = menu_create("\rValaszd ki a jatekost, akit ujra akarsz eleszteni!:", "menu_handler");
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));
//Visszhíváshoz beállítjuk a változónk értékét!
menu_additem(menu, szName, szTempid, 0, g_MenuCallback);
//Az utolsó paraméter a visszahívás!
}
menu_display(id, menu, 0);
}
//Ez a visszahivási függvény. Visszatérések: ITEM_ENABLED és ITEM_DISABLED
public menuitem_callback(id, menu, item)
{
//A menüpont tárolásához szükséges változók készítése!
new data[6], szName[64];
new access, callback;
//Lekérjük az információkat!
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
//Jegyzet - a visszahívásnak meg kell eggyeznie a g_MenuCallback-al!
//A játékosunk lesz a tempid!
new tempid = str_to_num(data);
//Amennyiben él a játékos vissza térünk ITEM_DISABLED-el, tehát "kikapcsolva"!
if( is_user_alive( tempid ) )
{
return ITEM_DISABLED;
}
//Ha nem él akkor vissza térünk ITEM_ENABLED, tehát "bekapcsolva"
return ITEM_ENABLED;
}
public menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new tempid = str_to_num(data);
//Ha a játékos nem él akkor bele megy az elágazásba!
//Jegyzet - Azért van itt ellenőrzés mert lehet közben újra éledt a játékos, jobb biztosra menni:)
if( !is_user_alive(tempid) )
{
//Respawn them
ExecuteHamB(Ham_CS_RoundRespawn, tempid);
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
newmenus.inc top - A newmenus függvénytárról minden információ
Kód:
//The following defines are to be used with the native menu_setprop
#define MPROP_PERPAGE 1 /* Number of items per page (param1 = number, 0=no paginating, 7=default) */
#define MPROP_BACKNAME 2 /* Name of the back button (param1 = string) */
#define MPROP_NEXTNAME 3 /* Name of the next button (param1 = string) */
#define MPROP_EXITNAME 4 /* Name of the exit button (param1 = string) */
#define MPROP_TITLE 5 /* Menu title text (param1 = string) */
#define MPROP_EXIT 6 /* Exit functionality (param1 = number, see MEXIT constants) */
#define MPROP_NOCOLORS 8 /* Sets whether colors are not auto (param1 = number, 0=default) */
#define MPROP_NUMBER_COLOR 10 /* Color indicator to use for numbers (param1 = string, "\r"=default) */
//These two defines are to be used when changing a menu's MPROP_EXIT value
#define MEXIT_ALL 1 /* Menu will have an exit option (default)*/
#define MEXIT_NEVER -1 /* Menu will not have an exit option */
//For more details about the following natives, check your actual newmenus.inc
native menu_create(const title[], const handler[], ml=0);
native menu_makecallback(const function[]);
native menu_additem(menu, const name[], const info[]="", paccess=0, callback=-1);
native menu_pages(menu);
native menu_items(menu);
native menu_display(id, menu, page=0);
native menu_find_id(menu, page, key);
native menu_item_getinfo(menu, item, &access, info[], infolen, name[]="", namelen=0, &callback);
native menu_item_setname(menu, item, const name[]);
native menu_item_setcmd(menu, item, const info[]);
native menu_item_setcall(menu, item, callback=-1);
native menu_destroy(menu);
native player_menu_info(id, &menu, &newmenu, &menupage=0);
native menu_addblank(menu, slot=1);
native menu_setprop(menu, prop, ...);
native menu_cancel(player);
Jegyzetek topHa a menü hibás akkor a visszatérés: -1
Ha csak egy menüt használsz akkor célszerű ha csinálsz egy konstans menüt, tehát nem kell létrehozni, és megszüntetni függvényenként!
Ezek csak példák, egy menühöz több minden is kell! A fórum megfelelő részén szívesen segítünk!
Elérhető színek!: (ez az összes elérhető szín, új színeket nem tudsz csinálni!)
Fehér - \w
Citrom - \y
Piros - \r
Szürke - \d
A szöveg igazítása középre- \R
A menü nem jelenik meg ha nincs menüpont!
A menü eltüntetése:
Kód:
show_menu(id, 0, "^n", 1);
A következő oldalon, előző oldal, és a kilépés menüpont eltüntetése:
Kód:
menu_setprop(menu, MPROP_PERPAGE, 0);
1
**********************************************************************************************************