Am să fac imediat un tutorial despre meniuri.
1. Bun, voi face un meniu ( shop ) cu două arme, deci vom avea nevoie de modulul fun şi cstrike:
Code: Select all
#include < fun >
#include < cstrike >
Code: Select all
native get_user_credits ( id );
native set_user_credits ( id, credits );
Code: Select all
register_clcmd ( "say /shop", "ShowShopMenu" );
- ShowShopMenu » numele public-ului unde comanda va acţiona, în cazul nostru public-ul cu meniu.
3. Creeăm public-ul ShowShopMenu cu param-ul id iar în el vom adăuga următoarele:
Code: Select all
new menu = menu_create ( "Nume Meniu", "Menu_Giver" ); // nume meniu si numele public-ului care va actiona ( handler-ul )
menu_additem ( menu, "AK47 - 2 credite", "1", 0 ); // slot 1
menu_additem ( menu, "M4A1 - 3 credite", "2", 0 ); // slot
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL ); // butonul exit
menu_display ( id, menu, 0 ); // afiseaza meniul
return 1;
Code: Select all
public Menu_Giver ( id, menu, item ) { // param-urile
if( item == MENU_EXIT ) // daca butonul apasat este cel EXIT, plugin-ul sa se opreasca
{
return 1;
}
new data [ 6 ], szName [ 64 ]; // variabile
new access, callback; // variabile
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback ); // cautam detalii despre meniu
new key = str_to_num ( data ); // butonul pe care apasa
switch ( key ) // aici va veni pe CAZURI, cazul 1, cazul 2 ( pe ce buton apasa )
{
case 1:
{
new iCredits = get_user_credits ( id ) - 2; // cauta creditele jucatorului si scade 2
if ( iCredits < 0 ) { // daca nu are destule credite ( 2 ) atunci ii va aparea un mesaj
client_print ( id, print_chat, "Nu ai destule credite, necesare 2 !" ); // mesaj
return 1; // plugin-ul se opreste
}
else {
give_item ( id, "weapon_ak47" ); // ii dam arma ( ak47 )
cs_set_user_bpammo ( id, CSW_AK47, 90 ); // ii setam gloantele ( 90 )
set_user_credits ( id, iCredits ); // ii setam noile credite ( -2 )
return 1; // plugin-ul se opreste
}
}
case 2:
{
new iCredits = get_user_credits ( id ) - 3; // cauta creditele jucatorului si scade 3
if ( iCredits < 0 ) { // daca nu are destule credite ( 3 ) atunci ii va aparea un mesaj
client_print ( id, print_chat, "Nu ai destule credite, necesare 3 !" ); // mesaj
return 1; // plugin-ul se opreste
}
else {
give_item ( id, "weapon_m4a1" ); // ii dam arma ( m4a1 )
cs_set_user_bpammo ( id, CSW_M4A1, 90 ); // ii setam gloantele ( 90 )
set_user_credits ( id, iCredits ); // ii setam noile credite ( -3 )
return 1; // plugin-ul se opreste
}
}
}
menu_destroy ( menu ); // distruge meniul
return 1; // plugin-ul se opreste
}
Plugin-ul dvs. trebuie să arate aşa:
Code: Select all
/* Plugin generated by AMXX-Studio */
#include < amxmodx >
#include < fun >
#include < cstrike >
#define PLUGIN "Plug-in Nou"
#define VERSION "0.1"
#define AUTHOR "hadesownage"
native get_user_credits ( id );
native set_user_credits ( id, credits );
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd ( "say /shop", "ShowShopMenu" );
}
public ShowShopMenu ( id ) {
new menu = menu_create ( "Nume Meniu", "Menu_Giver" ); // nume meniu si numele public-ului care va actiona ( handler-ul )
menu_additem ( menu, "AK47 - 2 credite", "1", 0 ); // slot 1
menu_additem ( menu, "M4A1 - 3 credite", "2", 0 ); // slot
menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL ); // butonul exit
menu_display ( id, menu, 0 ); // afiseaza meniul
return 1;
}
public Menu_Giver ( id, menu, item ) { // param-urile
if( item == MENU_EXIT ) // daca butonul apasat este cel EXIT, plugin-ul sa se opreasca
{
return 1;
}
new data [ 6 ], szName [ 64 ]; // variabile
new access, callback; // variabile
menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback ); // cautam detalii despre meniu
new key = str_to_num ( data ); // butonul pe care apasa
switch ( key ) // aici va veni pe CAZURI, cazul 1, cazul 2 ( pe ce buton apasa )
{
case 1:
{
new iCredits = get_user_credits ( id ) - 2; // cauta creditele jucatorului si scade 2
if ( iCredits < 0 ) { // daca nu are destule credite ( 2 ) atunci ii va aparea un mesaj
client_print ( id, print_chat, "Nu ai destule credite, necesare 2 !" ); // mesaj
return 1; // plugin-ul se opreste
}
else {
give_item ( id, "weapon_ak47" ); // ii dam arma ( ak47 )
cs_set_user_bpammo ( id, CSW_AK47, 90 ); // ii setam gloantele ( 90 )
set_user_credits ( id, iCredits ); // ii setam noile credite ( -2 )
return 1; // plugin-ul se opreste
}
}
case 2:
{
new iCredits = get_user_credits ( id ) - 3; // cauta creditele jucatorului si scade 3
if ( iCredits < 0 ) { // daca nu are destule credite ( 3 ) atunci ii va aparea un mesaj
client_print ( id, print_chat, "Nu ai destule credite, necesare 3 !" ); // mesaj
return 1; // plugin-ul se opreste
}
else {
give_item ( id, "weapon_m4a1" ); // ii dam arma ( m4a1 )
cs_set_user_bpammo ( id, CSW_M4A1, 90 ); // ii setam gloantele ( 90 )
set_user_credits ( id, iCredits ); // ii setam noile credite ( -3 )
return 1; // plugin-ul se opreste
}
}
}
menu_destroy ( menu ); // distruge meniul
return 1; // plugin-ul se opreste
}
Exprimăţi recunoştinţa dacă ţi-a fost de folos acest tutorial !