←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Menu raz na rundę

Zablokowany

  • +
  • -
.minD - zdjęcie .minD 09.05.2010

Mam sobie menu z klasami, które wyświetla się od razu po wejściu na serwer. Pozniej po wpisaniu /klasa mozna znowu to menu z wyborem otworzyc, lecz chcę, żeby można je było włączyć tylko raz na rundę.

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>

#define PLUGIN "Klasy"
#define VERSION "1.0"
#define AUTHOR ".minD"

#define TASK_SHOWMENU 12000


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /klasa","mymenu");
register_clcmd("say_team /klasa","mymenu");
}

public client_putinserver(id)
set_task(1.0, "show_menu_", id+TASK_SHOWMENU);

public show_menu_(tid){
new id=tid-TASK_SHOWMENU;
new iTeam=get_user_team(id);

new menu_id, keys;
new menuUp = player_menu_info( id, menu_id, keys );

if ( iTeam && (menuUp <= 0 || menu_id < 0) )
//Tu pokazujemy menu
mymenu(id);
else
set_task(1.0, "show_menu_", tid);
}

public mymenu(id){
new MyMenu=menu_create("OMG","cbMyMenu");

menu_additem(MyMenu,"ikdede");//item=0
menu_additem(MyMenu,"ikde");//item=1

menu_display(id, MyMenu,0);
return PLUGIN_HANDLED;
}
public cbMyMenu(id, menu, item){
switch(item){
case 0:{
cs_set_user_model (id,"ikdede")
give_item (id, "weapon_m4a1");
give_item (id, "weapon_p228");
give_item (id, "ammo_556nato");
give_item (id, "ammo_556nato");
give_item (id, "ammo_556nato");
client_print(id, print_chat, "ikdede.!");
}
case 1:{
cs_set_user_model (id,"iksde")
give_item (id, "weapon_g3sg1");
give_item (id, "weapon_fiveseven");
give_item (id, "ammo_762nato");
give_item (id, "ammo_762nato");
give_item (id, "ammo_762nato");
client_print(id, print_chat, "ikde.!");
}
}
client_print(id, print_chat, "Aby zmienic klase wpisz /klasa");
menu_destroy(menu);
return PLUGIN_HANDLED;

}
Odpowiedz

  • +
  • -
R3X - zdjęcie R3X 09.05.2010

Dodajesz licznik [tablica 33 elementowa] i liczysz użycia. Jeśli przekroczysz limit (dałem stałą, możesz brać z cvar) nie pokazuj menu. Na nową rundę reset liczników, to samo przy wejściu gracza.
Nowe linie oznaczyłem komentarzami, żebyś łatwiej je odnalazł.
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <engine>

#define PLUGIN "Klasy"
#define VERSION "1.0"
#define AUTHOR ".minD"

#define TASK_SHOWMENU 12000

//2 NOWE
#define USES_PER_ROUND 1
new giUses[33];

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /klasa","mymenu");
register_clcmd("say_team /klasa","mymenu");

register_event("HLTV", "eventNewRound", "a", "1=0", "2=0");//NOWA
}

public client_putinserver(id){
giUses[id] = 0;//NOWA
set_task(1.0, "show_menu_", id+TASK_SHOWMENU);
}
//NOWA FUNKCJA
public eventNewRound(){
for(new i=1;i<33;i++)
giUses[i] = 0;
}

public show_menu_(tid){
new id=tid-TASK_SHOWMENU;
new iTeam=get_user_team(id);

new menu_id, keys;
new menuUp = player_menu_info( id, menu_id, keys );

if ( iTeam && (menuUp <= 0 || menu_id < 0) )
//Tu pokazujemy menu
mymenu(id);
else
set_task(1.0, "show_menu_", tid);
}

public mymenu(id){
if(giUses[id] >= USES_PER_ROUND){//NOWA
client_print(id, print_chat, "* W tej rundzie juz nie mozesz uzyc tej komendy");//NOWA
return PLUGIN_HANDLED;//NOWA
}
giUses[id]++;//NOWA

new MyMenu=menu_create("OMG","cbMyMenu");

menu_additem(MyMenu,"ikdede");//item=0
menu_additem(MyMenu,"ikde");//item=1

menu_display(id, MyMenu,0);
return PLUGIN_HANDLED;
}
public cbMyMenu(id, menu, item){
switch(item){
case 0:{
cs_set_user_model (id,"ikdede")
give_item (id, "weapon_m4a1");
give_item (id, "weapon_p228");
give_item (id, "ammo_556nato");
give_item (id, "ammo_556nato");
give_item (id, "ammo_556nato");
client_print(id, print_chat, "ikdede.!");
}
case 1:{
cs_set_user_model (id,"iksde")
give_item (id, "weapon_g3sg1");
give_item (id, "weapon_fiveseven");
give_item (id, "ammo_762nato");
give_item (id, "ammo_762nato");
give_item (id, "ammo_762nato");
client_print(id, print_chat, "ikde.!");
}
}
client_print(id, print_chat, "Aby zmienic klase wpisz /klasa");
menu_destroy(menu);
return PLUGIN_HANDLED;

}
Odpowiedz
Zablokowany