Unlock list

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Umbrella swarm
Извън линия
Foreigner
Foreigner
Мнения: 5
Регистриран на: 06 Фев 2021, 16:16
Обратна връзка:

Unlock list

Мнение от Umbrella swarm » 14 Апр 2021, 15:45

Hey guys, I tried to add the unlock list but it didn't work for me
If one of you can help
I would be very grateful to him

Код за потвърждение: Избери целия код

Code : 
#include <amxmodx>
#include <engine>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <nvault>
#include <gunxpmod>
#include <hamsandwich>

#define PLUGIN	"Gun Xp Mod Shop"
#define AUTHOR	"Scr"
#define VERSION	"1.4"

#define TASK_SHOW_UPGRADES 10113
#define MAX_UNLOCKS 30
#define MAX_UNLOCKS_NAME_SIZE 64
#define MAX_UNLOCKS_DESC_SIZE 128

new g_menuPosition[33], gSelected[33];

enum _:iUnlocks
{ 
    UL_Knife, 
    UL_Pistol, 
    UL_Rifle, 
    UL_Grenade, 
    UL_Item
};

//all
new g_numberofitems[iUnlocks];
new g_itemindex[iUnlocks][MAX_UNLOCKS+1];
new g_itemcost[iUnlocks][MAX_UNLOCKS+1];
new g_itemlevel[iUnlocks][MAX_UNLOCKS+1];
new g_itemaccess[iUnlocks][MAX_UNLOCKS+1];
new g_itemname[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_NAME_SIZE+1];
new g_itemdesc[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_DESC_SIZE+1];
new g_itemwpn[iUnlocks][MAX_UNLOCKS+1];
new bool:g_PlayerItem[33][iUnlocks][MAX_UNLOCKS+1];

new Enabled, show_unlocks_text, g_msgHudSync1;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_dictionary("gunxpmod.txt");
	
	register_clcmd("say /unlocks", "menus")
	register_clcmd("say unlocks", "menus")
	register_clcmd("say /ul", "menus")
	register_clcmd("say ul", "menus")

	Enabled = register_cvar( "hud_enable", "1" ); // Plugin enabled? 1 = Yes, 0 = No.
	show_unlocks_text = register_cvar("gxm_unlocks_text","0"); // Show your level by : 1 = HUD message, 0 = Simple colored text message.

	register_menucmd(register_menuid("Unlocks Shop"), 1023, "action_item_upgrades");

	g_msgHudSync1 = CreateHudSyncObj()
}

public client_connect(id)
{
	static i, j
	for(i = 0; i < iUnlocks; ++i)
		for(j = 0; j <= MAX_UNLOCKS; ++j)
			g_PlayerItem[id][i][j] = false;
}

public client_disconnected(id)
{
	remove_task( TASK_SHOW_UPGRADES + id );
}

public showhud(id, task, key, pos, selection)
{
	if(!is_user_alive(id) || !get_pcvar_num(show_unlocks_text) || !get_pcvar_num(Enabled) )
	return;

	new id = task - TASK_SHOW_UPGRADES

	new plugin_id = g_itemindex[gSelected[id]][g_menuPosition[id] * 8 + key]
	new item_id = g_menuPosition[id] * 8 + key
	new func = get_func_id("gxm_item_enabled", plugin_id)
	new cost = g_itemcost[gSelected[id]][item_id] = true;
	new item = g_PlayerItem[id][gSelected[id]][item_id] = true;
	gSelected[id] = selection;
	action_item_upgrades(id, key)
	display_item_upgrades(id, pos, selection)

	set_hudmessage(0, 255, 255, 0.00, 0.12, 0, 0.0, 0.3, 0.0, 0.0)
	ShowSyncHudMsg(id, g_msgHudSync1, "%L", LANG_SERVER, "LEVEL_HUD_TEXT", g_itemname[gSelected[id]][item_id], cost, item, plugin_id, item_id, func)
	
	set_task(0.1, "task_show_upgrades", TASK_SHOW_UPGRADES + id)
}

