so this is a part that will be implemanted in a bigger code and i wanted to test it before using
I really dont have much experience with dynamic arrays or tries so I had founded in a plugin that uses this methode so i trieded but with no luck
I know I still lack some variable here but its irrelevant for the moment what I think is happening is either the array isn't pushed or getting it
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#define MAX_PLAYERS 32
enum _:PLAYER_MODEL
{
FLAG[5],
AUTH[128],
TEAM[5],
MODEL[128],
BODY[5],
SKIN[5]
}
new Array:g_iArrayPlayerModel, g_szPlayerModel[PLAYER_MODEL], g_szPlayerData[PLAYER_MODEL], bool:g_bHasCustomModel[MAX_PLAYERS + 1], g_iSkin[MAX_PLAYERS + 1],
g_iBody[MAX_PLAYERS + 1], g_szModelCt[MAX_PLAYERS + 1][64], g_szModelT[MAX_PLAYERS + 1][64], g_szName[MAX_PLAYERS + 1][64], bool:g_array, pushed
load_customization_from_files()
{
new szBuffer[64], path[64], linedata[64]
get_localinfo("amxx_configsdir", path, charsmax(path));
formatex(path, charsmax(path), "%s/player_models.ini", path);
new file = fopen(path, "rt");
while (file && !feof(file))
{
// Read one line at a time
fgets(file, linedata, charsmax(linedata))
// Replace newlines with a null character to prevent headaches
replace(linedata, charsmax(linedata), "^n", "")
// Blank line or comment
if (!linedata[0] || linedata[0] == ';') continue;
parse(linedata, g_szPlayerModel[FLAG], charsmax( g_szPlayerModel[FLAG] ),
g_szPlayerModel[AUTH], charsmax( g_szPlayerModel[AUTH] ),
g_szPlayerModel[TEAM], charsmax( g_szPlayerModel[TEAM] ),
g_szPlayerModel[MODEL], charsmax( g_szPlayerModel[MODEL]),
g_szPlayerModel[BODY], charsmax( g_szPlayerModel[BODY]),
g_szPlayerModel[SKIN], charsmax( g_szPlayerModel[SKIN]))
formatex(szBuffer, charsmax(szBuffer), "models/player/%s/%s.mdl", g_szPlayerModel[MODEL], g_szPlayerModel[MODEL])
engfunc(EngFunc_PrecacheModel, szBuffer)
pushed = ArrayPushArray (g_iArrayPlayerModel, g_szPlayerModel);
}
if(file)
fclose(file)
}
public plugin_init()
{
register_plugin("AMX Admin Model", "1.1.1", "whitemike")
register_event("ResetHUD", "resetModel", "b")
g_iArrayPlayerModel = ArrayCreate(PLAYER_MODEL)
}
public plugin_precache()
{
load_customization_from_files()
}
public client_putinserver(id)
{
new szAuth[64],szIp[64],szname[64]
for(new i; i < ArraySize(g_iArrayPlayerModel); i++)
{
ArrayGetArray(g_iArrayPlayerModel, i, g_szPlayerData)
if(equal(g_szPlayerData[FLAG],"f"))
{
if(has_flag(id, g_szPlayerData[AUTH]))
{
g_bHasCustomModel[id]= true;
if(equal(g_szPlayerData[TEAM], "CT") || equal(g_szPlayerData[TEAM], "ct") || equal(g_szPlayerData[TEAM], "Ct") || equal(g_szPlayerData[TEAM], "cT"))
copy(g_szModelCt[id], charsmax(g_szModelCt[]), g_szPlayerData[MODEL]);
else if(equal(g_szPlayerData[TEAM], "TT") || equal(g_szPlayerData[TEAM], "tt") || equal(g_szPlayerData[TEAM], "Tt") || equal(g_szPlayerData[TEAM], "tT"))
copy(g_szModelT[id], charsmax(g_szModelT[]), g_szPlayerData[MODEL]);
g_iBody[id] = str_to_num(g_szPlayerData[BODY]);
g_iSkin[id] = str_to_num(g_szPlayerData[SKIN]);
}
}
else if(equal(g_szPlayerData[FLAG],"s"))
{
get_user_authid(id,szAuth ,charsmax(szAuth));
if(equal(g_szPlayerData[AUTH],szAuth))
{
g_bHasCustomModel[id]= true;
if(equal(g_szPlayerData[TEAM], "CT") || equal(g_szPlayerData[TEAM], "ct") || equal(g_szPlayerData[TEAM], "Ct") || equal(g_szPlayerData[TEAM], "cT"))
copy(g_szModelCt[id], charsmax(g_szModelCt[]), g_szPlayerData[MODEL]);
if(equal(g_szPlayerData[TEAM], "TT") || equal(g_szPlayerData[TEAM], "tt") || equal(g_szPlayerData[TEAM], "Tt") || equal(g_szPlayerData[TEAM], "tT"))
copy(g_szModelT[id], charsmax(g_szModelT[]), g_szPlayerData[MODEL]);
g_iBody[id] = str_to_num(g_szPlayerData[BODY]);
g_iSkin[id] = str_to_num(g_szPlayerData[SKIN]);
g_array = true
}
}
else if(equal(g_szPlayerData[FLAG],"i"))
{
get_user_ip(id, szIp, charsmax(szIp));
if(equal(g_szPlayerData[AUTH],szIp))
{
g_bHasCustomModel[id]= true;
if(equal(g_szPlayerData[TEAM], "CT") || equal(g_szPlayerData[TEAM], "ct") || equal(g_szPlayerData[TEAM], "Ct") || equal(g_szPlayerData[TEAM], "cT"))
copy(g_szModelCt[id], charsmax(g_szModelCt[]), g_szPlayerData[MODEL]);
if(equal(g_szPlayerData[TEAM], "TT") || equal(g_szPlayerData[TEAM], "tt") || equal(g_szPlayerData[TEAM], "Tt") || equal(g_szPlayerData[TEAM], "tT"))
copy(g_szModelT[id], charsmax(g_szModelT[]), g_szPlayerData[MODEL]);
g_iBody[id] = str_to_num(g_szPlayerData[BODY]);
g_iSkin[id] = str_to_num(g_szPlayerData[SKIN]);
g_array = true
}
}
else if(equal(g_szPlayerData[FLAG],"n"))
{
get_user_name(id, szname, charsmax(szname));
if(equal(g_szPlayerData[AUTH],szname))
{
g_bHasCustomModel[id]= true;
copy(g_szName[id], 64, g_szPlayerData[AUTH]);
if(equal(g_szPlayerData[TEAM], "CT") || equal(g_szPlayerData[TEAM], "ct") || equal(g_szPlayerData[TEAM], "Ct") || equal(g_szPlayerData[TEAM], "cT"))
copy(g_szModelCt[id], 64, g_szPlayerData[MODEL]);
else if(equal(g_szPlayerData[TEAM], "TT") || equal(g_szPlayerData[TEAM], "tt") || equal(g_szPlayerData[TEAM], "Tt") || equal(g_szPlayerData[TEAM], "tT"))
copy(g_szModelT[id], 64, g_szPlayerData[MODEL]);
g_iBody[id] = str_to_num(g_szPlayerData[BODY]);
g_iSkin[id] = str_to_num(g_szPlayerData[SKIN]);
g_array = true
}
}
else
{
g_bHasCustomModel[id]= false
g_array = false
}
}
return PLUGIN_HANDLED
}
public resetModel(id)
{
new CsTeams:userTeam = cs_get_user_team(id)
if(g_bHasCustomModel[id])
{
if(userTeam == CS_TEAM_T)
{
cs_set_user_model(id, g_szModelT[id])
set_pev(id, pev_body, g_iBody[id])
set_pev(id, pev_skin, g_iSkin[id])
}
else if(userTeam == CS_TEAM_CT)
{
cs_set_user_model(id, g_szModelCt[id])
set_pev(id, pev_body, g_iBody[id])
set_pev(id, pev_skin, g_iSkin[id])
}
}
return PLUGIN_HANDLED
}