Ayuda ZP Hook
#1
Bueno ya tengo el plugin y todo pero quisiera tener un menu y que el menu cuando este en modo ON lo puedan usar y cuando este en OFF no, aqui les dejo el plugin solo lo que quiero es un menu para activar y desactivar, y que el menu y el hook este solo disponible para humanos
Código PHP:
#include <amxmodx>  
#include <amxmisc>  
#include <fakemeta>
#include <zombieplague>

#define PLUGIN "ProKreedz Hook"  
#define VERSION "v2.4"  
#define AUTHOR "NuRaSiL"  

#define KZ_ACCESS  ADMIN_LEVEL_C  
#define RANDOM_NUM random_num(0,255)  
#define RED        255  
#define GREEN      99  
#define  BLUE      71  

enum color {normal 1greenteam}  
enum 
{HOOK_OFFHOOK_RELEASEHOOK_ON}  

new is_plr_connected[33]  
new bool:g_bCanUseHook[33]  
new g_bIsHooked[33]  
new g_iHookOrigin[33][3]  
new g_bPlayerIsAdmin[33]  
new g_SpriteBeam  
new g_SpriteLaser  
new g_SpriteBall    
new g_SayText  
new g_iMaxPlayers  
new g_kz_tag  

public plugin_init()  
{  
  register_plugin
(PLUGINVERSIONAUTHOR)  
    
  register_forward
(FM_Think"fw_ThinkEnt")  
  register_clcmd
("+hook""HookOn"KZ_ACCESS)  
  register_clcmd
("-hook""HookOff"KZ_ACCESS)  
    
  
new iEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString "info_target")) 
  set_pev(iEntpev_classname"hook_think")  
  set_pev
(iEntpev_nextthinkget_gametime() + 0.1)  
    
  g_SayText 
get_user_msgid("SayText")  
  g_iMaxPlayers 
get_maxplayers()  
}  

public plugin_precache()  
{  
  g_SpriteBeam 
engfunc(EngFunc_PrecacheModel"sprites/lgtning.spr")  
  g_SpriteLaser 
engfunc(EngFunc_PrecacheModel,"sprites/zbeam4.spr")  
  g_SpriteBall 
engfunc(EngFunc_PrecacheModel,"sprites/muz4.spr")  
}  

public client_putinserver(id)  
{  
  is_plr_connected
[id] = true  
  g_bIsHooked
[id] = HOOK_OFF  
  
if(get_user_flags(id) & KZ_ACCESS)  
      g_bPlayerIsAdmin
[id] = true  
}  

public client_disconnect(id)  
{  
  is_plr_connected
[id] = false  
  g_bIsHooked
[id] = HOOK_OFF  
  
if(g_bPlayerIsAdmin[id])  
      g_bPlayerIsAdmin
[id] = false  
}  

public kz_prize_hook(idstatus[])  
{  
  
switch(status[0])  
  
{  
      
case '0'g_bCanUseHook[id] = false  
          
      
case '1':  
      
{  
        g_bCanUseHook
[id] = true  
        set_task
(5.0"kz_hook_msg"id)  
      
}  
  
}  
}  

public kz_hook_msg(id)  
{  
        kz_colorchat
(idgreen"%L"id"PKU_PRIZE_HOOK")  
}  

public cmd_give_hook(id,level,cid)  
{  
  
if(!cmd_access(id,level,cid,3))  
      
return PLUGIN_HANDLED  
    
  
new name[32]  
  get_user_name
(id,name,31)  
    
  
new szarg1[32], szarg2[8], bool:mode  
  read_argv
(1,szarg1,31)  
  read_argv
(2,szarg2,7)  
  
if(equal(szarg2,"on"))  
      mode 
true  
    
  
if(equal(szarg1,"@ALL"))  
  
{  
      
for(new 1<= g_iMaxPlayersi++)  
      
{  
        
if(is_plr_connected[i] && is_user_alive(i))  
        
{  
            g_bCanUseHook
[i] = mode  
            
if(mode)  
              kz_colorchat
(igreen"%L"i"PKU_HOOK_AT_ALL"name)  
            else  
              kz_colorchat
(igreen"%L"i"PKU_HOOK_TAKE_ALL"name)  
        
}  
      
}  
  
}  
  else  
  
{  
      
new pid cmd_target(id,szarg1,2)  
      
if(pid 0)  
      
{  
        g_bCanUseHook
[pid] = mode  
        
if(mode)  
            kz_colorchat
(pidgreen"%L"pid"PKU_HOOK_AT_TARGET"name)  
        else  
            kz_colorchat
(pidgreen"%L"pid"PKU_HOOK_TAKE_TARGET"name)  
      
}  
  
}  
  
return PLUGIN_HANDLED  
}  

public HookOn(id)  
{  
  
if(!g_bCanUseHook[id] && !g_bPlayerIsAdmin[id])  
      
return PLUGIN_HANDLED  
    
  
if(is_plr_connected[id] && is_user_alive(id))  
  
{  
      get_user_origin
(idg_iHookOrigin[id], 3)  
        
      
if(callfunc_begin("DetectCheat","ProKreedz_v2.4.amxx") == 1)  
      
{  
        callfunc_push_int
(id)  
        callfunc_push_str
("Hook")  
        callfunc_end
()  
      
}  
      g_bIsHooked
[id] = HOOK_ON  
  
}  
  
return PLUGIN_HANDLED  
}  

public HookOff(id)  
{  
  g_bIsHooked
[id] = HOOK_RELEASE  
  
return PLUGIN_HANDLED  
}  