public menus(id)
{
	new menu = menu_create("[\rGunXP] \yUnlocks", "upgrades_menu");
	new call = menu_makecallback("Call_Back");
	gSelected[id] = 0;
	new szMsg[256];
	
	format(szMsg, 255, "Knifes", (GetItemCount(g_PlayerItem[id][UL_Knife], g_numberofitems[UL_Knife]) == g_numberofitems[UL_Knife]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Knife], g_numberofitems[UL_Knife]), g_numberofitems[UL_Knife]);
	menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Knife] ? -1 : call);
	
	format(szMsg, 255, "Pistols", (GetItemCount(g_PlayerItem[id][UL_Pistol], g_numberofitems[UL_Pistol]) == g_numberofitems[UL_Pistol]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Pistol], g_numberofitems[UL_Pistol]), g_numberofitems[UL_Pistol]);
	menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Pistol] ? -1 : call);
	
	format(szMsg, 255, "Rifles", (GetItemCount(g_PlayerItem[id][UL_Rifle], g_numberofitems[UL_Rifle]) == g_numberofitems[UL_Rifle]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Rifle], g_numberofitems[UL_Rifle]), g_numberofitems[UL_Rifle]);
	menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Rifle] ? -1 : call);
	
	format(szMsg, 255, "Granades", (GetItemCount(g_PlayerItem[id][UL_Grenade], g_numberofitems[UL_Grenade]) == g_numberofitems[UL_Grenade]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Grenade], g_numberofitems[UL_Grenade]), g_numberofitems[UL_Grenade]);
	menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Grenade] ? -1 : call);
	
	format(szMsg, 255, "Items", (GetItemCount(g_PlayerItem[id][UL_Item], g_numberofitems[UL_Item]) == g_numberofitems[UL_Item]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Item], g_numberofitems[UL_Item]), g_numberofitems[UL_Item]);
	menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Item] ? -1 : call);

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
 
	menu_display(id, menu, 0);

	return PLUGIN_HANDLED;
}

public Call_Back(id, menu, item)
    return ITEM_DISABLED;

public upgrades_menu(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	gSelected[id] = item;
	g_menuPosition[id] = 0;
	display_item_upgrades(id, 0, item);
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;	
}

public plugin_natives()
{
	register_native("register_gxm_item", "register_unlock")
	register_native("register_item_gxm", "register_unlock")
}

public register_unlock(plugin, params)
{
	static item_section
	item_section = get_param(5)-1
	
	g_numberofitems[item_section]++;
	g_itemindex[item_section][g_numberofitems[item_section]] = plugin;
	get_string(1, g_itemname[item_section][g_numberofitems[item_section]], MAX_UNLOCKS_NAME_SIZE)
	get_string(2, g_itemdesc[item_section][g_numberofitems[item_section]], MAX_UNLOCKS_DESC_SIZE)
	g_itemcost[item_section][g_numberofitems[item_section]] = get_param(3);
	g_itemlevel[item_section][g_numberofitems[item_section]] = get_param(4);
	g_itemaccess[item_section][g_numberofitems[item_section]] = get_param(6) ? get_param(6) : 0;
	g_itemwpn[item_section][g_numberofitems[item_section]] = get_param(7);
}

//ALL
public display_item_upgrades(id, pos, selection)
{
	if(!is_user_alive(id))
	   return;

	static menuBody[510], len;
	len = 0;
	gSelected[id] = selection;

	if(pos < 0)
		return;
	
	new start = pos * 8
	if(start >= g_numberofitems[selection])
		start = pos = g_menuPosition[id];

	len += formatex(menuBody[len], sizeof menuBody - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_SHOP",  get_user_xp(id), get_user_max_level(id))

	new end = start + 8
	new keys = MENU_KEY_0

	if(end > g_numberofitems[selection])
		end = g_numberofitems[selection];
	
	new b = 0
	for(new a = start; a < end; ++a) 
	{
		new i = a + 1
		new money, level

		money = get_user_xp(id)
		level = get_user_level(id)

		if( g_PlayerItem[id][selection][i] ) 
			len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_BOUGHT", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])

		else if(g_itemaccess[selection][i] == GUN_FIRST_ACCESS_ID && !(get_user_flags(id) & GUN_FIRST_ACCESS))
			len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS1", ++b, g_itemname[selection][i], GUN_FIRST_ACCESS_TEXT);

		else if(g_itemaccess[selection][i] == GUN_SECOND_ACCESS_ID && !(get_user_flags(id) & GUN_SECOND_ACCESS))
			len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS2", ++b, g_itemname[selection][i], GUN_SECOND_ACCESS_TEXT);

		else if(g_itemaccess[selection][i] == GUN_THIRD_ACCESS_ID && !(get_user_flags(id) & GUN_THIRD_ACCESS))
			len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS3", ++b, g_itemname[selection][i], GUN_THIRD_ACCESS_TEXT);  

		else if(level < g_itemlevel[selection][i])  
			len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_LEVEL", ++b, g_itemname[selection][i], g_itemlevel[selection][i], g_itemcost[selection][i])
			
		else if(PatrArTuri(id, g_itemwpn[selection][i]))
			len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_NO_MORE", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
		
		else if( money < g_itemcost[selection][i] ) 
			len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
		else 
		{
			keys |= (1<<b)
			
			switch(g_itemaccess[selection][i])
			{
				case GUN_FIRST_ACCESS_ID:
					len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i], GUN_FIRST_ACCESS_TEXT)

				case GUN_SECOND_ACCESS_ID:
					len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i], GUN_SECOND_ACCESS_TEXT)

				case GUN_THIRD_ACCESS_ID:
					len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i], GUN_THIRD_ACCESS_TEXT) 
					
				default:
					len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
			}
		}
	}

	if(end != g_numberofitems[selection])
	{
		len += formatex(menuBody[len], sizeof menuBody - 1 - len, "^n\r9. \w%L\r^n0. \w%L", id, "NEXT_MENU", id, pos ? "BACK_MENU" : "EXIT_MENU")
		keys |= MENU_KEY_9
	}
	else
	{
		len += formatex(menuBody[len], sizeof menuBody - 1 - len, "^n\r0. \w%L", id, pos ? "BACK_MENU" : "EXIT_MENU")
	}
	
	show_menu(id, keys, menuBody, -1, "Unlocks Shop")
}

