Allied Modders en español

Versión completa: Mira laser
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Este plugin hace que a un player le de laser apenas inicia la ronda, pero quiero que la linea laser que salen de las armas sea por un comando en say
osea que un player al escribir en say /laser que salga un menu para seleccionar algun color de la mira laser


Menu de laser

1- mira laser azul
2- mira laser rojo
3- mira laser violeta
4-mira laser verde


Código PHP:
#include <amxmodx>

#define MAX_TEAMS 4

new sprite
new numwpns
new weapons[32]

new 
ls_enabled
new ls_line
new ls_pvis
new ls_wpns
new ls_rgb

new numteams
new rgb[3][MAX_TEAMS]

public 
plugin_init()
{
    
register_plugin("Lasers","0.5","Toster v2.1")
    
    
ls_enabled register_cvar("ls_enabled""1")
    
ls_line register_cvar("ls_line""1")
    
ls_pvis register_cvar("ls_pvis""0")
    
ls_wpns register_cvar("ls_wpns""0;4;6;9;25;29;")
    
ls_rgb register_cvar("ls_rgb""255 0 0;")
    
    
register_clcmd("ls_refresh""getcvars"ADMIN_KICK)
    
register_clcmd("ls_getteam""getteam"ADMIN_KICK)
    
register_clcmd("ls_getwpn""getwpn"ADMIN_KICK)
    
    
getcvars()
}

public 
getwpn(id)
{
    new 
clipammo
    
new get_user_weapon(idclipammo)
    
    
console_print(id"[ls] Your current weapon's id: %d"w)
    return 
PLUGIN_HANDLED
}

public 
getteam(id)
{
    new 
get_user_team(id)
    
console_print(id"[ls] Your current team's id: %d"t)
    return 
PLUGIN_HANDLED
}

public 
getcvars()
{
    
getwpns()
    
getrgb()
    
    return 
PLUGIN_HANDLED
}

public 
getrgb()
{
    new 
txt[MAX_TEAMS 16]
    new 
team[MAX_TEAMS][16]
    new 
tmp[4]
    
    
get_pcvar_string(ls_rgbtxt64)
    
add(txt64" ")
    
    for(
numteams 0contain(txt";")!=-1numteams++)
    {
      
strtok(txtteam[numteams], 16txtMAX_TEAMS 16';')
      
      for(new 
i=0i<2i++)
      {
        
strtok(team[numteams], tmp4team[numteams], 16' ')
        
rgb[i][numteams] = str_to_num(tmp)
      }
      
trim(team[numteams])
      
rgb[2][numteams] = str_to_num(team[numteams])
      
      
trim(txt)
    }
}

public 
getwpns()
{
    new 
txt[64]
    new 
wpns[3]
    
    
get_pcvar_string(ls_wpnstxt64)
    
add(txt64" ")
    
    for(
numwpns 0contain(txt";")!=-1numwpns++)
    {
      
strtok(txtwpns3txt64';')
      
weapons[numwpns] = str_to_num(wpns)
    }
}

public 
plugin_precache() 
{
    
sprite precache_model("sprites/white.spr")
}

public 
client_PreThink(id)
{
    if(!
is_user_alive(id)||get_pcvar_num(ls_enabled)!=1) return PLUGIN_HANDLED
    
    
new clipammo
    
new get_user_weapon(idclipammo)
    
    for(new 
i=0i<numwpnsi++) if(== weapons[i]) return PLUGIN_HANDLED
    
    
new e[3]
    new 
get_user_team(id)
    
    
get_user_origin(ide3)
    
    if(
get_pcvar_num(ls_pvis) == 0)message_beginMSG_BROADCAST,SVC_TEMPENTITY)
    else 
