Problema Knife menu
#1
Hola gente, queria saber como podria modifical este .sma para que el cuchillo lo tengan los ct y los tt (ya que solo los pueden tener los ct) y también les queria comentar ese error que me sale en la consola, y no se porque será

[AMXX] Displaying debug trace (plugin "knifepublico.amxx")

[AMXX] Run time error 4: index out of bounds

[AMXX] [0] knifepublico.sma::fw_ItemDeploy_Knife (line 107)

Esto es lo que me aparece en donde esta el error:
Código PHP:
public fw_ItemDeploy_Knife(ent) {
    
    if(!
is_valid_ent(ent))
        return
        
    new 
id get_pdata_cbase(ent414)
    
    if(!
is_user_admin(id) || get_user_team(id) != 2)
        return
        
    if(
HasKnife[id] == 1) {
        static 
model[150
        
formatex(modelcharsmax(model), "models/knifes_new/%s.mdl"V_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        
entity_set_string(idEV_SZ_viewmodelmodel)
    
   
        
formatex(modelcharsmax(model), "models/knifes_new/%s.mdl"P_MODELS[HasKnife[id]]) // Aqui Editas la direccion igual que en el precache
        
entity_set_string(idEV_SZ_weaponmodelmodel)
    } 

Y esto es todo el .sma completo
Código PHP:
#include <amxmisc> 
#include <hamsandwich>
#include <engine>

#define PLUGIN "Knife menu" 
#define VERSION "1.0" 
#define AUTHOR "kikizon" 

// Flag para otorgar el Knife
#define FLAG ADMIN_RESERVATION 

new gKeys = ( (1<<0) | (1<<1) | (1<<2) | (1<<3) ) 

new 
gMenu[200], HasKnife[33

new 
gNum[33

//Aqui Van los modelos V_ de los knifes
new V_MODELS[][] = { 
    
"v_knife4"


//Aqui van los modelos P_ de los knifes
new const P_MODELS[][] = { 
    
"p_knife4"


//Aqui van los nombres que se mostraran en el menu
new const szModelNames[][] = {   
    
"Oro Exclusivo" 


public 
plugin_precache() 

    new 
knifes[60
    for(new 
isizeof(V_MODELS); i++) 
    { 
        
formatex(knifes99"models/knifes_new/%s.mdl"V_MODELS[i])  // Aqui se puede editar la direccion de donde se encontraran los models
        
precache_model(knifes
    } 
     
    for(new 
isizeof(P_MODELS); i++) 
    { 
        
formatex(knifes99"models/knifes_new/%s.mdl"P_MODELS[i])  // Aqui se puede editar la direccion de donde se encontraran los models
        
precache_model(knifes
    } 
     


public 
plugin_init() { 
    
register_plugin(PLUGINVERSIONAUTHOR
    
register_clcmd("say /knife""show_knife_menu"FLAG
     
    
register_menucmd(register_menuid("\rEscoge tu knife:^n"), gKeys"menu_handler"
    
//register_event("CurWeapon", "check_model", "be") 
    
RegisterHam(Ham_Item_Deploy"weapon_knife""fw_ItemDeploy_Knife"true)


public 
show_knife_menu(idlevelcid

    if(!
cmd_access(idlevelcid2)) 
        return 
PLUGIN_HANDLED
    
    
if(get_user_team(id) != 2)
        return 
PLUGIN_HANDLED;
     
    new 
len
    
new _new[100
    
    for(new 
isizeof(V_MODELS); i++) 
    { 
        
len len formatex(_new[len], charsmax(_new) - len"%s\y%d. \w%s"len "^n" "", ++bszModelNames[i]) 
    } 
     
    
formatex(gMenucharsmax(gMenu), "\rEscoge tu knife:^n%s"_new
     
    
show_menu(idgKeysgMenu15
     
    return 
PLUGIN_CONTINUE 


public 
menu_handler(idkey


    
HasKnife[id] = 
    gNum
[id] = key 
    engclient_cmd
(id"weapon_knife"
     
    return 
PLUGIN_CONTINUE 
}   
public 
fw_ItemDeploy_Knife(ent) {
    
    if(!
is_valid_ent(ent))
        return
        
    new 
id get_pdata_cbase(ent414)
    
    if(!
is_user_admin(id) || get_user_team(id) != 2)
        return
        
    if(
HasKnife[id] == 1) {
        static 
model[150
        
formatex(modelcharsmax(model), "models/knifes_new/%s.mdl"V_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        
entity_set_string(idEV_SZ_viewmodelmodel)
    
   
        
formatex(modelcharsmax(model), "models/knifes_new/%s.mdl"P_MODELS[HasKnife[id]]) // Aqui Editas la direccion igual que en el precache
        
entity_set_string(idEV_SZ_weaponmodelmodel)
    }
    

/*public check_model(id) 

    if(!is_user_alive(id)) 
        return PLUGIN_HANDLED 
     
    new weapon = read_data(2) 
     
    if(weapon == CSW_KNIFE && read_data(1) == 1 && HasKnife[id] == 1) 
    { 
         
        static model[150] 
        formatex(model, charsmax(model), "models/knifes_new/%s.mdl", V_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        set_pev(id, pev_viewmodel2, model) 
         
        formatex(model, charsmax(model), "models/knifes_new/%s.mdl", P_MODELS[HasKnife[id]]) // Aqui Editas la direccion igual que en el precache
        set_pev(id, pev_weaponmodel2, model) 
    } 
     
    return PLUGIN_HANDLED 
} */

public client_putinserver(id

    
HasKnife[id] = 
    gNum
[id] = 

public 
client_disconnect(id)
{
    
HasKnife[id] = 
    gNum
[id] = 

Responder
#2
Aquí algunas cosas que note:

Código PHP:
public fw_ItemDeploy_Knife(ent) {
    
    
if(!is_valid_ent(ent))
        return
        
    
new id get_pdata_cbase(ent414)
    
    
if(!is_user_admin(id) || get_user_team(id) != 2)
        return
        
    
if(HasKnife[id] == 1) {
        static model[150
        formatex(modelcharsmax(model), "models/knifes_new/%s.mdl"V_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        entity_set_string(idEV_SZ_viewmodelmodel)
    
  
        formatex
(modelcharsmax(model), "models/knifes_new/%s.mdl"P_MODELS[HasKnife[id]]) // Aqui Editas la direccion igual que en el precache
        entity_set_string(idEV_SZ_weaponmodelmodel)
    

De plena no se si pasaste el código mal pero no te falta un } y ahora. Ese deploy es muy complejo yo normalmente hago asi

Código PHP:
public Mi_DeplyiEnt ) {
          
          
if( ! is_valid_entiEnt ) ) return;

          static iOwner
          iOwner 
get_pdata_cbaseiEnt41//Creo

          entity_set_stringiEntEV_SZ_viewmodelg_szArrayMiVainaiOwner ] ] ) 



No estoy seguro del todo porque hace como 1 mes no toco ese tema de módelos de armas... Pero que yo sepa hacer todo eso es in-necesario bro, DIGO YO porque cualquiera lo hace como se le pegue la gana. Aunque si no mal recuerdo no se usa entity set string si no, set_pdata_?base en ? no se que iba, ahí veo y te digo

EDIT: También en vez de tanto código solo usa set_pev y ya, es muy fácil, solo haces tus checkeos locos y pones set_pev( iEnt, pev_viewmodel, "models/knifes/knife.mdl" ) y asi, no hay tant complicación, porque setear modelos a armas no es tan dificil hasta donde se

Este también es un ejemplo de alan_el_more muy efectivo, que es casi lo que haces tu

Código PHP:
public Ham_KnifeDeploy_Post(ent)
{
    if(!
is_valid_ent(ent))
        return 
HAM_IGNORED
    
    
static id
    id 
get_pdata_cbase(entOFFSET_WEAPON_OWNEROFFSET_LINUX_WEAPONS)
    
    
entity_set_string(idEV_SZ_viewmodelg_Knife[g_iPlayerKnife{id}][VMODEL])
    
entity_set_string(idEV_SZ_weaponmodelg_Knife[g_iPlayerKnife{id}][PMODEL])
    
    return 
HAM_IGNORED


el OFFSET_WEAPON_OWNER es 41
el OFFSET_LINUX_WEAPONS es 4
Responder
#3
Código PHP:
public fw_ItemDeploy_Knife(ent) {
    
    
if(!is_valid_ent(ent))
        return
        
    
new id get_pdata_cbase(ent414)
    
    
if(!is_user_admin(id))
        return
        
    
if(HasKnife[id] == 1) {
        static model[150
        formatex(modelcharsmax(model), "models/knifes_new/%s.mdl"V_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        entity_set_string(idEV_SZ_viewmodelmodel)
    
   
        formatex
(modelcharsmax(model), "models/knifes_new/%s.mdl"P_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        entity_set_string(idEV_SZ_weaponmodelmodel)
    }
    

[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#4
(14/06/2020, 12:19 PM)Hypnotize escribió:
Código PHP:
public fw_ItemDeploy_Knife(ent) {
    
    
if(!is_valid_ent(ent))
        return
        
    
new id get_pdata_cbase(ent414)
    
    
if(!is_user_admin(id))
        return
        
    
if(HasKnife[id] == 1) {
        static model[150
        formatex(modelcharsmax(model), "models/knifes_new/%s.mdl"V_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        entity_set_string(idEV_SZ_viewmodelmodel)
    
   
        formatex
(modelcharsmax(model), "models/knifes_new/%s.mdl"P_MODELS[gNum[id]]) // Aqui Editas la direccion igual que en el precache
        entity_set_string(idEV_SZ_weaponmodelmodel)
    }
    

Ya no tira mas el error en consola, funciona perfecto! Pero cuando estoy en el equipo de tt, no me aparece el menu de cuchillo, solo cuando soy ct, se podria arreglar eso hypno?
Responder
#5
Código PHP:
public show_knife_menu(idlevelcid

    if(!
cmd_access(idlevelcid2)) 
        return 
PLUGIN_HANDLED
   
     
    
new len
    
new _new[100
    
    for(new 
isizeof(V_MODELS); i++) 
    { 
        
len len formatex(_new[len], charsmax(_new) - len"%s\y%d. \w%s"len "^n" "", ++bszModelNames[i]) 
    } 
     
    
formatex(gMenucharsmax(gMenu), "\rEscoge tu knife:^n%s"_new
     
    
show_menu(idgKeysgMenu15
     
    return 
PLUGIN_CONTINUE 

[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#6
(14/06/2020, 05:52 PM)Hypnotize escribió:
Código PHP:
public show_knife_menu(idlevelcid

    if(!cmd_access(idlevelcid2)) 
        return PLUGIN_HANDLED
  
    
    
new len
    
new _new[100
    
    
for(new isizeof(V_MODELS); i++) 
    
        len len formatex(_new[len], charsmax(_new) - len"%s\y%d. \w%s"len "^n" "", ++bszModelNames[i]) 
    
    
    formatex
(gMenucharsmax(gMenu), "\rEscoge tu knife:^n%s"_new
    
    show_menu
(idgKeysgMenu15
    
    
return PLUGIN_CONTINUE 

Ahora si! buenisimo, muchas gracias Cutecry
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)