Member
|
01-06-2021
, 11:11
Help Gunxpmod_shop unlock problems
|
#1
|
hey all i have this gunxpmod_shop plugin this plugin works fine but wehen i register any item or rifle not showing in /ul i dont know wehere is the problem
Code:
Quote:
#include <amxmodx>
#include <gunxpmod>
#define PLUGIN "Gun Xp Mod Shop"
#define AUTHOR "badboy"
#define VERSION "1.4"
#define MAX_UNLOCKS 500
#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_itemname[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_NAME_SIZE+1];
new g_itemdesc[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_DESC_SIZE+1];
new g_itemlevel[iUnlocks][MAX_UNLOCKS+1];
new g_itemcost[iUnlocks][MAX_UNLOCKS+1];
new g_itemindex[iUnlocks][MAX_UNLOCKS+1];
new g_itemaccess[iUnlocks][MAX_UNLOCKS+1];
new g_itemwpn[iUnlocks][MAX_UNLOCKS+1];
new bool:g_PlayerItem[33][iUnlocks][MAX_UNLOCKS+1];
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")
register_clcmd("say /items", "display_items")
register_clcmd("say items", "display_items")
}
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 menus(id)
{
new menu = menu_create("\r[GunXP] \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" : "\r", 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_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_BACK)
{
}
gSelected[id] = item;
g_menuPosition[id] = 0;
display_item_upgrades(id, 0, item);
}
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]++;
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_itemlevel[item_section][g_numberofitems[item_section]] = get_param(4);
g_itemcost[item_section][g_numberofitems[item_section]] = get_param(3);
g_itemindex[item_section][g_numberofitems[item_section]] = plugin;
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_printcolors ( 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;
}
|
unlock >
Code:
Quote:
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <gunxpmod>
new PLUGIN_NAME[] = "Unlock : Parachute"
new PLUGIN_AUTHOR[] = "xbatista"
new PLUGIN_VERSION[] = "1.0"
new const parachute_model[] = "models/parachute.mdl"
new bool:has_parachute[33]
new para_ent[33]
new g_parachute_FallSpeed, g_parachute_Detach
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
register_gxm_item("Parachute VIP", "Gives you parachute", 100, 1, GUN_SECTION_ITEMS, 1, 2)
g_parachute_FallSpeed = register_cvar("gxm_parachute_fallspeed", "20")
g_parachute_Detach = register_cvar("gxm_parachute_detach", "1")
register_forward(FM_PlayerPreThink,"PlayerPree_Think");
}
public plugin_precache()
engfunc(EngFunc_PrecacheModel, parachute_model)
public gxm_item_enabled(id) {
has_parachute[id] = true
}
public client_connect(id)
{
parachute_reset(id)
has_parachute[id] = false
}
parachute_reset(id)
{
if (para_ent[id] > 0)
{
if ( pev_valid(para_ent[id]) )
engfunc(EngFunc_RemoveEntity, para_ent[id])
}
has_parachute[id] = false
para_ent[id] = 0
}
public PlayerPree_Think(id)
{
//parachute.mdl animation information
//0 - deploy - 84 frames
//1 - idle - 39 frames
//2 - detach - 29 frames
if (!is_user_alive(id) || !has_parachute[id] )
return
new Float:fallspeed = get_pcvar_float(g_parachute_FallSpeed) * -1.0
new Float:frame
new button = pev(id, pev_button)
new oldbutton = pev(id, pev_oldbuttons)
new flags = pev(id, pev_flags)
if (para_ent[id] > 0 && (flags & FL_ONGROUND))
{
set_view(id, CAMERA_NONE)
if (get_pcvar_num(g_parachute_Detach))
{
if ( pev(para_ent[id],pev_sequence) != 2 )
{
set_pev(para_ent[id], pev_sequence, 2)
set_pev(para_ent[id], pev_gaitsequence, 1)
set_pev(para_ent[id], pev_frame, 0.0)
set_pev(para_ent[id], pev_fuser1, 0.0)
set_pev(para_ent[id], pev_animtime, 0.0)
return
}
pev(para_ent[id],pev_fuser1, frame)
frame += 2.0
set_pev(para_ent[id],pev_fuser1,frame)
set_pev(para_ent[id],pev_frame,frame)
if ( frame > 254.0 )
{
engfunc(EngFunc_RemoveEntity, para_ent[id])
para_ent[id] = 0
}
}
else
{
engfunc(EngFunc_RemoveEntity, para_ent[id])
para_ent[id] = 0
}
return
}
if (button & IN_USE && get_user_team(id) == 2)
{
new Float:velocity[3]
pev(id, pev_velocity, velocity)
if (velocity[2] < 0.0)
{
if(para_ent[id] <= 0)
{
para_ent[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(para_ent[id] > 0)
{
set_pev(para_ent[id],pev_classname,"parachute")
set_pev(para_ent[id], pev_aiment, id)
set_pev(para_ent[id], pev_owner, id)
set_pev(para_ent[id], pev_movetype, MOVETYPE_FOLLOW)
engfunc(EngFunc_SetModel, para_ent[id], parachute_model)
set_pev(para_ent[id], pev_sequence, 0)
set_pev(para_ent[id], pev_gaitsequence, 1)
set_pev(para_ent[id], pev_frame, 0.0)
set_pev(para_ent[id], pev_fuser1, 0.0)
}
}
if (para_ent[id] > 0)
{
set_pev(id, pev_sequence, 3)
set_pev(id, pev_gaitsequence, 1)
set_pev(id, pev_frame, 1.0)
set_pev(id, pev_framerate, 1.0)
velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
set_pev(id, pev_velocity, velocity)
if (pev(para_ent[id],pev_sequence) == 0)
{
pev(para_ent[id],pev_fuser1, frame)
frame += 1.0
set_pev(para_ent[id],pev_fuser1,frame)
set_pev(para_ent[id],pev_frame,frame)
if (frame > 100.0)
{
set_pev(para_ent[id], pev_animtime, 0.0)
set_pev(para_ent[id], pev_framerate, 0.4)
set_pev(para_ent[id], pev_sequence, 1)
set_pev(para_ent[id], pev_gaitsequence, 1)
set_pev(para_ent[id], pev_frame, 0.0)
set_pev(para_ent[id], pev_fuser1, 0.0)
}
}
}
}
else if (para_ent[id] > 0)
{
engfunc(EngFunc_RemoveEntity, para_ent[id])
para_ent[id] = 0
}
}
else if ((oldbutton & IN_USE) && para_ent[id] > 0 )
{
engfunc(EngFunc_RemoveEntity, para_ent[id])
para_ent[id] = 0
}
}
|
Last edited by XxScripteRxX; 01-06-2021 at 11:14.
|
|