- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_main_menu.amxx" failed to load: Plugin uses an unknown function (name "ze_show_items_menu") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_items_manager.amxx" failed to load: Plugin uses an unknown function (name "ze_add_text_to_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_items_escape_coins.amxx" failed to load: Plugin uses an unknown function (name "ze_add_text_to_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_items_limit.amxx" failed to load: Plugin uses an unknown function (name "ze_add_text_to_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_items_level.amxx" failed to load: Plugin uses an unknown function (name "ze_get_item_name") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_items_vip.amxx" failed to load: Plugin uses an unknown function (name "ze_get_item_name") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_tuacannon.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_fire_nade.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_frost_nade.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_b_extra_compound_bow.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_dual_uzi.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_ak47_paladin.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_coilgun.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_plasmagun.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "force_shield_grenade.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_unlimited_clip.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_no_recoil.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_paintball_gun.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_madness.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_multijump.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_jumpnade.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_knockback_bomb.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_kill_bomb_v3.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_confused.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_antidote.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_tvirus.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_leap.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_extra_zombie_blind_bomb.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_a_extra_mw2-auto.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_a_extra_cyclone.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_a_extra_railcannon.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_a_extra_tact_knife.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_b_extra_dual_infinity.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_b_extra_frost_m4a1.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_b_extra_balrog11.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_b_extra_thanatos3.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_c_extra_stun_rifle.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_c_extra_fglauncher.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_c_extra_starchasersr.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_c_extra_thanatos7.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_c_extra_janus7.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
- L 09/16/2018 - 21:06:32: [AMXX] Plugin "ze_vip_a_extra_wallclimb.amxx" failed to load: Plugin uses an unknown function (name "ze_register_item") - check your modules.ini.
is this possible?Raheem wrote: ↑5 years ago So if anyone need to add discount for VIPs on any item he should follow the following:
1. Update your ze_items_manager.sma with:2. Update your ze_items_escape_coins.sma with:
#include <zombie_escape> // Setting File new const ZE_EXTRAITEM_FILE[] = "ze_extraitems.ini" // Defines #define MENU_PAGE_ITEMS g_iMenuData[id] // Const const OFFSET_CSMENUCODE = 205 // Forwards enum _:TOTAL_FORWARDS { FW_ITEM_SELECT_PRE = 0, FW_ITEM_SELECT_POST } new g_iForwards[TOTAL_FORWARDS], g_iForwardReturn // Variables new Array:g_szItemRealName, Array:g_szItemName, Array:g_iItemCost, Array:g_iItemLimit new g_iItemCount, g_szAdditionalMenuText[32], g_iMenuData[33], bool:g_bHasDiscount[MAX_EXTRA_ITEMS], Float:g_flDiscountValue[MAX_EXTRA_ITEMS] public plugin_init() { register_plugin("[ZE] Items Manager", ZE_VERSION, AUTHORS) // Commands register_clcmd("say /items", "Cmd_Items") // Forwards (In Pre Return Values important) g_iForwards[FW_ITEM_SELECT_PRE] = CreateMultiForward("ze_select_item_pre", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL) g_iForwards[FW_ITEM_SELECT_POST] = CreateMultiForward("ze_select_item_post", ET_IGNORE, FP_CELL, FP_CELL, FP_CELL) } public plugin_natives() { register_native("ze_register_item", "native_ze_register_item") register_native("ze_show_items_menu", "native_ze_show_items_menu") register_native("ze_force_buy_item", "native_ze_force_buy_item") register_native("ze_get_item_id", "native_ze_get_item_id") register_native("ze_get_item_cost", "native_ze_get_item_cost") register_native("ze_add_text_to_item", "native_ze_add_text_to_item") register_native("ze_get_item_limit", "native_ze_get_item_limit") register_native("ze_is_valid_itemid", "native_ze_is_valid_itemid") register_native("ze_get_item_name", "native_ze_get_item_name") register_native("ze_set_vip_discount", "native_ze_set_vip_discount", 1) register_native("ze_has_vip_discount", "native_ze_has_vip_discount", 1) register_native("ze_has_vip_discount", "native_ze_has_vip_discount", 1) register_native("ze_get_item_discount", "native_ze_get_item_discount", 1) g_szItemRealName = ArrayCreate(32, 1) g_szItemName = ArrayCreate(32, 1) g_iItemCost = ArrayCreate(1, 1) g_iItemLimit = ArrayCreate(1, 1) } public client_disconnected(id) { MENU_PAGE_ITEMS = 0 } public Cmd_Items(id) { if (!is_user_alive(id)) return Show_Items_Menu(id) } // Items Menu Show_Items_Menu(id) { static menu[128], name[32], cost, transkey[64] new menuid, index, itemdata[2] // Title formatex(menu, charsmax(menu), "%L:\r", id, "BUY_EXTRAITEM") menuid = menu_create(menu, "Extra_Items_Menu") // Item List for (index = 0; index < g_iItemCount; index++) { // Additional text to display g_szAdditionalMenuText[0] = 0 // Execute item select attempt forward ExecuteForward(g_iForwards[FW_ITEM_SELECT_PRE], g_iForwardReturn, id, index, 0) // Show item to player? if (g_iForwardReturn >= ZE_ITEM_DONT_SHOW) continue; // Add Item Name and Cost ArrayGetString(g_szItemName, index, name, charsmax(name)) cost = ArrayGetCell(g_iItemCost, index) // ML support for item name formatex(transkey, charsmax(transkey), "ITEMNAME %s", name) if (GetLangTransKey(transkey) != TransKey_Bad) formatex(name, charsmax(name), "%L", id, transkey) // Item available to player? if (g_iForwardReturn >= ZE_ITEM_UNAVAILABLE) formatex(menu, charsmax(menu), "\d%s %d %s", name, cost, g_szAdditionalMenuText) else formatex(menu, charsmax(menu), "%s \y%d \w%s", name, cost, g_szAdditionalMenuText) itemdata[0] = index itemdata[1] = 0 menu_additem(menuid, menu, itemdata) } // No items to display? if (menu_items(menuid) <= 0) { ze_colored_print(id, "%L", id, "NO_EXTRA_ITEMS") menu_destroy(menuid) return; } // Back - Next - Exit formatex(menu, charsmax(menu), "%L", id, "BACK") menu_setprop(menuid, MPROP_BACKNAME, menu) formatex(menu, charsmax(menu), "%L", id, "NEXT") menu_setprop(menuid, MPROP_NEXTNAME, menu) formatex(menu, charsmax(menu), "%L", id, "EXIT") menu_setprop(menuid, MPROP_EXITNAME, menu) // If remembered page is greater than number of pages, clamp down the value MENU_PAGE_ITEMS = min(MENU_PAGE_ITEMS, menu_pages(menuid)-1) // Fix for AMXX custom menus set_pdata_int(id, OFFSET_CSMENUCODE, 0) menu_display(id, menuid, MENU_PAGE_ITEMS) } // Items Menu public Extra_Items_Menu(id, menuid, item) { // Menu was closed if (item == MENU_EXIT) { MENU_PAGE_ITEMS = 0 menu_destroy(menuid) return PLUGIN_HANDLED; } // Remember items menu page MENU_PAGE_ITEMS = item / 7 // Dead players are not allowed to buy items if (!is_user_alive(id)) { menu_destroy(menuid) return PLUGIN_HANDLED; } // Retrieve item id new itemdata[2], dummy, itemid menu_item_getinfo(menuid, item, dummy, itemdata, charsmax(itemdata), _, _, dummy) itemid = itemdata[0] // Attempt to buy the item Buy_Item(id, itemid) menu_destroy(menuid) return PLUGIN_HANDLED; } // Buy Item Buy_Item(id, itemid, ignorecost = 0) { // Execute item select attempt forward ExecuteForward(g_iForwards[FW_ITEM_SELECT_PRE], g_iForwardReturn, id, itemid, ignorecost) // Item available to player? if (g_iForwardReturn >= ZE_ITEM_UNAVAILABLE) return; // Execute item selected forward ExecuteForward(g_iForwards[FW_ITEM_SELECT_POST], g_iForwardReturn, id, itemid, ignorecost) } // Natives public native_ze_register_item(plugin_id, num_params) { new szItem_Name[32], iItem_Cost, iItem_Limit // Get the Data from first Parameter in the native (Item Name) get_string(1, szItem_Name, charsmax(szItem_Name)) // Get the Second Parameter (Item Cost) iItem_Cost = get_param(2) // Get limit third parameter iItem_Limit = get_param(3) if (strlen(szItem_Name) < 1) { // Can't leave item name empty log_error(AMX_ERR_NATIVE, "[ZE] Can't register item with an empty name") return ZE_WRONG_ITEM // Same as return -1 } new iIndex, szItemName[32] // Loop from 0 to max items amount for (iIndex = 0; iIndex < g_iItemCount; iIndex++) { ArrayGetString(g_szItemRealName, iIndex, szItemName, charsmax(szItemName)) if (equali(szItem_Name, szItemName)) { log_error(AMX_ERR_NATIVE, "[ZE] Item already registered (%s)", szItemName) return ZE_WRONG_ITEM; // Return -1 } } // Load settings from extra items file new szItemRealName[32] copy(szItemRealName, charsmax(szItemRealName), szItem_Name) ArrayPushString(g_szItemRealName, szItemRealName) // Name if (!amx_load_setting_string(ZE_EXTRAITEM_FILE, szItemRealName, "NAME", szItem_Name, charsmax(szItem_Name))) amx_save_setting_string(ZE_EXTRAITEM_FILE, szItemRealName, "NAME", szItem_Name) ArrayPushString(g_szItemName, szItem_Name) // Cost if (!amx_load_setting_int(ZE_EXTRAITEM_FILE, szItemRealName, "COST", iItem_Cost)) amx_save_setting_int(ZE_EXTRAITEM_FILE, szItemRealName, "COST", iItem_Cost) ArrayPushCell(g_iItemCost, iItem_Cost) // Limit if (!amx_load_setting_int(ZE_EXTRAITEM_FILE, szItemRealName, "LIMIT", iItem_Limit)) amx_save_setting_int(ZE_EXTRAITEM_FILE, szItemRealName, "LIMIT", iItem_Limit) ArrayPushCell(g_iItemLimit, iItem_Limit) g_iItemCount++ return g_iItemCount - 1 } public native_ze_show_items_menu(plugin_id, num_params) { new id = get_param(1) if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player (%d)", id) return false; } Cmd_Items(id) return true } public native_ze_force_buy_item(plugin_id, num_params) { new id = get_param(1) if (!is_user_connected(id)) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid Player (%d)", id) return false; } new item_id = get_param(2) if (item_id < 0 || item_id >= g_iItemCount) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid item id (%d)", item_id) return false; } new ignorecost = get_param(3) Buy_Item(id, item_id, ignorecost) return true; } public native_ze_get_item_id(plugin_id, num_params) { new szRealName[32] get_string(1, szRealName, charsmax(szRealName)) new index, szItemName[32] for (index = 0; index < g_iItemCount; index++) { ArrayGetString(g_szItemRealName, index, szItemName, charsmax(szItemName)) if (equali(szRealName, szItemName)) return index } return ZE_WRONG_ITEM } public native_ze_get_item_cost(plugin_id, num_params) { new item_id = get_param(1) if (item_id < 0 || item_id >= g_iItemCount) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid item id (%d)", item_id) return ZE_WRONG_ITEM; } return ArrayGetCell(g_iItemCost, item_id); } public native_ze_add_text_to_item(plugin_id, num_params) { new szText[32] get_string(1, szText, charsmax(szText)) format(g_szAdditionalMenuText, charsmax(g_szAdditionalMenuText), "%s%s", g_szAdditionalMenuText, szText) } public native_ze_get_item_limit(plugin_id, num_params) { new item_id = get_param(1) if (item_id < 0 || item_id >= g_iItemCount) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid item id (%d)", item_id) return ZE_WRONG_ITEM; } return ArrayGetCell(g_iItemLimit, item_id); } public native_ze_is_valid_itemid(plugin_id, num_params) { new item_id = get_param(1) if (item_id < 0 || item_id >= g_iItemCount) { return false; } return true; } public native_ze_get_item_name(plugin_id, num_params) { new item_id = get_param(1) if (item_id < 0 || item_id >= g_iItemCount) { log_error(AMX_ERR_NATIVE, "[ZE] Invalid item id (%d)", item_id) return ZE_WRONG_ITEM; } new szName[32] ArrayGetString(g_szItemName, item_id, szName, charsmax(szName)) new iLen = get_param(3) set_string(2, szName, iLen) return true; } public native_ze_set_vip_discount(iItemid, bool:bSet, Float:flDiscount) { g_bHasDiscount[iItemid] = bSet; g_flDiscountValue[iItemid] = flDiscount; } public native_ze_has_vip_discount(iItemid) { return g_bHasDiscount[iItemid] } public Float:native_ze_get_item_discount(iItemid) { return g_flDiscountValue[iItemid] }Now to add discount to any item for VIPs you will need to use this native:
#include <zombie_escape> #include <ze_vip> native ze_has_vip_discount(iItemid) native Float:ze_get_item_discount(iItemid) new g_iCurrentEC, g_iRequiredEC public plugin_init() { register_plugin("[ZE] Items Manager: Escape Coins", ZE_VERSION, AUTHORS) } public ze_select_item_pre(id, itemid, ignorecost) { if (ignorecost) return ZE_ITEM_AVAILABLE g_iCurrentEC = ze_get_escape_coins(id) if (ze_is_user_vip(id) && ze_has_vip_discount(itemid)) { g_iRequiredEC = floatround(ze_get_item_cost(itemid) * (1.0 - ze_get_item_discount(itemid))) new szText[32] formatex(szText, charsmax(szText), " \w(\r%i %% OFF\w)", floatround(ze_get_item_discount(itemid) * 100)) ze_add_text_to_item(szText) } else { g_iRequiredEC = ze_get_item_cost(itemid) } if (g_iCurrentEC < g_iRequiredEC) return ZE_ITEM_UNAVAILABLE return ZE_ITEM_AVAILABLE } public ze_select_item_post(id, itemid, ignorecost) { if (ignorecost) return g_iCurrentEC = ze_get_escape_coins(id) if (ze_is_user_vip(id) && ze_has_vip_discount(itemid)) { g_iRequiredEC = floatround(ze_get_item_cost(itemid) * ze_get_item_discount(itemid)) } else { g_iRequiredEC = ze_get_item_cost(itemid) } ze_set_escape_coins(id, g_iCurrentEC - g_iRequiredEC) }
native ze_set_vip_discount(iItemid, bool:bSet, Float:flDiscount);
- iItemid - Item id returned from ze_register_item() native.
- bSet - set discount to this item or not. Make it true.
Now let's make 40 % discount on Fire nades for VIPs:
- flDiscount - from 0 to 1, to make discount 10% use 0.1 to make 80 % use 0.8 and so on.
Just added
#include <zombie_escape> native ze_set_vip_discount(iItemid, bool:bSet, Float:flDiscount); // Default Sound new const g_szBuyAmmoSound[] = "items/9mmclip1.wav" // Variables new g_iItemID public plugin_init() { register_plugin("[ZE] Items: Fire Nade", ZE_VERSION, AUTHORS) // Register our item g_iItemID = ze_register_item("Fire Nade", 30, 0) ze_set_vip_discount(g_iItemID, true, 0.4) } public ze_select_item_pre(id, itemid) { // Return Available and we will block it in Post, So it dosen't affect other plugins if (itemid != g_iItemID) return ZE_ITEM_AVAILABLE // Available for Humans only, So don't show it for zombies if (ze_is_user_zombie(id)) return ZE_ITEM_DONT_SHOW return ZE_ITEM_AVAILABLE } public ze_select_item_post(id, itemid) { // This is not our item, Block it here if (itemid != g_iItemID) return // Get Weapon ID new iWpnID = get_weaponid("weapon_hegrenade") // Player Don't have Frost Grenade then give him if (rg_get_user_bpammo(id, WeaponIdType:iWpnID) == 0) { rg_give_item(id, "weapon_hegrenade", GT_APPEND) } else { // Player have, Increase his Back Pack Ammo, And play buy BP sound + Hud Flash rg_set_user_bpammo(id, WeaponIdType:iWpnID, rg_get_user_bpammo(id, WeaponIdType:iWpnID) + 1) emit_sound(id, CHAN_ITEM, g_szBuyAmmoSound, 1.0, ATTN_NORM, 0, PITCH_NORM) Show_Given_BPAmmo(id, 12, 1) // HE Grenade AmmoType Const = 12 } }ze_set_vip_discount(g_iItemID, true, 0.4)
underg_iItemID = ze_register_item("Fire Nade", 30, 0)
.
Important: You must run latest VIP System in order this to run!
- public ze_discounts
- {
- if ((ze_get_vip_flags(id) & VIP_A) && (ze_get_vip_flags(id) & VIP_B) && (ze_get_vip_flags(id) & VIP_C))
- {
- ze_set_vip_discount(g_iItemID, true, 0.1)
- return;
- }
- else if ((ze_get_vip_flags(id) & VIP_A) && (ze_get_vip_flags(id) & VIP_B))
- {
- ze_set_vip_discount(g_iItemID, true, 0.2)
- return;
- }
- else if (ze_get_vip_flags(id) & VIP_A)
- {
- ze_set_vip_discount(g_iItemID, true, 0.3)
- return;
- }
- }