Senior Member
|
12-13-2020
, 08:21
Weapon Register Array Problem
|
#1
|
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <cstrike>
#include <zombie_theheroex>
#define PLUGIN "Weapon Addon"
#define VERSION "1.0"
#define AUTHOR "DeclineD"
new Forwards[2], g_iRet
new Array:WPN_Name, Array:WPN_Type, Array:WPN_BasedOn, Array:WPN_Cost
new g_Selected[3], g_weapons
new g_UnlockedWeapon[33][99]
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
Forwards[0] = CreateMultiForward("zbheroex_weapon_bought", ET_IGNORE, FP_CELL, FP_CELL)
Forwards[1] = CreateMultiForward("zbheroex_weapon_remove", ET_IGNORE, FP_CELL, FP_CELL)
WPN_Name = ArrayCreate(64, 1)
WPN_Type = ArrayCreate(1, 1)
WPN_BasedOn = ArrayCreate(1, 1)
WPN_Cost = ArrayCreate(1, 1)
}
public plugin_natives()
{
register_native("zbheroex_register_weapon", "native_register", 1)
}
public client_putinserver(id)
{
for(new i = 0; i < g_weapons; i++)
{
if(ArrayGetCell(WPN_Type, i) == WEAPON_PRIMARY)
g_Selected[0] = i
break;
}
for(new i = 0; i < g_weapons; i++)
{
if(ArrayGetCell(WPN_Type, i) == WEAPON_SECONDARY)
g_Selected[1] = i
break;
}
for(new i = 0; i < g_weapons; i++)
{
if(ArrayGetCell(WPN_Type, i) == WEAPON_MELEE)
g_Selected[2] = i
break;
}
}
public native_register(Weapon_Name[], Type, BasedOn, Cost)
{
param_convert(1)
ArrayPushString(WPN_Name, Weapon_Name)
ArrayPushCell(WPN_Type, Type)
ArrayPushCell(WPN_BasedOn, BasedOn)
ArrayPushCell(WPN_Cost, Cost)
g_weapons++
return g_weapons-1
}
public zbheroex_user_spawned(id, Zombie)
{
if(Zombie) return;
if(!is_user_connected(id)) return;
ExecuteForward(Forwards[1], g_iRet, id, g_Selected[0])
ExecuteForward(Forwards[1], g_iRet, id, g_Selected[1])
ExecuteForward(Forwards[1], g_iRet, id, g_Selected[2])
Open_WeaponMenu(id)
}
public Open_WeaponMenu(id)
{
new MenuWeapons = menu_create("Select Your Weapon", "WeaponHandeler")
new szBuffer[100], PrimName[64], SecoName[64], MeleeName[64]
ArrayGetString(WPN_Name, g_Selected[0], PrimName, charsmax(PrimName))
formatex(szBuffer, charsmax(szBuffer), "Primary Weapons [ %s ]", PrimName)
menu_additem(MenuWeapons, szBuffer)
ArrayGetString(WPN_Name, g_Selected[1], SecoName, charsmax(SecoName))
formatex(szBuffer, charsmax(szBuffer), "Secondary Weapons [ %s ]", SecoName)
menu_additem(MenuWeapons, szBuffer)
ArrayGetString(WPN_Name, g_Selected[2], MeleeName, charsmax(MeleeName))
formatex(szBuffer, charsmax(szBuffer), "Melee Weapons [ %s ]", MeleeName)
menu_additem(MenuWeapons, szBuffer)
formatex(szBuffer, charsmax(szBuffer), "Recive Weapons")
menu_additem(MenuWeapons, szBuffer)
menu_display(id, MenuWeapons)
}
public WeaponHandeler(id, MenuWeapons, item)
{
switch(item)
{
case 0: Show_WeaponMenu(id, WEAPON_PRIMARY)
case 1: Show_WeaponMenu(id, WEAPON_SECONDARY)
case 2: Show_WeaponMenu(id, WEAPON_MELEE)
case 3: ReciveWeapons(id)
}
}
public Show_WeaponMenu(id, Type)
{
new szBuffer2[100], szBuffer3[100], szWeapons[64], Weapon[6]
if(Type == WEAPON_PRIMARY) formatex(szBuffer2, charsmax(szBuffer2), "Select Primary Weapon")
else if(Type == WEAPON_SECONDARY) formatex(szBuffer2, charsmax(szBuffer2), "Select Secondary Weapon")
else if(Type == WEAPON_MELEE) formatex(szBuffer2, charsmax(szBuffer2), "Select Melee Weapon")
new MenuID = menu_create(szBuffer2, "WeaponSelected")
for(new i = 0; i < g_weapons; i++)
{
ArrayGetString(WPN_Name, i, szWeapons, charsmax(szWeapons))
if(ArrayGetCell(WPN_Type, i) == Type || is_user_connected(id))
{
if(g_UnlockedWeapon[id][i] == 1 || ArrayGetCell(WPN_Cost, i) <= 0)
{
formatex(szBuffer3, charsmax(szBuffer3), "\y%s", szWeapons)
}
else if(cs_get_user_money(id) >= ArrayGetCell(WPN_Cost, i))
{
formatex(szBuffer3, charsmax(szBuffer3), "%s \y-> \w%i", szWeapons, ArrayGetCell(WPN_Cost, i))
}
else formatex(szBuffer3, charsmax(szBuffer3), "%s \r-> \w%i", szWeapons)
format(Weapon, charsmax(Weapon), "%i", i)
menu_additem(MenuID, szBuffer3, Weapon)
}
}
menu_display(id, MenuID)
}
public WeaponSelected(id, MenuID, item)
{
new _access, WeaponID[6], Name[64]
menu_item_getinfo(MenuID, item, _access, WeaponID, charsmax(WeaponID), Name, charsmax(Name), _)
new WeaponCost = ArrayGetCell(WPN_Cost, str_to_num(WeaponID))
new WeaponType = ArrayGetCell(WPN_Type, str_to_num(WeaponID))
if(g_UnlockedWeapon[id][str_to_num(WeaponID)] == 1 || WeaponCost <= 0)
{
if(WeaponType == WEAPON_PRIMARY)
g_Selected[0] = str_to_num(WeaponID)
else if(WeaponType == WEAPON_SECONDARY)
g_Selected[1] = str_to_num(WeaponID)
else if(WeaponType == WEAPON_MELEE)
g_Selected[2] = str_to_num(WeaponID)
Open_WeaponMenu(id)
}
else if(cs_get_user_money(id) >= WeaponCost)
{
if(WeaponType == WEAPON_PRIMARY)
g_Selected[0] = str_to_num(WeaponID)
else if(WeaponType == WEAPON_SECONDARY)
g_Selected[1] = str_to_num(WeaponID)
else if(WeaponType == WEAPON_MELEE)
g_Selected[2] = str_to_num(WeaponID)
cs_set_user_money(id, cs_get_user_money(id) - WeaponCost, 1)
Open_WeaponMenu(id)
}
else Open_WeaponMenu(id)
}
public ReciveWeapons(id)
{
ExecuteForward(Forwards[0], g_iRet, id, g_Selected[0])
ExecuteForward(Forwards[0], g_iRet, id, g_Selected[1])
ExecuteForward(Forwards[0], g_iRet, id, g_Selected[2])
}
PHP Code:
public native_register(Weapon_Name[], Type, BasedOn, Cost)
{
param_convert(1)
ArrayPushString(WPN_Name, Weapon_Name)
ArrayPushCell(WPN_Type, Type)
ArrayPushCell(WPN_BasedOn, BasedOn)
ArrayPushCell(WPN_Cost, Cost)
g_weapons++
return g_weapons-1
}
Run Time Error 10: Native Error (native "ArrayPushString")
Unhandled dynamic native error
PHP Code:
public Open_WeaponMenu(id)
{
new MenuWeapons = menu_create("Select Your Weapon", "WeaponHandeler")
new szBuffer[100], PrimName[64], SecoName[64], MeleeName[64]
ArrayGetString(WPN_Name, g_Selected[0], PrimName, charsmax(PrimName))
formatex(szBuffer, charsmax(szBuffer), "Primary Weapons [ %s ]", PrimName)
menu_additem(MenuWeapons, szBuffer)
ArrayGetString(WPN_Name, g_Selected[1], SecoName, charsmax(SecoName))
formatex(szBuffer, charsmax(szBuffer), "Secondary Weapons [ %s ]", SecoName)
menu_additem(MenuWeapons, szBuffer)
ArrayGetString(WPN_Name, g_Selected[2], MeleeName, charsmax(MeleeName))
formatex(szBuffer, charsmax(szBuffer), "Melee Weapons [ %s ]", MeleeName)
menu_additem(MenuWeapons, szBuffer)
formatex(szBuffer, charsmax(szBuffer), "Recive Weapons")
menu_additem(MenuWeapons, szBuffer)
menu_display(id, MenuWeapons)
}
Run TimeError 10:
native error (native "ArrayGetString")
Hey, i tried to rewrite this plugin of dias because i tried to edit something and didn't work but i met these runtime problems....
Can someone help me? Please?
Thanks in advance
Last edited by AnimalMonster; 12-17-2020 at 14:37.
|
|