Weapon Skin Replace
#1
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 Whatever

tiene solo 2 o 3 diferencias al GHW (en funcionalidad)
  1. No le he puesto la opcion de equipos
  2. 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"
  3. 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(PLUGINVERSIONAUTHOR)
    
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(fhlinecharsmax(line))
        
trim(line)
        if(!
line[0] || line[0] == ';')
        {
            continue;
        }
        
parse(linetypecharsmax(type), ent_namecharsmax(ent_name), file_loccharsmax(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_registerent_name)))
            {
                
TrieSetCell(has_registerent_name1)
                
RegisterHam(Ham_Item_Deployent_name"pfnChangeModel"1)
            }
            switch(
type[0])
            {
                case 
'v' TrieSetCell(v_modelsent_nameengfunc(EngFunc_AllocStringfile_loc))
                case 
'p' TrieSetCell(p_modelsent_nameengfunc(EngFunc_AllocStringfile_loc))
            }
            
//server_print("%s | %s | %s", type, ent_name, file_loc)
        
}
        else
        {
            
TrieSetString(w_modelsent_namefile_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_indexid
    id 
get_pdata_cbase(entm_pPlayerm_pPlayer_dif)
    
pev(entpev_classname__class18)
    if(
TrieKeyExists(v_models__class))
    {
        
TrieGetCell(v_models__classmodel_index)
        
set_pev(idpev_viewmodelmodel_index)
    }
    if(
TrieKeyExists(p_models__class))
    {
        
TrieGetCell(p_models__classmodel_index)
        
set_pev(idpev_weaponmodelmodel_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(entmodel[])
{
    static 
__model[128]
    if(
TrieKeyExists(w_modelsmodel))
    {
        
TrieGetString(w_modelsmodel__modelcharsmax(__model))
        
engfunc(EngFunc_SetModelent__model)
        return 
FMRES_SUPERCEDE
    
}
    return 
FMRES_IGNORED


PD: si alguien quiere mejorarlo para la comunidad esta abierta las criticas Whatever
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(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?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#2
Buen plugin, gracias por el aporte Proud



Por otra parte:

Código PHP:
public plugin_end()
{
    
TrieDestroy(v_models)
    
TrieDestroy(p_models)
    
TrieDestroy(w_models)
    
TrieDestroy(has_register)


Si no me equivoco, leí en un tutorial en AM que las Tries son destruidas automaticamente.

Código PHP:
public pfnChangeModel(ent)
{
    if(!
pev_valid(ent))
    {
        return
    }
    static 
__class[19], model_indexid
    id 
get_pdata_cbase(entm_pPlayerm_pPlayer_dif)
    
pev(entpev_classname__class18)
    if(
TrieKeyExists(v_models__class))
    {
        
TrieGetCell(v_models__classmodel_index)
        
set_pev(idpev_viewmodelmodel_index)
    }
    if(
TrieKeyExists(p_models__class))
    {
        
TrieGetCell(p_models__classmodel_index)
        
set_pev(idpev_weaponmodelmodel_index)
    }


Se que es una boludez, pero podrías crear una var estática para guardar los valores de TrieKeyExists(v...) y TrieKeyExists(p...), ya que se llamarían cada vez que un user cambia de arma.

Como te digo, es boludez, pero quizás lo tomes en cuenta.
Responder
#3
GJ Nothingdohere

Responder
#4
Reemplacer...
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#5
(10/02/2017, 03:58 PM)Treki escribió: Reemplacer...

replace, u like?

if u dont like my english, s*ck my di**
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(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?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#6
(10/02/2017, 05:08 PM)Sugisaki escribió:
(10/02/2017, 03:58 PM)Treki escribió: Reemplacer...

replacer, u like?

if u dont like my english, suck my di**

No es que no me guste "tu inglés", lo que escribiste no es inglés, no confundas. Además no te lo dije burlándome ni nada, lo dije para que lo arregles.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#7
Peeero madre mía wili
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#8
Nice Sugi Lovepanda
Responder
#9
No funciona, porque quiero meter asi los models "weapon_knife.mdl" "models/armasnuevas/ButterflyKnife.mdl" y no me registra los models, o algo hice mal
Responder
#10
(15/05/2020, 10:32 PM)Tulolo escribió: No funciona, porque quiero meter asi los models "weapon_knife.mdl" "models/armasnuevas/ButterflyKnife.mdl" y no me registra los models, o algo hice mal

En el segundo campo no va .mdl es el nombre de la entidad del arma.

Deberías agregarlo así..

Cita:"v" "weapon_knife" "models/armasnuevas/ButterflyKnife.mdl"
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)