[ZP] Problema con menú de armas
#1
Estuve poniendo este menú de armas a mi zp 4.3 pero da 1 error en la parte de replace_weapon_models(id, weaponid)

Código:
// C:\hlserver\cstrike\addons\amxmodx\scripting\zombie_plague40.sma(8337) : error 002: only a single statement (or expression) can follow each "case"
// C:\hlserver\cstrike\addons\amxmodx\scripting\zombie_plague40.sma(8337 -- 8338) : error 028: invalid subscript (not an array or too many subscripts): "weaponid"
// C:\hlserver\cstrike\addons\amxmodx\scripting\zombie_plague40.sma(8337 -- 8339) : error 001: expected token: "}", but found "if"
// C:\hlserver\cstrike\addons\amxmodx\scripting\zombie_plague40.sma(8337 -- 8339) : fatal error 107: too many error messages on one line
//
// Compilation aborted.
// 4 Errors.

Revise los otros codes y parecen estar bien, sera que no se como va ahí esta parte del code

Código PHP:
/* Buscan replace_weapon_models(id, weaponid)
y abajo del switch ponen lo siguiente */

if(weaponid == menu_death[g_arma_prim[id]][item_id]) // si la arma que tiene == a la del menu que el habia obtenido
{
    if(!
equal(menu_death[g_arma_prim[id]][item_modelo] , "default"))// Si no es default le damos el modelo 
        
set_pev(id pev_viewmodel2 menu_death[g_arma_prim[id]][item_modelo])
        
    if(!
equal(menu_death[g_arma_prim[id]][item_modelo_2] , "default"))
        
set_pev(id pev_weaponmodel2 menu_death[g_arma_prim[id]][item_modelo_2])// Si no es default le damos el modelo

Insecure

EDIT; este sistema de armas le puse

Código PHP:
/*
    Menu De Armas Por BlackFur
    Requerimientos : Sistema de Nivel Basico

*/

/* Primero Paso
Descripcion : Creamos el enum para darle una etiqueta a la const menu_death ,
y unas defines para luego usarlas.
"default" significa que no tendra ningun modelo en especial el cual no sera precacheado luego.

*/
#define TAG "^x04[ZP]^x01"
#define UDEAD "Solo cuando estes vivo"
#define is_human(%1) (!g_zombie[%1] && !g_survivor[%1] && !g_sniper[%1])

enum _:menu_dm
{
    
item_name_v2[90] , // nombre de la arma (menu)
    
item_id // id = CSW_
    
item_csname[90] , // nombre (cs) weapon_
    
red // color rojo del efecto
    
green // color verde del ""
    
blue // "" azul del ""
    
Float:item_damage // Damage
    
item_level // Level
    
item_modelo[90] , // Modelo v_
    
item_modelo_2[90// Modelo p_
}

new const 
menu_death[][menu_dm] =
{
    { 
"MAC 10" CSW_MAC10 "weapon_mac10" 0  1.0 ,  "default" "default"} , 
    { 
"Sniper Awp AE2" CSW_AWP "weapon_awp" 255 255 8.0 "models/zp/v_awp_sniper.mdl" "models/zp/p_awp_sniper.mdl" }
}

/* Segundos Paso

Descripcion : Creacion de algunas variables.
1.- usada para el menu
2.- usada para guardar la seleccion automatica y el arma anterior
3.- similar a la segunda pero esta puede ser usada para dar x arma a un survivor o algo , asi
no se cambia la seleccion anterior.

*/
new menu_armas
new g_save_weapons[33][2]
new 
g_arma_prim[33]

new 
Trie:g_tClaseSprite
new g_trace

/* Tercer Paso 
Descripcion : Precacheamos los modelos que usaremos y un efecto aportado por DJHD.
Aqui el equal es usado para saber si el modelo es default y asi no precachearlo , razon de
esto ya que el cs tiene un limite de precache con esto se ahorra.
*/

public plugin_precache()
{
    for(new 
sizeof menu_death i++)
    {
        if(!(
equal(menu_death[i][item_modelo] , "default")))
            
precache_model(menu_death[i][item_modelo])
            
        if(!(
equal(menu_death[i][item_modelo_2] , "default")))
            
precache_model(menu_death[i][item_modelo_2])
    }
    
    
g_tClaseSprite TrieCreate()
    
RegisterHam(Ham_TraceAttack"worldspawn""TraceAttack"1)
    
TrieSetCell(g_tClaseSprite"worldspawn"1)
    
RegisterHam(Ham_TraceAttack"player""TraceAttack"1)
    
TrieSetCell(g_tClaseSprite"player"1)
    
register_forward(FM_Spawn"Spawn"1)
    
g_trace engfunc(EngFunc_PrecacheModel"sprites/laserbeam.spr")
}

/* Creamos el Menu
Descripcion: tenia 3 opciones para las pistolas secundarias , pero lo saque ya que no se los dejare
todo en bandeja.
*/

public show_menu_selec(id)
{
    new 
menu_selec_arm menu_create("\y[\rS\y]eleccion de Armas" "handler_selec_arm")
    
    
menu_additem(menu_selec_arm "\yEscoger Primarias" "1")
    
    if(
g_save_weapons[id][0])
        
menu_additem(menu_selec_arm "\yRecordar Armas\r [Activado]" "2")
    else
        
menu_additem(menu_selec_arm "\yRecordar Armas\r [Desactivado]" "2")

    
menu_setprop(menu_selec_arm MPROP_EXITNAME,"\ySalir")
    
menu_display(idmenu_selec_arm 0)
    
    return 
PLUGIN_HANDLED
}

public 
handler_selec_arm(id menu_selec_arm item)
{
    if(
item == MENU_EXIT || !is_user_alive(id))
        return 
PLUGIN_HANDLED
    
    
if(!is_human(id))
    {
        
zp_colored_print(id "%s Solo Para^x04 Humanos." TAG)
        return 
PLUGIN_HANDLED
    
}
        
    switch(
item)
    {
        case 
:
        {
            if(
g_canbuy[id])
                
show_menu_armas(id+TASK_SPAWN 0)
            else
                
zp_colored_print(id "%s Ya Has Comprado Tus Armas^x04 Primarias." TAG)
        }
        
        case 
:
        {
            if(
g_save_weapons[id][0])
                
g_save_weapons[id][0] = false
            
else    
                
g_save_weapons[id][0] = true
            
            g_save_weapons
[id][1] = -
            
/* -1 es para que no de ninguna arma */
            
            
show_menu_selec(id)
            
zp_colored_print(id "%s Has^x04 %s^x01 Tu^x04 AutoSeleccion." TAG ,g_save_weapons[id][0] ? "Activado" "Desactivado")
        }
        
        
    }
    return 
PLUGIN_HANDLED
}

public 
show_menu_armas(taskid page)
{    
    new 
id ID_SPAWN
    
    
new len[999] , temp[22]
    
    if(
can_buy(id)) // es para chequear algunas condiciones
        
return PLUGIN_HANDLED
    
    menu_armas 
menu_create("\y[\rA\y]rmas Primarias" "handler_primarias")
    
    if(
g_save_weapons[id][0]) // Si Tiene Su Auto-Seleccion
    
{
        if(
g_save_weapons[id][1] != -1// No es igual a -1 por lo de arriba
        
{
            
handler_primarias(id menu_armas g_save_weapons[id][1])
            return 
PLUGIN_HANDLED
            
            
/*
            
            Llamamos directo al handler y returneamos.
            
            */
        
}
    }
    
    for(new 
sizeof menu_death i++)
    {
        if(
g_level[id] >= menu_death[i][item_level])
            
formatex(len charsmax(len) , "\y%s \r[Disponible]" menu_death[i][item_name_v2])
        else
            
formatex(len charsmax(len) , "\d%s \r[Nivel Requerido : %d]" menu_death[i][item_name_v2] , menu_death[i][item_level])

        
num_to_str(i,temp2)
        
menu_additem(menu_armas len temp)
    }
    
    
menu_setprop(menu_armas MPROP_BACKNAME,"\yAtras")
    
menu_setprop(menu_armas MPROP_NEXTNAME,"\ySiguiente")
    
menu_setprop(menu_armas MPROP_EXITNAME,"\ySalir")
    
menu_display(idmenu_armas page)
    
    return 
PLUGIN_HANDLED
}

public 
handler_primarias(id menu_armas item)
{
    if(
item == MENU_EXIT || !is_user_alive(id))
    {
        
menu_destroy(menu_armas)
        return 
PLUGIN_HANDLED
    
}
    
    if(
can_buy(id))
        return 
PLUGIN_HANDLED
        
    
new page armas_2 // Obtenemos la pagina del menu para luego abrir hay mismo
    
player_menu_info(id menu_armas armas_2 page)
    
    if(
g_level[id] >= menu_death[item][item_level]) // Nivel Mayor al Requerido
    
{
        
g_arma_prim[id] = item // guardamos el item en esta variable
        
g_save_weapons[id][1] = item // guardamos el item en este variable
        
drop_weapons(id 1// le botamos su arma primaria
        
fm_give_item(id menu_death[item][item_csname]) // le damos el item
        
ExecuteHamB(Ham_GiveAmmoidMAXBPAMMO[menu_death[item][item_id]], AMMOTYPE[menu_death[item][item_id]], MAXBPAMMO[menu_death[item][item_id]])
        
g_canbuy[id] = false // para que no pueda volver a abrir el menu
    
}
    else
    {
        
zp_colored_print(id "%s Necesitas Ser Nivel %d Para Comprar Esta Arma." TAG menu_death[item][item_level])
        
show_menu_armas(id+TASK_SPAWN page// Aqui le abrimos el menu de nuevo pero con la pagina que estaba viendo
    
}
    return 
PLUGIN_HANDLED
}

can_buy(id)
{
    if(!
is_user_alive(id))
    {
        
zp_colored_print(id "%s %s." TAG UDEAD)
        return 
PLUGIN_HANDLED
    
}
    
    if(!
is_human(id))
    {
        
zp_colored_print(id "%s Solo Para^x04 Humanos." TAG)
        return 
PLUGIN_HANDLED
    
}
    
    if(!
g_canbuy[id])
    {
        
zp_colored_print(id "%s Ya Has Comprado Tu Arma^x04 Primarias." TAG)
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}

/* Cuarto Paso

Descripcion: Setear Damage , Modelos y Efectos

La parte de los efectos no la podre explicar ya que no fue hecha por mi

*/

/* Buscan replace_weapon_models(id, weaponid)
y abajo del switch ponen lo siguiente */

if(weaponid == menu_death[g_arma_prim[id]][item_id]) // si la arma que tiene == a la del menu que el habia obtenido
{
    if(!
equal(menu_death[g_arma_prim[id]][item_modelo] , "default"))// Si no es default le damos el modelo 
        
set_pev(id pev_viewmodel2 menu_death[g_arma_prim[id]][item_modelo])
        
    if(!
equal(menu_death[g_arma_prim[id]][item_modelo_2] , "default"))
        
set_pev(id pev_weaponmodel2 menu_death[g_arma_prim[id]][item_modelo_2])// Si no es default le damos el modelo
}

/* Ahora buscan 
// Attacker is human...
if (!g_zombie[attacker])
*/
if(g_currentweapon[attacker] == menu_death[g_arma_prim[attacker]][item_id]) // Arma que tiene == a la arma que obtuvo del menu
    
SetHamParamFloat(damage *= menu_death[g_arma_prim[attacker]][item_damage]) // le damos el damage de dicha arma
    
/* Al final del plugin */

public Spawn(iEnt)
{
    static 
szClassName[32]
    
pev(iEntpev_classnameszClassNamecharsmax(szClassName))
         
    if(
pev_valid(iEnt))
    {
        if(!
TrieKeyExists(g_tClaseSpriteszClassName))
        {
            
RegisterHam(Ham_TraceAttackszClassName"TraceAttack"1)
            
TrieSetCell(g_tClaseSpriteszClassName1)
        }
    }
}

public 
plugin_end()
{
    
TrieDestroy(g_tClaseSprite)
}
    
public 
TraceAttack(victimattackerFloat:damageFloat:direction[3], iTrdamage_type)
{
    if (!
is_user_alive(attacker) && !is_user_connected(attacker))
        return 
HAM_IGNORED
    
    
if(get_user_weapon(attacker) == CSW_KNIFE)
        return 
HAM_IGNORED
    
    
new Float:vecEndPos[3]
    
get_tr2(iTrTR_vecEndPosvecEndPos)
    
    new 
origin[3]
    
get_user_origin(attacker origin)
    new 
weapon get_user_weapon(attacker)
    
    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvecEndPos0)
    
write_byte(TE_BEAMENTPOINT)
    
write_short(attacker 0x1000)
    
engfunc(EngFunc_WriteCoordvecEndPos[0])
    
engfunc(EngFunc_WriteCoordvecEndPos[1])
    
engfunc(EngFunc_WriteCoordvecEndPos[2])
    
write_short(g_trace)
    
write_byte (1)            
    
write_byte (10)                
    
write_byte (1)
    
write_byte (10)     
    
write_byte(0)
    if(
weapon == menu_death[g_arma_prim[attacker]][item_id])
    {
        
write_byte(menu_death[g_arma_prim[attacker]][red])
        
write_byte(menu_death[g_arma_prim[attacker]][green])
        
write_byte(menu_death[g_arma_prim[attacker]][blue])
    }
    else
    {
        
write_byte(0)
        
write_byte(0)
        
write_byte(0)
    }
    
write_byte(random_num(150 200))
    
write_byte(0)
    
message_end()
        
    
engfunc(EngFunc_MessageBeginMSG_PASSVC_TEMPENTITYvecEndPos 0)
    
write_byte(TE_DLIGHT// TE id
    
engfunc(EngFunc_WriteCoordvecEndPos[0])
    
engfunc(EngFunc_WriteCoordvecEndPos[1])
    
engfunc(EngFunc_WriteCoordvecEndPos[2])
    
write_byte(5)
    if(
weapon == menu_death[g_arma_prim[attacker]][item_id])
    {
        
write_byte(menu_death[g_arma_prim[attacker]][red])
        
write_byte(menu_death[g_arma_prim[attacker]][green])
        
write_byte(menu_death[g_arma_prim[attacker]][blue])
    }
    else
    {
        
write_byte(0)
        
write_byte(0)
        
write_byte(0)
    }
    
write_byte(10)
    
write_byte(10)
    
message_end()
    return 
HAM_IGNORED
}

/* En reset_vars(id , all)*/

if (resetall)
{
    
// Code 
    // Code 
    // Code 
    
g_save_weapons[id][0] = 0
    g_save_weapons
[id][1] = -1
    g_arma_prim
[id] = 0

Responder


Mensajes en este tema
[ZP] Problema con menú de armas - por TuboRojo :v - 13/02/2020, 02:57 AM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)