message_beginMSG_ONE_UNRELIABLE,SVC_TEMPENTITY_id)
    
    if(
get_pcvar_num(ls_line) != 0)
    {
      
write_byte (TE_BEAMENTPOINT)
      
write_short(id 0x1000)
      
write_coord (e[0])
      
write_coord (e[1])
      
write_coord (e[2])
    }
    else
    {
      
write_byte (0)
      
write_coord (e[0] + 1)
      
write_coord (e[1] + 1)
      
write_coord (e[2] + 1)
      
write_coord (e[0] - 1)
      
write_coord (e[1] - 1)
      
write_coord (e[2] - 1)
    }
    
    
write_short(sprite)
    
write_byte (0)                              
    
write_byte (10)                             
    
write_byte (1)
    
write_byte (5)                           
    
write_byte (0)    
    
    if(
numteams>=t)  
    {
      
write_byte (rgb[0][t-1])     
      
write_byte (rgb[1][t-1])
      
write_byte (rgb[2][t-1])
    }
    else
    {
      
write_byte (rgb[0][0])     
      
write_byte (rgb[1][0])
      
write_byte (rgb[2][0])
    }
    
    
write_byte (255)                             
    
write_byte (10)                              
    
message_end()
    
    return 
PLUGIN_HANDLED

(11/05/2016, 05:38 PM)blockhead escribió: [ -> ]Este plugin hace que a un player le de laser apenas inicia la ronda, pero quiero que la linea laser que salen de las armas sea por un comando en say, osea que un player al escribir en say /laser que salga un menu para seleccionar algun color de la mira laser

Menu de laser

1- mira laser azul
2- mira laser rojo
3- mira laser violeta
4-mira laser verde

Código PHP:
#include <amxmodx>
//#define MAX_TEAMS 4

new spritenumwpnsweapons[32], ls_enabledls_linels_pvisls_wpnsredgreenblue
//, ls_rgb, numteams, rgb[3][MAX_TEAMS]

public plugin_init() {
    
register_plugin("Lasers","1.0","Toster v2.1 & mlibre")
    
    
ls_enabled register_cvar("ls_enabled""1")
    
ls_line register_cvar("ls_line""1")
    
ls_pvis register_cvar("ls_pvis""0")
    
ls_wpns register_cvar("ls_wpns""0;4;6;9;25;29;")
    
//ls_rgb = register_cvar("ls_rgb", "255 0 0;")
    
    //register_clcmd("ls_refresh", "getcvars", ADMIN_KICK)
    
register_clcmd("ls_getteam""getteam"ADMIN_KICK)
    
register_clcmd("ls_getwpn""getwpn"ADMIN_KICK)
    
    
//getcvars()
    
register_clcmd("say /laser","laser_menu")
}
public 
laser_menu(id) {
    new 
szMenuszMenu menu_create("\yMenu de Lasers:""laser_select")
    
menu_additem(szMenu"\wMira Laser\y Azul""")
    
menu_additem(szMenu"\wMira Laser\y Rojo""")
    
menu_additem(szMenu"\wMira Laser\y Violeta""")
    
menu_additem(szMenu"\wMira Laser\y Verde^n""")
    
menu_additem(szMenu"\wQuitar Laser""")
    
menu_setprop(szMenu,MPROP_EXITNAME,"Salir")
    
menu_display(idszMenu0)
    return 
PLUGIN_HANDLED
}
public 
laser_select(idmenuitem) {
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
    }
    switch(
item) {
        case 
0: {
            
getwpns(), red 0green 0blue 255
        
}
        case 
1: {
            
getwpns(), red 255green 0blue 0
        
}
        case 
2: {
            
getwpns(), red 170green 0blue 255
        
}
        case 
3: {
            
getwpns(), red 0green 255blue 0
        
}
        case 
4: {
            
red 0green 0blue 0
        
}
    }
    return 
