Raised This Month: $51 Target: $400
 12% 

[Question]Hud Massage Menu


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
daniel46
Senior Member
Join Date: Dec 2011
Old 08-15-2012 , 05:07   [Question]Hud Massage Menu
Reply With Quote #1

hi can some one help me on hud msg menu? ive tried to make 1 but it just did not work here what i did

Code:
#include <amxmodx>
#include <hud_menu>

public plugin_init() {
	
	register_clcmd("say menu", "test")
}

public test(id)
{
	new menu = hudmenu_create("Piza", "menu_test", 255, 0, 0, 0.1, 0.15, 1)
	hudmenu_additem(menu, "hi,item 1", 1)
	hudmenu_additem(menu, "byr,item 2", 2)
	hudmenu_additem(menu, "hello,item 3", 3)
	
	hudmenu_show(id, menu, 0)
}

public menu_test(id, item, key, menu)
{
	
	new Data[7], Name[64];
	new Access, Callback;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, Callback);
	
	new Key = str_to_num(Data);
	
	switch (Key)
	{
		case 1:{
		client_print(0, print_chat, "Hi!")
		}
			
		case 2:{
        client_print(0, print_chat, "Bye!")
		}
		
		case 3:{
		client_print(0, print_chat, "Hello!")
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
its just example but i menu work but when i click nothing hepend...
daniel46 is offline
quilhos
Veteran Member
Join Date: Jun 2010
Old 08-15-2012 , 05:28   Re: [Question]Hud Massage Menu
Reply With Quote #2

Post here the include
__________________
ELO RATING SYSTEM - SQL [COMPLETE]
Quote:
Originally Posted by Liverwiz View Post
DDDRRRRAAAAMMMMAAAAA!!!???

Put this shit on pause while i go get some popcorn!!
quilhos is offline
dark_style
Senior Member
Join Date: Jul 2009
Location: Bulgaria
Old 08-15-2012 , 08:04   Re: [Question]Hud Massage Menu
Reply With Quote #3

You don't even need custom include for such thing. Search for Emp's menu tutorial, it explains everything.

Btw, what's the purpose of this plugin ? Menu which prints messages ? : /

Last edited by dark_style; 08-15-2012 at 10:17.
dark_style is offline
daniel46
Senior Member
Join Date: Dec 2011
Old 08-15-2012 , 08:05   Re: [Question]Hud Massage Menu
Reply With Quote #4

sec

Code:
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Hud Menu"
#define VERSION "1.0Beta"
#define AUTHOR "Destro"

#define MAX_MENUES 45

#define is_valid_menu(%1) ((0 <= %1 < MAX_MENUES) && g_hud_menu[%1][0])

const KEYSMENU = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)

enum _:hudm_config
{
	hudm_plugin,
	hudm_handler,
	hudm_color[3],
	hudm_posicion[2]
}

enum _:hudm_smalldata
{
	hudm_autopages,
	hudm_destroyer
}

new g_hudm_small_data[MAX_MENUES][hudm_smalldata]
new Array:g_hud_menu[MAX_MENUES][3]

enum _:hudm_pages
{
	p_current,
	p_allowed_back,
	p_allowed_next
}
new g_pages[33][hudm_pages]
new g_current_menu[33][2]

new g_MsgSync, g_maxplayers, null

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_menu("null_hudmenu", KEYSMENU, "menu_handler")
	
	g_MsgSync = CreateHudSyncObj()
	g_maxplayers = get_maxplayers()

	set_task(0.2, "check_menu", 81263, _, _, "b")
}

public plugin_natives()
{
	register_library("hud_menu")
	
	register_native("hudmenu_create", "create_menu")
	register_native("hudmenu_additem", "add_item", 1)
	register_native("hudmenu_settext", "set_text", 1)
	register_native("hudmenu_show", "show_hudmenu", 1)
	register_native("hudmenu_destroy", "destroy_menu", 1)
}

public check_menu()
{
	static menu
	for(new id; id <= 32; id++)
	{
		if(!is_user_connected(id) || g_current_menu[id][0] == -1)
			continue
			
		player_menu_info(id, menu, null, null)
		if(menu != g_current_menu[id][1])
			menu_handler(id, MENU_EXIT, 0)
	}
}

public client_connect(id)
	g_current_menu[id] = { -1, 0 }
		