public action_item_upgrades(id, key)
{
	switch(key) 
	{
		case 8: display_item_upgrades(id, ++g_menuPosition[id], gSelected[id]);
		case 9: display_item_upgrades(id, --g_menuPosition[id], gSelected[id]);
		default:
		{
			if(!is_user_alive(id))
				return PLUGIN_HANDLED;
			
			++key
			new money
			new plugin_id = g_itemindex[gSelected[id]][g_menuPosition[id] * 8 + key]
			new item_id = g_menuPosition[id] * 8 + key
			new func = get_func_id("gxm_item_enabled", plugin_id)

			money = get_user_xp(id)
			new cost = g_itemcost[gSelected[id]][item_id];
			
			if(money >= cost)
			{
				callfunc_begin_i(func, plugin_id)
				callfunc_push_int(id)
				callfunc_end()

				g_PlayerItem[id][gSelected[id]][item_id] = true

				new overall = money - cost
				set_user_xp(id, overall)

				client_printcolor(1, "/yItem Bought, Item: /g%s.", g_itemname[gSelected[id]][item_id])
				client_printcolor(1, "/yDescripcion: /g%s.", g_itemdesc[gSelected[id]][item_id])
				display_item_upgrades(id, g_menuPosition[id], gSelected[id]);
			}
		}
	}
	return PLUGIN_HANDLED;
}

stock client_printcolor( const id, const input[], any:... )
{
    new iCount = 1, iPlayers[32]
    
    new sNewMsg[191]
    vformat( sNewMsg, charsmax ( sNewMsg ), input, 3 )
    //format ( sNewMsg, charsmax ( sNewMsg ), "^4[x^1 %s", sNewMsg )
    
    replace_all ( sNewMsg, charsmax ( sNewMsg ), "/g", "^4") // green txt
    replace_all ( sNewMsg, charsmax ( sNewMsg ), "/y", "^1") // orange txt
    replace_all ( sNewMsg, charsmax ( sNewMsg ), "/t", "^3") // team txt
    
    if ( id )
        iPlayers[0] = id
    else
        get_players ( iPlayers, iCount, "ch" )
        
    for ( new i; i < iCount; i++ )
    {
        if ( is_user_connected ( iPlayers[i] ) )
        {
            message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "SayText" ), _, iPlayers[i] )
            write_byte ( iPlayers[i])
            write_string ( sNewMsg)
            message_end ()
        }
    }
}

stock bool:PatrArTuri(id, wpn)
{
	static i, j
	for(i = 0; i < iUnlocks; ++i)
	{
		for(j = 0; j <= MAX_UNLOCKS; ++j)
		{
			if(g_PlayerItem[id][i][j])
			{
				if(g_itemwpn[i][j] == wpn)
					return true
			}
		}
	}
	
	return false
}

GetItemCount(array[], size)
{
    new count = 0;

    for(new i = 1; i <= size; i++)
        if(array[i])
            count++;
    
    return count;
}

  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 12 госта