PLUGIN_HANDLED;
}
public 
getwpn(id) {
    new 
clipammo; new get_user_weapon(idclipammo)
    
console_print(id"[ls] Su arma actual id: %d"w)
    return 
PLUGIN_HANDLED
}
public 
getteam(id) {
    new 
get_user_team(id)
    
console_print(id"[ls] Su equipo actual id: %d"t)
    return 
PLUGIN_HANDLED
}
/*
public getcvars()
{
    getwpns()
    //getrgb()
    
    return PLUGIN_HANDLED
}
public getrgb()
{
    new txt[MAX_TEAMS * 16]
    new team[MAX_TEAMS][16]
    new tmp[4]
    
    get_pcvar_string(ls_rgb, txt, 64)
    add(txt, 64, " ")
    
    for(numteams = 0; contain(txt, ";")!=-1; numteams++)
    {
      strtok(txt, team[numteams], 16, txt, MAX_TEAMS * 16, ';')
      
      for(new i=0; i<2; i++)
      {
        strtok(team[numteams], tmp, 4, team[numteams], 16, ' ')
        rgb[i][numteams] = str_to_num(tmp)
      }
      trim(team[numteams])
      rgb[2][numteams] = str_to_num(team[numteams])
      
      trim(txt)
    }
}
*/
public getwpns() {
    new 
txt[64], wpns[3]; get_pcvar_string(ls_wpnstxt64), add(txt64" ")
    
    for(
numwpns 0contain(txt";")!=-1numwpns++) {
      
strtok(txtwpns3txt64';'); weapons[numwpns] = str_to_num(wpns)
    }
}
public 
plugin_precache() sprite precache_model("sprites/white.spr")

public 
client_PreThink(id) {
    if(!
is_user_alive(id)||get_pcvar_num(ls_enabled)!=1) return PLUGIN_HANDLED
    
    
new clipammo; new get_user_weapon(idclipammo)
    
    for(new 
i=0i<numwpnsi++) if(== weapons[i]) return PLUGIN_HANDLED
    
    
new e[3]; get_user_origin(ide3)
    
//new t = get_user_team(id)
    
    
if(get_pcvar_num(ls_pvis) == 0)message_beginMSG_BROADCAST,SVC_TEMPENTITY)
    else 
message_beginMSG_ONE_UNRELIABLE,SVC_TEMPENTITY_id)
    
    if(
get_pcvar_num(ls_line) != 0) {
      
write_byte (TE_BEAMENTPOINT)
      
write_short(id 0x1000)
      
write_coord (e[0])
      
write_coord (e[1])
      
write_coord (e[2])
    }
    else {
      
write_byte (0)
      
write_coord (e[0] + 1)
      
write_coord (e[1] + 1)
      
write_coord (e[2] + 1)
      
write_coord (e[0] - 1)
      
write_coord (e[1] - 1)
      
write_coord (e[2] - 1)
    }
    
write_short(sprite)
    
write_byte (0)                              
    
write_byte (10)                             
    
write_byte (1)
    
write_byte (5)                           
    
write_byte (0)
    
/*
    if(numteams>=t)  
    {
      write_byte (rgb[0][t-1])     
      write_byte (rgb[1][t-1])
      write_byte (rgb[2][t-1])
    }
    else
    {
      write_byte (rgb[0][0])     
      write_byte (rgb[1][0])
      write_byte (rgb[2][0])
    }
    */
    
write_byte (red)
    
write_byte (green)
    
write_byte (blue)
    
write_byte (255)                             
    
write_byte (10)                              
    
message_end()
    
    return 
PLUGIN_HANDLED

Muchas gracias .Me funciono Gran sonrisa
(11/05/2016, 09:18 PM)blockhead escribió: [ -> ]Muchas gracias .Me funciono Gran sonrisa

Whatever

en el menu le pondes cambiar el color a las letras

\w = blanco, \y = amarillo, \r = rojo

Código PHP:
new szMenuszMenu menu_create("\yMenu de Lasers:""laser_select")
menu_additem(szMenu"\wMira Laser\y Azul""")
menu_additem(szMenu"\wMira Laser\y Rojo""")
menu_additem(szMenu"\wMira Laser\y Violeta""")
menu_additem(szMenu"\wMira Laser\y Verde^n""")
menu_additem(szMenu"\wQuitar Laser"""