public create_menu(plugin, params)
{
	new menu = get_menu_index()
	if(menu == -1)
	{
		log_error(AMX_ERR_NATIVE, "No hay espacio.%d menues cacheados", MAX_MENUES)
		return -1
	}

	new func_name[32], title[256], config[hudm_config], autopages = get_param(8)
	
	g_hud_menu[menu][0] = ArrayCreate(hudm_config, 1)
	g_hud_menu[menu][1] = ArrayCreate(autopages?467:512, 1)
	g_hud_menu[menu][2] = ArrayCreate(1, 1)

	get_string(2, func_name, charsmax(func_name))

	config[hudm_plugin] = plugin
	config[hudm_handler] = get_func_id(func_name, plugin)
	config[hudm_color][0] = get_param(3)
	config[hudm_color][1] = get_param(4)
	config[hudm_color][2] = get_param(5)
	config[hudm_posicion][0] = floatround((get_param_f(6)* 100))
	config[hudm_posicion][1] = floatround((get_param_f(7)* 100))
	
	if(autopages)
		get_string(1, title, charsmax(title))
	
	g_hudm_small_data[menu][hudm_autopages] = autopages
	g_hudm_small_data[menu][hudm_destroyer] = false
	
	ArrayPushArray(g_hud_menu[menu][0], config)
	ArrayPushString(g_hud_menu[menu][1], title)
	
	return menu
}

public add_item(menu, item_input[], num)
{
	if(!is_valid_menu(menu)) {
		log_error(AMX_ERR_NATIVE, "Invalid Menu: %d", menu)
		return 0
	}
	if(!g_hudm_small_data[menu][hudm_autopages]) {
		log_error(AMX_ERR_NATIVE, "Autopaginar esta deshabilitado.Use hudmenu_settext")
		return 0
	}

	param_convert(2)

	ArrayPushString(g_hud_menu[menu][1], item_input)
	ArrayPushCell(g_hud_menu[menu][2], num)
	
	return 1
}

public set_text(menu, item_input[])
{
	if(!is_valid_menu(menu)) {
		log_error(AMX_ERR_NATIVE, "Invalid Menu: %d", menu)
		return 0
	}
	if(g_hudm_small_data[menu][hudm_autopages]) {
		log_error(AMX_ERR_NATIVE, "Autopaginar esta habilitado.Use hudmenu_additem")
		return 0
	}
	
	param_convert(2)
	ArraySetString(g_hud_menu[menu][1], 0, item_input)
	
	return 1
}

public show_hudmenu(id, menu, keysmenu, page)
{
	if(!is_valid_menu(menu)) {
		log_error(AMX_ERR_NATIVE, "Invalid Menu: %d", menu)
		return 0
	}
	if(id && !is_user_connected(id)) {
		log_error(AMX_ERR_NATIVE, "Invalid Player: %d", id)
		return 0
	}

	new text[512], config[hudm_config], len, pages_allowed[2]

	ArrayGetArray(g_hud_menu[menu][0], 0, config)
	ArrayGetString(g_hud_menu[menu][1], 0, text, charsmax(text))
	len = strlen(text)
	
	if(g_hudm_small_data[menu][hudm_autopages])
	{
		new init, util, show_items, items = ArraySize(g_hud_menu[menu][1])
		keysmenu = 0

		if(page) {
			util = page*7
			if(util < items) init = util
			else page=0
		}
		util=1;init++;show_items = min(init+7, items)
		
		len += formatex(text[len], charsmax(text)-len, " [%d/%d]^n", page+1, get_maxpages(items))

		for(new i=init; i < show_items && len < 467; i++)
		{
			len += formatex(text[len], charsmax(text)-len, "^n%d.", util++)
			ArrayGetString(g_hud_menu[menu][1], i, text[len], charsmax(text)-len)
			len = strlen(text)
		}
		
		if(items > 8) {
			if(page) {
				keysmenu |= (1<<7)
				len = add(text[len], charsmax(text)-len, "^n^n8.Atras")
				pages_allowed[0] = true
			}
			else
				len =  add(text[len], charsmax(text)-len, "^n^n#.Atras")
			
			if(items > init+7) {
				keysmenu |= (1<<8)
				len =  add(text[len], charsmax(text)-len, "^n9.Siguiente")
				pages_allowed[1] = true
			}
			else
				len =  add(text[len], charsmax(text)-len, "^n#.Siguiente")
		}
		add(text[len], charsmax(text)-len, "^n^n0.Salir")
		keysmenu |= get_keysmenu(show_items-init)
	}

	show_menu(id, keysmenu, " ", -1, "null_hudmenu")
	set_hudmessage(config[hudm_color][0], config[hudm_color][1], config[hudm_color][2],
	config[hudm_posicion][0]/100.0, config[hudm_posicion][1]/100.0, 0, 6.0, 999.0)
	ShowSyncHudMsg(id, g_MsgSync, text)
	
	if(!id) for(new i=1; i <= g_maxplayers; i++)
	{
		if(!is_user_connected(i)) continue
		
		if(g_current_menu[id][0] != -1)
			menu_handler(id, MENU_EXIT, 1)

		g_current_menu[i][0] = menu
		g_pages[i][p_current] = page
		g_pages[i][p_allowed_back] = pages_allowed[0]
		g_pages[i][p_allowed_next] = pages_allowed[1]
		player_menu_info(i, g_current_menu[i][1], null, null)
	}
	else {
		if(g_current_menu[id][0] != -1)
			menu_handler(id, MENU_EXIT, 1)

		g_current_menu[id][0] = menu
		g_pages[id][p_current] = page
		g_pages[id][p_allowed_back] = pages_allowed[0]
		g_pages[id][p_allowed_next] = pages_allowed[1]
		player_menu_info(id, g_current_menu[id][1], null, null)
	}

	return 1
}