public fw_ThinkEnt(iEnt)  
{  
  
if (pev_valid(iEnt))  
  
{  
      
static ClassName[32]  
      pev
(iEntpev_classnameClassName31)  
        
      
if(equal(ClassName"hook_think"))  
      
{  
        fw_HookThink
()  
        set_pev
(iEntpev_nextthinkget_gametime() + 0.1)  
      
}  
  
}  
}  

public fw_HookThink()  
{  
  
static idorigin[3], Float:velocity[3], distance ,
  
for(id id <= g_iMaxPlayers id++)  
  
{  
      
if(g_bIsHooked[id] == HOOK_ON)  
    
{  
        
for(i=0;i<3;i++) 
        
            message_begin(MSG_BROADCASTSVC_TEMPENTITY)  
            write_byte
(1)          // TE_BEAMENTPOINT  
            write_short(id)          // entid  
            write_coord(g_iHookOrigin[id][0]) // origin  
            write_coord(g_iHookOrigin[id][1]) // origin  
            write_coord(g_iHookOrigin[id][2]) // origin  
            if(g_bPlayerIsAdmin[id])  
            
{  
                write_short
(g_SpriteBeam)    // sprite index  
                write_byte(0)          // start frame  
                write_byte(0)          // framerate  
                write_byte(1)          // life  
                write_byte(40)          // width  
                write_byte(50)  
                write_byte
(RANDOM_NUM// r  
                write_byte(RANDOM_NUM// g  
                write_byte(RANDOM_NUM// b  
            }  
            else  
            
{  
                write_short
(g_SpriteLaser)    // sprite index  
                write_byte(0)          // start frame  
                write_byte(0)          // framerate  
                write_byte(1)          // life  
                write_byte(20)          // width  
                write_byte(50)  
                write_byte
(RED)          // r  
                write_byte(GREEN)      // g  
                write_byte(BLUE)      // b  
            }  
            write_byte
(150)                // brightness  
            write_byte(0)                // speed  
            message_end()  
        

        
        message_begin
(MSG_BROADCASTSVC_TEMPENTITY)  
        write_byte
(TE_SPRITE
        write_coord(g_iHookOrigin[id][0]) // origin  
        write_coord(g_iHookOrigin[id][1]) // origin  
        write_coord(g_iHookOrigin[id][2]) // origin  
        write_short(g_SpriteBall
        write_byte(20
        write_byte(164
        message_end() 
        
        get_user_origin
(idorigin)  
        distance 
get_distance(g_iHookOrigin[id], origin)  
        
if(distance 25)  
        
{  
            velocity
[0] = (g_iHookOrigin[id][0] - origin[0]) * (2.0 350 distance)  
            velocity
[1] = (g_iHookOrigin[id][1] - origin[1]) * (2.0 350 distance)  
            velocity
[2] = (g_iHookOrigin[id][2] - origin[2]) * (2.0 350 distance)  
            set_pev
(idpev_velocityvelocity)  
        
}  
      
}  
      
else if(g_bIsHooked[id] == HOOK_RELEASE)  
      
{  
        g_bIsHooked
[id] = HOOK_OFF  
      
}  
  
}  
}  

kz_colorchat
(idcolor:type, const msg[], {Float,Sql,Result,_}:...) {  
    
  
static message[256], pkmsg[180], changed[8], argscount,j  
  argscount 
numargs()  
    
  
switch(type)  
  
{  
      
case normalmessage[0] = 0x01  
          
      
case greenmessage[0] = 0x04  
          
      
default: message[0] = 0x03  
        
  
}  
  
new pktag[32]  
  get_pcvar_string
(g_kz_tagpktag31)  
    
  
if(id)  
  
{  
      
if(is_plr_connected[id])  
      
{  
        vformat
(pkmsg179msg4)  
        formatex
(message[1], 255"%s %s"pktagpkmsg)  
        message
[192] = '^0'  
          
        replace_all
(message191"!g""^x04")  
        replace_all
(message191"!n""^x01")  
        replace_all
(message191"!t""^x03")  
        kz_print_msg
(idmessage)  
      
}  
  
}  
  else  
  
{  
      
for(new 1<= g_iMaxPlayersi++)  
      
{  
        
if(is_plr_connected[i])  
        
{  
            
new changedcount 0  
              
            
for(2argscountj++)  
            
{  
              
if(getarg(j) == LANG_PLAYER)  
              
{  
                  setarg
(j0i);  
                  changed
[changedcount++] = j;  
              
}  
            
}  
            vformat
(pkmsg179msg4)  
            formatex
(message[1], 255"%s %s"pktagpkmsg)  
            message
[192] = '^0'  
              
            replace_all
(message191"!g""^x04")  
            replace_all
(message191"!n""^x01")  
            replace_all
(message191"!t""^x03")  
            kz_print_msg
(imessage)  
              
            
for(0changedcountj++)  
            
{  
              setarg
(changed[j], 0LANG_PLAYER)  
            
}  
        
}  
      
}  
  
}  
}  

stock kz_print_msg
(id, const msg[])  
{  
  message_begin
(MSG_ONE_UNRELIABLEg_SayText_id)  
  write_byte
(id)        
  write_string
(msg)  
  message_end
()  

Responder
#2
para que sea humanos solo verifica que si es zombie returne la funcion
Código PHP:
if (zp_get_user_zombie(id)) return; 

y para lo del que menu se active o desactive hacelo con una varibale

Código PHP:
new activar_menu true // yo le pongo valor true (verdadero) para que el menu de por si ya este activado

// y esto lo chequeas donde quieras q se active/desactive 
___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)