←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Opcja w menu raz na mapę

  • +
  • -
killer98 - zdjęcie killer98 23.01.2014

Jak dodać do menu VIPa funkcję otwieraną raz na mapę?

Odpowiedz

  • +
  • -
glut - zdjęcie glut 23.01.2014

#include <amxmodx>

new bool: funkcja[33];

public plugin_init()
{
	register_plugin("menu","1.0","glut")
	
	register_clcmd("say /sklep","sklep")
}
public client_connect(id)
	funkcja[id]=false;

public sklep(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_H)){
		client_print(id, print_chat, "Menu jest tylko dla VIP'ow")
		return PLUGIN_HANDLED;
	}
	
	new menu = menu_create("Menu","sklep_cd")
	menu_additem(menu,"Opcja 1")
	menu_additem(menu,"Opcja 2")
	menu_additem(menu,"Opcja 3")
	
	menu_display(id, menu,0);
	return PLUGIN_HANDLED;
}
public sklep_cd(id,menu,item)
{
	switch(item)
	{
		case 0:
		{
			if(funkcja[id])
			{
				client_print(id,print_chat,"Wybrales na tej mapie juz ta funkcje")
				return PLUGIN_HANDLED;
				
			}
			else
			{
				client_print(id,print_chat,"Wybrales opcje 1")
				funkcja[id] = true;
			}
		}
		case 1:
		{
			client_print(id,print_chat,"Wybrales opcje 2")
		}
		case 2:
		{
			client_print(id,print_chat,"Wybrales opcje 3")
		}
	}
	return PLUGIN_HANDLED
}
Odpowiedz

  • +
  • -
glut - zdjęcie glut 23.01.2014

Automatyczna wiadomość


Ten temat został przeniesiony z forum

AMX Mod XPytania

do

Scripting AMXXPytania
Odpowiedz

  • +
  • -
Droso - zdjęcie Droso 24.01.2014

To nie jest raz na mapę, a raz na wbicie na serwer :P, wystarczy zrobić reconnecta.

 

+ Chcesz raz na mapę to użyj drzewek Trie.

 

I jako Key użyj nicku lub jeśli masz serwer only Steam to użyj Steam_ID :D.

 

Podpowiedź TrieCreate, TrieSetCell, TrieKeyExist - wystarczy tych funkcji tylko użyć :)

Odpowiedz

  • +
  • -
Niide - zdjęcie Niide 24.01.2014

A czy tak to nie zadziała?

#include <amxmodx>

new bool: funkcja[33] = false;

public plugin_init()
{
	register_plugin("menu","1.0","glut")
	
	register_clcmd("say /sklep","sklep")
}

public sklep(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_H)){
		client_print(id, print_chat, "Menu jest tylko dla VIP'ow")
		return PLUGIN_HANDLED;
	}
	
	new menu = menu_create("Menu","sklep_cd")
	menu_additem(menu,"Opcja 1")
	menu_additem(menu,"Opcja 2")
	menu_additem(menu,"Opcja 3")
	
	menu_display(id, menu,0);
	return PLUGIN_HANDLED;
}
public sklep_cd(id,menu,item)
{
	switch(item)
	{
		case 0:
		{
			if(funkcja[id])
			{
				client_print(id,print_chat,"Wybrales na tej mapie juz ta funkcje")
				return PLUGIN_HANDLED;
				
			}
			else
			{
				client_print(id,print_chat,"Wybrales opcje 1")
				funkcja[id] = true;
			}
		}
		case 1:
		{
			client_print(id,print_chat,"Wybrales opcje 2")
		}
		case 2:
		{
			client_print(id,print_chat,"Wybrales opcje 3")
		}
	}
	return PLUGIN_HANDLED
}
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 24.01.2014

A czy tak to nie zadziała?

#include <amxmodx>

new bool: funkcja[33] = false;

public plugin_init()
{
	register_plugin("menu","1.0","glut")
	
	register_clcmd("say /sklep","sklep")
}

public sklep(id)
{
	if(!(get_user_flags(id) & ADMIN_LEVEL_H)){
		client_print(id, print_chat, "Menu jest tylko dla VIP'ow")
		return PLUGIN_HANDLED;
	}
	
	new menu = menu_create("Menu","sklep_cd")
	menu_additem(menu,"Opcja 1")
	menu_additem(menu,"Opcja 2")
	menu_additem(menu,"Opcja 3")
	
	menu_display(id, menu,0);
	return PLUGIN_HANDLED;
}
public sklep_cd(id,menu,item)
{
	switch(item)
	{
		case 0:
		{
			if(funkcja[id])
			{
				client_print(id,print_chat,"Wybrales na tej mapie juz ta funkcje")
				return PLUGIN_HANDLED;
				
			}
			else
			{
				client_print(id,print_chat,"Wybrales opcje 1")
				funkcja[id] = true;
			}
		}
		case 1:
		{
			client_print(id,print_chat,"Wybrales opcje 2")
		}
		case 2:
		{
			client_print(id,print_chat,"Wybrales opcje 3")
		}
	}
	return PLUGIN_HANDLED
}

Nie, bo jak ktoś wyjdzie, a wejdzie inny gracz, to ten inny gracz nie będzie mógł użyć tego czegoś co ma być raz na mapę.
sebul (24.01.2014 13:44):
Dodatkowo w tym kodzie brak niszczenia menu po wyborze opcji.
Odpowiedz

  • +
  • -
killer98 - zdjęcie killer98 24.01.2014

Mam menu z generatora.

chcę aby te dwie opcje były tak jak to wytłumaczył Niide ( Raz na mapę, jak jeden vip wybierze to inni nie mogą tego wybrać do końca mapy). Jak ktoś wybrał to ma pisać zamiast "[Raz na mape]" "[Wykorzystane]"

    menu_additem(menu,"\wOtworzenie cel &#092;y[Raz na mape]","",0,menu_callback_handler);
    if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
        active=true;
    }
    menu_additem(menu,"\wNoc na mapie &#092;y[Raz na mape]","",0,menu_callback_handler);
    if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
        active=true;
    }
 
===========================================================================
 
public menu_6_handler(id){
    if(get_pdata_cbase(id, 369)==-1){
        jail_open_cele();
    }
}
public menu_7_handler(id){
    if(get_pdata_cbase(id, 369)==-1){
        set_lights("z")
    }
}

A to tylko dla jednego gracza raz na mapę ( każdy gracz może wybrać raz na mapę). Jak gracz wykorzystał to ma pisać [Wykorzystane]

public menu_2_handler(id){
    if(get_pdata_cbase(id, 369)==-1){
        give_item(id, "weapon_deagle");
        give_item(id, "ammo_50ae");
        weapon_id=find_ent_by_owner(-1, "weapon_deagle", id);
        if(weapon_id)cs_set_weapon_ammo(weapon_id, 1);
        cs_set_user_bpammo(id, CSW_DEAGLE, 0);
    }
}
 
=================================================
 
    menu_additem(menu,"\w&#092;rDeagle 1 ammo","",0,menu_callback_handler);
    if(menu_callback(id, menu, ++num)==ITEM_ENABLED){
        active=true;
    }
Odpowiedz