public menu_handler(id, key, hud)
{
	new menu=g_current_menu[id][0]

	g_current_menu[id] = { -1, 0 }
	if(!hud) ClearSyncHud(id, g_MsgSync)

	if(!is_valid_menu(menu))
		return 1

	new config[hudm_config], item_num
	
	if(key != MENU_EXIT && g_hudm_small_data[menu][hudm_autopages])
	{
		if(key == 7 || key == 8) {
			if(key == 7 && g_pages[id][p_allowed_back])
				g_pages[id][p_current]--
			else if(key == 8 && g_pages[id][p_allowed_next])
				g_pages[id][p_current]++
			
			show_hudmenu(id, menu, KEYSMENU, g_pages[id][p_current])
			return 1
		}
		if(key == 9)
			key = MENU_EXIT
		else {
			item_num = ArrayGetCell(g_hud_menu[menu][2], key+(7*g_pages[id][p_current]))
			key++
		}
	}
	ArrayGetArray(g_hud_menu[menu][0], 0, config)

	callfunc_begin_i(config[hudm_handler], config[hudm_plugin])
	callfunc_push_int(id)
	callfunc_push_int(key)
	callfunc_push_int(item_num)
	callfunc_push_int(menu)
	callfunc_end()

	return 1
}

public destroy_menu(menu)
{
	if(!is_valid_menu(menu)) {
		log_error(AMX_ERR_NATIVE, "Invalid Menu: %d", menu)
		return 0
	}
	
	if(g_hudm_small_data[menu][hudm_destroyer])
		return 1
		
	g_hudm_small_data[menu][hudm_destroyer] = true

	for(new id=1; id <= g_maxplayers; id++)
	{
		if(!is_user_connected(id)) continue
		
		if(g_current_menu[id][0] == menu)
			menu_handler(id, MENU_EXIT, 0)
	}
	
	ArrayDestroy(g_hud_menu[menu][0])
	ArrayDestroy(g_hud_menu[menu][1])
	ArrayDestroy(g_hud_menu[menu][2])
	
	g_hud_menu[menu][0] = Array:0

	return 1
}

get_menu_index()
{
	for(new i; i < MAX_MENUES; i++)
		if(!g_hud_menu[i][0])
			return i
	return -1
}

get_keysmenu(items)
{
	new key = (1<<9)
	for(new i; i < items; i++)
		key |= (1<<i)
	return key
}

get_maxpages(items)
{
	new p=1, i=7
	while(items-1 > i) {
		i+=7
		p++
	}
	return p
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/
this is the main mod and this is the icn
Code:
#if defined _hud_menu_included
  #endinput
#endif
#define _hud_menu_included

native hudmenu_create(titulo[], handler[], r, g, b, Float:x, Float:y, autopage) 

native hudmenu_additem(menu, item[], num) 

native hudmenu_settext(menu, item[])

native hudmenu_show(player, menu, keysmenu, page=0) 

native hudmenu_destroy(menu)
daniel46 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 15:27.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode