Se que ya este plugin se encuentra en amx-eng pero lo encontre en el basurero de que tengo en la pc quise aportar ese pequeño e insignificante plugins
tiene solo 2 o 3 diferencias al GHW (en funcionalidad)
Config:
PD: si alguien quiere mejorarlo para la comunidad esta abierta las criticas
tiene solo 2 o 3 diferencias al GHW (en funcionalidad)
- No le he puesto la opcion de equipos
- para cambiar el arma p, v no es necesario usar toda la ruta del modelo si no la entidad (weapon_x) solo el modelo tipo "w"
- el GHW tiene un detallito, que cuando se compra el arma se cambia el modelo, compro una he/flash/smooke y cambia al original, disparo o cambio de arma y vuelve el modelo personalizado
Config:
Código:
;"v" "weapon_knife" "models/v_knife_r.mdl"
;"p" "weapon_glock18" "models/p_usp.mdl"
;"w" "models/w_glock18.mdl" "models/w_usp.mdl"
- v es el modelo en 1ra persona
- p es el modelo en 3ra persona
- w es el modelo tirado en el suelo
Código PHP:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Weapon Skin Reemplacer" //REEMPLAAACEEEERRR!!!!!
#define VERSION "1.0"
#define AUTHOR "Sugisaki"
const m_pPlayer = 41
const m_pPlayer_dif = 4
new Trie:v_models
new Trie:p_models
new Trie:w_models
new Trie:has_register
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_forward(FM_SetModel, "pfn_set_model")
}
load_ini()
{
new file[] = "addons/amxmodx/configs/new_weapons.ini"
if(!file_exists(file))
{
set_fail_state("[Skin Reemplacer] Archivo de configuracion inexistente")
return
}
new fh = fopen(file, "r")
if(!fh)
{
set_fail_state("[Skin Reemplacer] Error al abrir el archivo de configuracion")
return
}
new line[356]
new ent_name[128]
new file_loc[128]
new type[3]
v_models = TrieCreate()
p_models = TrieCreate()
w_models = TrieCreate()
has_register = TrieCreate()
while(!feof(fh))
{
fgets(fh, line, charsmax(line))
trim(line)
if(!line[0] || line[0] == ';')
{
continue;
}
parse(line, type, charsmax(type), ent_name, charsmax(ent_name), file_loc, charsmax(file_loc))
trim(ent_name)
trim(file_loc)
trim(type)
if(!file_exists(file_loc))
{
server_print("[Skin Reemplacer] Archivo '%s' no existe", file_loc)
continue
}
if(type[0] != 'w')
{
if(!(TrieKeyExists(has_register, ent_name)))
{
TrieSetCell(has_register, ent_name, 1)
RegisterHam(Ham_Item_Deploy, ent_name, "pfnChangeModel", 1)
}
switch(type[0])
{
case 'v' : TrieSetCell(v_models, ent_name, engfunc(EngFunc_AllocString, file_loc))
case 'p' : TrieSetCell(p_models, ent_name, engfunc(EngFunc_AllocString, file_loc))
}
//server_print("%s | %s | %s", type, ent_name, file_loc)
}
else
{
TrieSetString(w_models, ent_name, file_loc)
//server_print("%s | %s | %s", type, ent_name, file_loc)
}
precache_model(file_loc)
}
fclose(fh)
}
public pfnChangeModel(ent)
{
if(!pev_valid(ent))
{
return
}
static __class[19], model_index, id
id = get_pdata_cbase(ent, m_pPlayer, m_pPlayer_dif)
pev(ent, pev_classname, __class, 18)
if(TrieKeyExists(v_models, __class))
{
TrieGetCell(v_models, __class, model_index)
set_pev(id, pev_viewmodel, model_index)
}
if(TrieKeyExists(p_models, __class))
{
TrieGetCell(p_models, __class, model_index)
set_pev(id, pev_weaponmodel, model_index)
}
}
public plugin_precache()
{
load_ini()
}
public plugin_end()
{
TrieDestroy(v_models)
TrieDestroy(p_models)
TrieDestroy(w_models)
TrieDestroy(has_register)
}
public pfn_set_model(ent, model[])
{
static __model[128]
if(TrieKeyExists(w_models, model))
{
TrieGetString(w_models, model, __model, charsmax(__model))
engfunc(EngFunc_SetModel, ent, __model)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
PD: si alguien quiere mejorarlo para la comunidad esta abierta las criticas
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Código PHP:
if(ayuda && free)
{
exit();
}