Ideas para Servidores de TTT MOD
#1
Lengua 
ando en busca de sugerencias / ideas de cosas para TTT Mod.

toda idea / sugerencia sera puesta a prueba a mis conocimientos, si mis conocimientos logran crearlo se creara y sera un New Aporte pacman
Responder
#2
banedo.

menos bugs...
rangos pacman
items qcyo.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#3
Barcos y putas
Responder
#4
Yo tengo una super sugerencia...
Mejor ortografía Nothingdohere

Después de eso, solo usá tu...
[Imagen: 59076375.jpg]


Y también barcos y putas.
Responder
#5
Rangos + puntos en MySQL y SQLite.

Barcos y putas también.
Responder
#6
Mina, 1 Uso, 1 Credito daño multiplicado por el Karma del jugador

si lo haces y me dejas el .sma estaría joya

Código PHP:
/****************************************************\
|*Land Mines                                        *|
|*Created By: Sam Tsuki(Aka Sam X HearTLesS)        *|
|*                                                  *|
|* Have Fun,                                        *|
|*           Sam Tsuki                              *|
\****************************************************/

/*
Description:
This plugin creates Land Mines and Warning Signs by making map cfg files.

CMDs:
say /minesmenu        // ADMIN_KICK, Shows Land Mines menu

CVARs:
mines_enabled 1        // Enables Land Mines explosion
mines_visible 1        // Enables Land Mines t obe visible when spawned
mines_radius 200    // Maximum radius for Mines damage
mines_maxdamage 50    // Maximum damage a Mine can deal
mines_respawntime 20    // Seconds to respawn a Mine after explosion (Put to 0 to respawn only after new round, put to -1 to never respawn)
mines_frags 1        // Should Mine kills give frags? (Self or Teammates: -1, Others: +1)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Land Mines"
#define VERSION "1.3"
#define AUTHOR "Sam Tsuki"

new mines_enabledmines_visiblemines_radiusmines_maxdamagemines_respawntimemines_frags
new boomMenuID[33]
new 
blood_dropblood_spray
new mdl_gib_fleshmdl_gib_headmdl_gib_legbonemdl_gib_lungmdl_gib_meatmdl_gib_spine
new files_loaded
new in_edit_mode[33], edit_mode
new noclip[33], godmode[33]
//--------------------------------------------------------------------------------------------------
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
mines_enabled register_cvar("mines_enabled""1")
    
mines_visible register_cvar("mines_visible""1")
    
mines_radius register_cvar("mines_radius""200")
    
mines_maxdamage register_cvar("mines_maxdamage""50")
    
mines_respawntime register_cvar("mines_respawntime""20")
    
mines_frags register_cvar("mines_frags""1")
    
    
register_clcmd("say /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_clcmd("say_team /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_menucmd(register_menuid("[Land Mines menu]"),1023,"action_menu")
    
    
register_touch("player""land_mine""mine_touched")
    
    
register_event("HLTV""mines_newround""a""1=0""2=0")
    
register_event("ResetHUD","player_newspawn","b")
    
    
register_logevent("round_end",   2"1=Round_End")
    
    
set_task(0.1"readminescfg")
    
set_task(0.2"readsignscfg")
    
    
RegisterHam(Ham_TakeDamage"info_target""mines_damaged")
}
//--------------------------------------------------------------------------------------------------
public plugin_precache()
{
    
precache_model("models/land_mines/land_mine2.mdl")
    
precache_model("models/land_mines/warning_ns2.mdl")
    
precache_model("models/land_mines/warning_ew2.mdl")
    
boom precache_model("sprites/zerogxplode.spr")
    
mdl_gib_flesh precache_model("models/Fleshgibs.mdl")
    
mdl_gib_head precache_model("models/GIB_Skull.mdl")
    
mdl_gib_legbone precache_model("models/GIB_Legbone.mdl")
    
mdl_gib_lung precache_model("models/GIB_Lung.mdl")
    
mdl_gib_meat precache_model("models/GIB_B_Gib.mdl")
    
mdl_gib_spine precache_model("models/GIB_B_Bone.mdl")
    
blood_drop precache_model("sprites/blood.spr")
    
blood_spray precache_model("sprites/bloodspray.spr")
}
//--------------------------------------------------------------------------------------------------
public client_connect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
}
//--------------------------------------------------------------------------------------------------
public client_disconnect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
    
if(in_edit_mode[id]) {
        
set_task(0.1"remove_edit")
        if(
get_pcvar_num(mines_enabled)) {
            
set_task(0.2"readminescfg")
            
set_task(0.3"readsignscfg")
        }
        
edit_mode 0
    
}
    
in_edit_mode[id] = 0
}
//--------------------------------------------------------------------------------------------------
public round_end()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(2.0"remove_mines")
        
files_loaded 0
    
}
}
//--------------------------------------------------------------------------------------------------
public mines_newround()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(0.1"readminescfg")
        
set_task(0.2"readsignscfg")
    }
}
//--------------------------------------------------------------------------------------------------
public cleanminesfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public cleansignsfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public readminescfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded 0)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
mine_spawn(parsedxparsedyparsedz)
        }
    }
    
files_loaded 1
}
//--------------------------------------------------------------------------------------------------
public readsignscfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded == 2)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0sign_spawn_ns(parsedxparsedyparsedz)
                case 
1sign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
    
files_loaded 2
}
//--------------------------------------------------------------------------------------------------
public create_minesedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
editmine_spawn(parsedxparsedyparsedz)
        }
    }
}
//--------------------------------------------------------------------------------------------------
public create_signsedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0editsign_spawn_ns(parsedxparsedyparsedz)
                case 
1editsign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public player_newspawn(id)
{
    
fx_trans(id1)
}
//--------------------------------------------------------------------------------------------------
public mines_menu(idlevelcid)
{
    if(!
cmd_access(idlevelcid0))
        return 
PLUGIN_HANDLED
    
    MenuID
[id] = 1
    show_minesmenu
(id)
    
    return 
PLUGIN_HANDLED
}
//--------------------------------------------------------------------------------------------------
public show_minesmenu(id)
{
    new 
menu_body[320]
    new 
0
    
new len 319
    
new keys
    
    
switch(MenuID[id]) {
        case 
1: {
            
+= formatmenu_body[n],len-n,"\yLand Mines menu:\w^n^n")
            
            switch(
get_pcvar_num(mines_enabled)) {
                case 
0+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n")
            }
            switch(
get_pcvar_num(mines_visible)) {
                case 
0+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n")
            }
            switch(
get_pcvar_num(mines_frags)) {
                case 
0+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n")
            }
            
+= formatmenu_body[n],len-n,"\y4.\w Edit Mode^n")
            
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
        }
        case 
2: {
            
+= formatmenu_body[n],len-n,"\yLand Mines edit menu:\w^n^n")
            
            
+= formatmenu_body[n],len-n,"\y1.\w Create Mine^n")
            
+= formatmenu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n")
            
+= formatmenu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n")
            
+= formatmenu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y6.\w Remove All^n")
            
            new 
nc[32], gm[32]
            switch(
noclip[id]) {
                case 
0nc "OFF"
                
case 1nc "ON"
            
}
            switch(
godmode[id]) {
                case 
0gm "OFF"
                
case 1gm "ON"
            
}
            
+= formatmenu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n"nc)
            
+= formatmenu_body[n],len-n,"\y8.\w Godmode:\r %s^n"gm)
            
            
+= formatmenu_body[n],len-n,"^n\y9. Back")
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)
        }
    }
    
show_menu(id,keys,menu_body,-1,"[Land Mines menu]")
}
//--------------------------------------------------------------------------------------------------
public action_menu(idkey)
{
    
key++
    
    switch(
MenuID[id]) {
        case 
1: {
            switch(
key) {
                case 
1: {
                    switch(
get_pcvar_num(mines_enabled)) {
                        case 
0: {
                            
set_pcvar_num(mines_enabled1)
                            
client_print(0print_chat"[%s] Plugin is now ON!"PLUGIN)
                            
set_task(0.1"readminescfg")
                            
set_task(0.2"readsignscfg")
                        }
                        case 
1: {
                            
set_pcvar_num(mines_enabled0)
                            
client_print(0print_chat"[%s] Plugin is now OFF!"PLUGIN)
                            
set_task(0.1"remove_mines")
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
2: {
                    switch(
get_pcvar_num(mines_visible)) {
                        case 
0: {
                            
set_pcvar_num(mines_visible1)
                            
client_print(0print_chat"[%s] Mines will be visible after respawn!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_visible0)
                            
client_print(0print_chat"[%s] Mines will be invisible after respawn!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
3: {
                    switch(
get_pcvar_num(mines_frags)) {
                        case 
0: {
                            
set_pcvar_num(mines_frags1)
                            
client_print(0print_chat"[%s] Mine kills will give frags!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_frags0)
                            
client_print(0print_chat"[%s] Mine kills won't give frags!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
4: {
                    if(
edit_mode) {
                        
client_print(idprint_chat"[%s] Someone's already in Edit Mode!"PLUGIN)
                        
show_minesmenu(id)
                        return
                    }
                    
MenuID[id] = 2
                    in_edit_mode
[id] = 1
                    edit_mode 
1
                    set_task
(0.1"remove_mines")
                    
set_task(0.2"create_minesedit")
                    
set_task(0.2"create_signsedit")
                    
show_minesmenu(id)
                }
                case 
10: {
                    
MenuID[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
        case 
2: {
            switch(
key) {
                case 
1: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editmine_spawn(sxsysz)
                    
                    
client_print(idprint_center"[%s] Mine created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
2: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 0"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ns(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
3: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 1"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ew(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
4: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
remove_aim(ent)
                    
                    
show_minesmenu(id)
                }
                case 
5: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
switch_dir(ent)
                    
                    
show_minesmenu(id)
                }
                case 
6: {
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
                    
show_minesmenu(id)
                }
                case 
7: {
                    switch(
noclip[id]) {
                        case 
0: {
                            
set_pev(idpev_movetypeMOVETYPE_NOCLIP)
                            
noclip[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_movetypeMOVETYPE_WALK)
                            
noclip[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
8: {
                    switch(
godmode[id]) {
                        case 
0: {
                            
set_pev(idpev_takedamage0)
                            
godmode[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_takedamage1)
                            
godmode[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
9: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 1
                    show_minesmenu
(id)
                }
                case 
10: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public remove_aim(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editland_mine") && !equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
x[8], y[8], z[8]
    if(
equal(classname"editland_mine")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
        
format(eorigin127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d"str_to_num(x), str_to_num(y), str_to_num(z))
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    else if(
equal(classname"editwarning_sign")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
        new 
model[128]
        
pev(entpev_modelmodel127)
        new 
dir
        
if(equal(model"models/land_mines/warning_ns2.mdl"))
            
dir 0
        
else
            
dir 1
        format
(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public switch_dir(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    new 
model[128]
    
pev(entpev_modelmodel127)
    new 
dirdirection
    
if(equal(model"models/land_mines/warning_ns2.mdl")) {
        
dir 0
        direction 
1
    
}
    else {
        
dir 1
        direction 
0
    
}
    
format(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
    new 
fh fopen(file"rt")
        
    new 
x[8], y[8], z[8]
    if(
fh) {
        new 
buffer[128]
        new 
counter
        
        
while(!feof(fh)) {
            
fgets(fhbuffer127)
            
            
parse(bufferx7y7z7)
            
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
            if(
equal(buffereorigin)) {
                
format(buffer127"")
                
write_file(filebuffercounter)
            }
            
counter++
        }
        
format(buffer127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction)
        
write_file(filebuffer)
        
fclose(fh)
    }
    
    
remove_entity(ent)
    new 
sx[8], sy[8], sz[8]
    
num_to_str(floatround(origin[0]), sx7)
    
num_to_str(floatround(origin[1]), sy7)
    
num_to_str(floatround(origin[2]), sz7)
    switch(
direction) {
        case 
0editsign_spawn_ns(sxsysz)
        case 
1editsign_spawn_ew(sxsysz)
    }
}
//--------------------------------------------------------------------------------------------------
public mine_spawn(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"land_mine")
    
set_pev(entpev_solid2)
    
set_pev(entpev_takedamage1.0)
    
set_pev(entpev_health9999.0)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(entget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ns(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ew(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public editmine_spawn(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editland_mine")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ns(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ew(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public mine_touched(ident)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    if(!
is_user_alive(id))
        return
    
    
explode(ent0)
}
//--------------------------------------------------------------------------------------------------
public remove_mines()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "land_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "land_mine_dead")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "warning_sign")) != 0)
        
remove_entity(ent)
    
    
files_loaded 0
}
//--------------------------------------------------------------------------------------------------
public remove_edit()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "editland_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "editwarning_sign")) != 0)
        
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public mines_damaged(thisidinflictoridattackerFloat:damagedamagebits)
{
    if(!
get_pcvar_num(mines_enabled))
        return 
HAM_IGNORED
    
    
new classname[32]
    
pev(thispev_classnameclassname31)
    if(!
equal(classname"land_mine"))
        return 
HAM_IGNORED
    
    explode
(thisidattacker)
    return 
HAM_HANDLED
}
//--------------------------------------------------------------------------------------------------
public explode(idexploder)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:max_damage get_pcvar_float(mines_maxdamage)
    new 
Float:radius get_pcvar_float(mines_radius)
    new 
Float:distance
    
new Float:damage
    
new Float:origin[3]
    new 
Float:player_origin[3]
    
pev(idpev_originorigin)
    
    for(new 
033; ++i) {
        if(!
is_user_alive(i))
            continue
        
        
pev(ipev_originplayer_origin)
        
distance get_distance_f(originplayer_origin)
        if (
distance radius) {
            
damage max_damage - ((max_damage radius) * distance)
            if(
damage 0) {
                if(
get_user_health(i) <= damage) {
                    
// Effects
                    
new iOrigin[3]
                    
get_user_origin(iiOrigin)
                    
// Effects
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_headshot_red(iOrigin)
                    
fx_trans(i,0)
                    
fx_gib_explode(iOrigin)
                    
fx_blood_large_red(iOrigin,10)
                    
fx_blood_small_red(iOrigin,25)
                    
// Hide body
                    
iOrigin[2] = iOrigin[2]-20
                    set_pev
(ipev_originplayer_origin)
                    if(
get_pcvar_num(mines_frags) && (exploder && exploder 33)) {
                        if(
== exploder || get_user_team(i) == get_user_team(exploder))
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) - 1))
                        else
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) + 1))
                    }
                    
set_pev(ipev_fragsfloat(get_user_frags(i) + 1))
                    
user_silentkill(i)
                    
set_pev(ipev_fragsfloat(get_user_frags(i) - 1))
                    
make_deathmsg(exploderi0"land_mine")
                }
                else
                    
fakedamage(i"land_mine"damageDMG_BLAST)
            }
        }
    }
    
    
CreateExplosion(id)
    
set_pev(idpev_classname"land_mine_dead")
    
set_pev(idpev_solid0)
    
set_pev(idpev_takedamage0.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(id0)
    if(
get_pcvar_num(mines_respawntime) > 0)
        
set_task(get_pcvar_float(mines_respawntime), "mine_respawn"id)
}
//--------------------------------------------------------------------------------------------------
CreateExplosion(iCurrent)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:vOrigin[3];
    
pev(iCurrent,pev_origin,vOrigin);

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(99); //99 = KillBeam
    
write_short(iCurrent);
    
message_end();

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0);
    
write_byte(TE_EXPLOSION);
    
engfunc(EngFunc_WriteCoord,vOrigin[0]);
    
engfunc(EngFunc_WriteCoord,vOrigin[1]);
    
engfunc(EngFunc_WriteCoord,vOrigin[2] + 30);
    
write_short(boom);
    
write_byte(30);
    
write_byte(15);
    
write_byte(0);
    
message_end();
    
    static const 
explosion[3] = {46,47,48}
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(116)
    
engfunc(EngFunc_WriteCoord,vOrigin[0])
    
engfunc(EngFunc_WriteCoord,vOrigin[1])
    
engfunc(EngFunc_WriteCoord,vOrigin[2])
    
write_byte(explosion[random_num(0,2)])
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public mine_respawn(id)
{
    
set_pev(idpev_classname"land_mine")
    
set_pev(idpev_solid2)
    
set_pev(idpev_takedamage1.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(idget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
static fx_trans(player,amount)
{
    
set_entity_visibility(playeramount)
}
//--------------------------------------------------------------------------------------------------
public fx_blood_red(origin[3]) //hit blood human
 
{
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(115//TE_BLOODSPRITE in const.h
    
write_coord(origin[0]+random_num(-20,20))
    
write_coord(origin[1]+random_num(-20,20))
    
write_coord(origin[2]+random_num(-20,20))
    
write_short(blood_spray)
    
write_short(blood_drop)
    
write_byte(248// color index
    
write_byte(15// size
    
message_end()
 }
 
//-------------------------------------------------------------------------------------------------
 
public fx_bleed_red(origin[3]) //blood sprays on low hp
{
    
// Blood spray
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(101)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2]+10)
    
write_coord(random_num(-100,100)) // x
    
write_coord(random_num(-100,100)) // y
    
write_coord(random_num(-10,10)) // z
    
write_byte(70// color
    
write_byte(random_num(50,100)) // speed
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public fx_headshot_red(origin[3])
{
    
// Blood spray, 5 times
    
for (new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(101)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2]+30)
        
write_coord(random_num(-20,20)) // x
        
write_coord(random_num(-20,20)) // y
        
write_coord(random_num(50,300)) // z
        
write_byte(70// color
        
write_byte(random_num(100,200)) // speed
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_small_red(origin[3],num//red blood decals [small]
{
    
// Blood decals
    
static const blood_small[7] = {190,191,192,193,194,195,197}
    
// Small splash
    
for (new 0numj++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-100,100))
        
write_coord(origin[1]+random_num(-100,100))
        
write_coord(origin[2]-36)
        
write_byte(blood_small[random_num(0,6)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_large_red(origin[3],num//red blood decals [ big]
{
    
// Blood decals
    
static const blood_large[2] = {204,205}

    
// Large splash
    
for (new 0numi++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-50,50))
        
write_coord(origin[1]+random_num(-50,50))
        
write_coord(origin[2]-36)
        
write_byte(blood_large[random_num(0,1)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_gib_explode(origin[3])
{
    new 
flesh[3]
    
flesh[0] = mdl_gib_flesh
    flesh
[1] = mdl_gib_meat
    flesh
[2] = mdl_gib_legbone

    
// Gib explosion
    // Head
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106//TR_MODEL
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_head)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Spine
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_spine)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Lung
    
for(new 0random_num(1,2); i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(mdl_gib_lung)
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
    
    
// Parts, 5 times
    
for(new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(flesh[random_num(0,2)])
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
}
//-------------------------------------------------------------------------------------------------- 
Responder
#7
Hace tiempo no ves el arma falsa no? Thats what she said
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
#8
(30/11/2016, 10:19 AM)Ballers escribió: Mina, 1 Uso, 1 Credito daño multiplicado por el Karma del jugador

si lo haces y me dejas el .sma estaría joya

Código PHP:
/****************************************************\
|*Land Mines                                        *|
|*Created By: Sam Tsuki(Aka Sam X HearTLesS)        *|
|*                                                  *|
|* Have Fun,                                        *|
|*           Sam Tsuki                              *|
\****************************************************/

/*
Description:
This plugin creates Land Mines and Warning Signs by making map cfg files.

CMDs:
say /minesmenu        // ADMIN_KICK, Shows Land Mines menu

CVARs:
mines_enabled 1        // Enables Land Mines explosion
mines_visible 1        // Enables Land Mines t obe visible when spawned
mines_radius 200    // Maximum radius for Mines damage
mines_maxdamage 50    // Maximum damage a Mine can deal
mines_respawntime 20    // Seconds to respawn a Mine after explosion (Put to 0 to respawn only after new round, put to -1 to never respawn)
mines_frags 1        // Should Mine kills give frags? (Self or Teammates: -1, Others: +1)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Land Mines"
#define VERSION "1.3"
#define AUTHOR "Sam Tsuki"

new mines_enabledmines_visiblemines_radiusmines_maxdamagemines_respawntimemines_frags
new boomMenuID[33]
new 
blood_dropblood_spray
new mdl_gib_fleshmdl_gib_headmdl_gib_legbonemdl_gib_lungmdl_gib_meatmdl_gib_spine
new files_loaded
new in_edit_mode[33], edit_mode
new noclip[33], godmode[33]
//--------------------------------------------------------------------------------------------------
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
mines_enabled register_cvar("mines_enabled""1")
    
mines_visible register_cvar("mines_visible""1")
    
mines_radius register_cvar("mines_radius""200")
    
mines_maxdamage register_cvar("mines_maxdamage""50")
    
mines_respawntime register_cvar("mines_respawntime""20")
    
mines_frags register_cvar("mines_frags""1")
    
    
register_clcmd("say /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_clcmd("say_team /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_menucmd(register_menuid("[Land Mines menu]"),1023,"action_menu")
    
    
register_touch("player""land_mine""mine_touched")
    
    
register_event("HLTV""mines_newround""a""1=0""2=0")
    
register_event("ResetHUD","player_newspawn","b")
    
    
register_logevent("round_end",   2"1=Round_End")
    
    
set_task(0.1"readminescfg")
    
set_task(0.2"readsignscfg")
    
    
RegisterHam(Ham_TakeDamage"info_target""mines_damaged")
}
//--------------------------------------------------------------------------------------------------
public plugin_precache()
{
    
precache_model("models/land_mines/land_mine2.mdl")
    
precache_model("models/land_mines/warning_ns2.mdl")
    
precache_model("models/land_mines/warning_ew2.mdl")
    
boom precache_model("sprites/zerogxplode.spr")
    
mdl_gib_flesh precache_model("models/Fleshgibs.mdl")
    
mdl_gib_head precache_model("models/GIB_Skull.mdl")
    
mdl_gib_legbone precache_model("models/GIB_Legbone.mdl")
    
mdl_gib_lung precache_model("models/GIB_Lung.mdl")
    
mdl_gib_meat precache_model("models/GIB_B_Gib.mdl")
    
mdl_gib_spine precache_model("models/GIB_B_Bone.mdl")
    
blood_drop precache_model("sprites/blood.spr")
    
blood_spray precache_model("sprites/bloodspray.spr")
}
//--------------------------------------------------------------------------------------------------
public client_connect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
}
//--------------------------------------------------------------------------------------------------
public client_disconnect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
    
if(in_edit_mode[id]) {
        
set_task(0.1"remove_edit")
        if(
get_pcvar_num(mines_enabled)) {
            
set_task(0.2"readminescfg")
            
set_task(0.3"readsignscfg")
        }
        
edit_mode 0
    
}
    
in_edit_mode[id] = 0
}
//--------------------------------------------------------------------------------------------------
public round_end()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(2.0"remove_mines")
        
files_loaded 0
    
}
}
//--------------------------------------------------------------------------------------------------
public mines_newround()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(0.1"readminescfg")
        
set_task(0.2"readsignscfg")
    }
}
//--------------------------------------------------------------------------------------------------
public cleanminesfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public cleansignsfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public readminescfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded 0)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
mine_spawn(parsedxparsedyparsedz)
        }
    }
    
files_loaded 1
}
//--------------------------------------------------------------------------------------------------
public readsignscfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded == 2)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0sign_spawn_ns(parsedxparsedyparsedz)
                case 
1sign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
    
files_loaded 2
}
//--------------------------------------------------------------------------------------------------
public create_minesedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
editmine_spawn(parsedxparsedyparsedz)
        }
    }
}
//--------------------------------------------------------------------------------------------------
public create_signsedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0editsign_spawn_ns(parsedxparsedyparsedz)
                case 
1editsign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public player_newspawn(id)
{
    
fx_trans(id1)
}
//--------------------------------------------------------------------------------------------------
public mines_menu(idlevelcid)
{
    if(!
cmd_access(idlevelcid0))
        return 
PLUGIN_HANDLED
    
    MenuID
[id] = 1
    show_minesmenu
(id)
    
    return 
PLUGIN_HANDLED
}
//--------------------------------------------------------------------------------------------------
public show_minesmenu(id)
{
    new 
menu_body[320]
    new 
0
    
new len 319
    
new keys
    
    
switch(MenuID[id]) {
        case 
1: {
            
+= formatmenu_body[n],len-n,"\yLand Mines menu:\w^n^n")
            
            switch(
get_pcvar_num(mines_enabled)) {
                case 
0+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n")
            }
            switch(
get_pcvar_num(mines_visible)) {
                case 
0+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n")
            }
            switch(
get_pcvar_num(mines_frags)) {
                case 
0+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n")
            }
            
+= formatmenu_body[n],len-n,"\y4.\w Edit Mode^n")
            
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
        }
        case 
2: {
            
+= formatmenu_body[n],len-n,"\yLand Mines edit menu:\w^n^n")
            
            
+= formatmenu_body[n],len-n,"\y1.\w Create Mine^n")
            
+= formatmenu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n")
            
+= formatmenu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n")
            
+= formatmenu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y6.\w Remove All^n")
            
            new 
nc[32], gm[32]
            switch(
noclip[id]) {
                case 
0nc "OFF"
                
case 1nc "ON"
            
}
            switch(
godmode[id]) {
                case 
0gm "OFF"
                
case 1gm "ON"
            
}
            
+= formatmenu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n"nc)
            
+= formatmenu_body[n],len-n,"\y8.\w Godmode:\r %s^n"gm)
            
            
+= formatmenu_body[n],len-n,"^n\y9. Back")
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)
        }
    }
    
show_menu(id,keys,menu_body,-1,"[Land Mines menu]")
}
//--------------------------------------------------------------------------------------------------
public action_menu(idkey)
{
    
key++
    
    switch(
MenuID[id]) {
        case 
1: {
            switch(
key) {
                case 
1: {
                    switch(
get_pcvar_num(mines_enabled)) {
                        case 
0: {
                            
set_pcvar_num(mines_enabled1)
                            
client_print(0print_chat"[%s] Plugin is now ON!"PLUGIN)
                            
set_task(0.1"readminescfg")
                            
set_task(0.2"readsignscfg")
                        }
                        case 
1: {
                            
set_pcvar_num(mines_enabled0)
                            
client_print(0print_chat"[%s] Plugin is now OFF!"PLUGIN)
                            
set_task(0.1"remove_mines")
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
2: {
                    switch(
get_pcvar_num(mines_visible)) {
                        case 
0: {
                            
set_pcvar_num(mines_visible1)
                            
client_print(0print_chat"[%s] Mines will be visible after respawn!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_visible0)
                            
client_print(0print_chat"[%s] Mines will be invisible after respawn!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
3: {
                    switch(
get_pcvar_num(mines_frags)) {
                        case 
0: {
                            
set_pcvar_num(mines_frags1)
                            
client_print(0print_chat"[%s] Mine kills will give frags!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_frags0)
                            
client_print(0print_chat"[%s] Mine kills won't give frags!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
4: {
                    if(
edit_mode) {
                        
client_print(idprint_chat"[%s] Someone's already in Edit Mode!"PLUGIN)
                        
show_minesmenu(id)
                        return
                    }
                    
MenuID[id] = 2
                    in_edit_mode
[id] = 1
                    edit_mode 
1
                    set_task
(0.1"remove_mines")
                    
set_task(0.2"create_minesedit")
                    
set_task(0.2"create_signsedit")
                    
show_minesmenu(id)
                }
                case 
10: {
                    
MenuID[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
        case 
2: {
            switch(
key) {
                case 
1: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editmine_spawn(sxsysz)
                    
                    
client_print(idprint_center"[%s] Mine created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
2: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 0"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ns(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
3: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 1"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ew(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
4: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
remove_aim(ent)
                    
                    
show_minesmenu(id)
                }
                case 
5: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
switch_dir(ent)
                    
                    
show_minesmenu(id)
                }
                case 
6: {
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
                    
show_minesmenu(id)
                }
                case 
7: {
                    switch(
noclip[id]) {
                        case 
0: {
                            
set_pev(idpev_movetypeMOVETYPE_NOCLIP)
                            
noclip[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_movetypeMOVETYPE_WALK)
                            
noclip[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
8: {
                    switch(
godmode[id]) {
                        case 
0: {
                            
set_pev(idpev_takedamage0)
                            
godmode[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_takedamage1)
                            
godmode[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
9: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 1
                    show_minesmenu
(id)
                }
                case 
10: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public remove_aim(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editland_mine") && !equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
x[8], y[8], z[8]
    if(
equal(classname"editland_mine")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
        
format(eorigin127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d"str_to_num(x), str_to_num(y), str_to_num(z))
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    else if(
equal(classname"editwarning_sign")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
        new 
model[128]
        
pev(entpev_modelmodel127)
        new 
dir
        
if(equal(model"models/land_mines/warning_ns2.mdl"))
            
dir 0
        
else
            
dir 1
        format
(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public switch_dir(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    new 
model[128]
    
pev(entpev_modelmodel127)
    new 
dirdirection
    
if(equal(model"models/land_mines/warning_ns2.mdl")) {
        
dir 0
        direction 
1
    
}
    else {
        
dir 1
        direction 
0
    
}
    
format(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
    new 
fh fopen(file"rt")
        
    new 
x[8], y[8], z[8]
    if(
fh) {
        new 
buffer[128]
        new 
counter
        
        
while(!feof(fh)) {
            
fgets(fhbuffer127)
            
            
parse(bufferx7y7z7)
            
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
            if(
equal(buffereorigin)) {
                
format(buffer127"")
                
write_file(filebuffercounter)
            }
            
counter++
        }
        
format(buffer127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction)
        
write_file(filebuffer)
        
fclose(fh)
    }
    
    
remove_entity(ent)
    new 
sx[8], sy[8], sz[8]
    
num_to_str(floatround(origin[0]), sx7)
    
num_to_str(floatround(origin[1]), sy7)
    
num_to_str(floatround(origin[2]), sz7)
    switch(
direction) {
        case 
0editsign_spawn_ns(sxsysz)
        case 
1editsign_spawn_ew(sxsysz)
    }
}
//--------------------------------------------------------------------------------------------------
public mine_spawn(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"land_mine")
    
set_pev(entpev_solid2)
    
set_pev(entpev_takedamage1.0)
    
set_pev(entpev_health9999.0)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(entget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ns(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ew(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public editmine_spawn(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editland_mine")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ns(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ew(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public mine_touched(ident)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    if(!
is_user_alive(id))
        return
    
    
explode(ent0)
}
//--------------------------------------------------------------------------------------------------
public remove_mines()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "land_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "land_mine_dead")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "warning_sign")) != 0)
        
remove_entity(ent)
    
    
files_loaded 0
}
//--------------------------------------------------------------------------------------------------
public remove_edit()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "editland_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "editwarning_sign")) != 0)
        
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public mines_damaged(thisidinflictoridattackerFloat:damagedamagebits)
{
    if(!
get_pcvar_num(mines_enabled))
        return 
HAM_IGNORED
    
    
new classname[32]
    
pev(thispev_classnameclassname31)
    if(!
equal(classname"land_mine"))
        return 
HAM_IGNORED
    
    explode
(thisidattacker)
    return 
HAM_HANDLED
}
//--------------------------------------------------------------------------------------------------
public explode(idexploder)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:max_damage get_pcvar_float(mines_maxdamage)
    new 
Float:radius get_pcvar_float(mines_radius)
    new 
Float:distance
    
new Float:damage
    
new Float:origin[3]
    new 
Float:player_origin[3]
    
pev(idpev_originorigin)
    
    for(new 
033; ++i) {
        if(!
is_user_alive(i))
            continue
        
        
pev(ipev_originplayer_origin)
        
distance get_distance_f(originplayer_origin)
        if (
distance radius) {
            
damage max_damage - ((max_damage radius) * distance)
            if(
damage 0) {
                if(
get_user_health(i) <= damage) {
                    
// Effects
                    
new iOrigin[3]
                    
get_user_origin(iiOrigin)
                    
// Effects
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_headshot_red(iOrigin)
                    
fx_trans(i,0)
                    
fx_gib_explode(iOrigin)
                    
fx_blood_large_red(iOrigin,10)
                    
fx_blood_small_red(iOrigin,25)
                    
// Hide body
                    
iOrigin[2] = iOrigin[2]-20
                    set_pev
(ipev_originplayer_origin)
                    if(
get_pcvar_num(mines_frags) && (exploder && exploder 33)) {
                        if(
== exploder || get_user_team(i) == get_user_team(exploder))
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) - 1))
                        else
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) + 1))
                    }
                    
set_pev(ipev_fragsfloat(get_user_frags(i) + 1))
                    
user_silentkill(i)
                    
set_pev(ipev_fragsfloat(get_user_frags(i) - 1))
                    
make_deathmsg(exploderi0"land_mine")
                }
                else
                    
fakedamage(i"land_mine"damageDMG_BLAST)
            }
        }
    }
    
    
CreateExplosion(id)
    
set_pev(idpev_classname"land_mine_dead")
    
set_pev(idpev_solid0)
    
set_pev(idpev_takedamage0.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(id0)
    if(
get_pcvar_num(mines_respawntime) > 0)
        
set_task(get_pcvar_float(mines_respawntime), "mine_respawn"id)
}
//--------------------------------------------------------------------------------------------------
CreateExplosion(iCurrent)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:vOrigin[3];
    
pev(iCurrent,pev_origin,vOrigin);

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(99); //99 = KillBeam
    
write_short(iCurrent);
    
message_end();

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0);
    
write_byte(TE_EXPLOSION);
    
engfunc(EngFunc_WriteCoord,vOrigin[0]);
    
engfunc(EngFunc_WriteCoord,vOrigin[1]);
    
engfunc(EngFunc_WriteCoord,vOrigin[2] + 30);
    
write_short(boom);
    
write_byte(30);
    
write_byte(15);
    
write_byte(0);
    
message_end();
    
    static const 
explosion[3] = {46,47,48}
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(116)
    
engfunc(EngFunc_WriteCoord,vOrigin[0])
    
engfunc(EngFunc_WriteCoord,vOrigin[1])
    
engfunc(EngFunc_WriteCoord,vOrigin[2])
    
write_byte(explosion[random_num(0,2)])
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public mine_respawn(id)
{
    
set_pev(idpev_classname"land_mine")
    
set_pev(idpev_solid2)
    
set_pev(idpev_takedamage1.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(idget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
static fx_trans(player,amount)
{
    
set_entity_visibility(playeramount)
}
//--------------------------------------------------------------------------------------------------
public fx_blood_red(origin[3]) //hit blood human
 
{
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(115//TE_BLOODSPRITE in const.h
    
write_coord(origin[0]+random_num(-20,20))
    
write_coord(origin[1]+random_num(-20,20))
    
write_coord(origin[2]+random_num(-20,20))
    
write_short(blood_spray)
    
write_short(blood_drop)
    
write_byte(248// color index
    
write_byte(15// size
    
message_end()
 }
 
//-------------------------------------------------------------------------------------------------
 
public fx_bleed_red(origin[3]) //blood sprays on low hp
{
    
// Blood spray
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(101)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2]+10)
    
write_coord(random_num(-100,100)) // x
    
write_coord(random_num(-100,100)) // y
    
write_coord(random_num(-10,10)) // z
    
write_byte(70// color
    
write_byte(random_num(50,100)) // speed
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public fx_headshot_red(origin[3])
{
    
// Blood spray, 5 times
    
for (new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(101)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2]+30)
        
write_coord(random_num(-20,20)) // x
        
write_coord(random_num(-20,20)) // y
        
write_coord(random_num(50,300)) // z
        
write_byte(70// color
        
write_byte(random_num(100,200)) // speed
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_small_red(origin[3],num//red blood decals [small]
{
    
// Blood decals
    
static const blood_small[7] = {190,191,192,193,194,195,197}
    
// Small splash
    
for (new 0numj++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-100,100))
        
write_coord(origin[1]+random_num(-100,100))
        
write_coord(origin[2]-36)
        
write_byte(blood_small[random_num(0,6)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_large_red(origin[3],num//red blood decals [ big]
{
    
// Blood decals
    
static const blood_large[2] = {204,205}

    
// Large splash
    
for (new 0numi++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-50,50))
        
write_coord(origin[1]+random_num(-50,50))
        
write_coord(origin[2]-36)
        
write_byte(blood_large[random_num(0,1)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_gib_explode(origin[3])
{
    new 
flesh[3]
    
flesh[0] = mdl_gib_flesh
    flesh
[1] = mdl_gib_meat
    flesh
[2] = mdl_gib_legbone

    
// Gib explosion
    // Head
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106//TR_MODEL
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_head)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Spine
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_spine)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Lung
    
for(new 0random_num(1,2); i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(mdl_gib_lung)
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
    
    
// Parts, 5 times
    
for(new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(flesh[random_num(0,2)])
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
}
//-------------------------------------------------------------------------------------------------- 
ya tiene pacman [TTT] Item: Tripmine

(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no? Thats what she said
de que trata esa 'arma falsa' Oh god why
Responder
#9
(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no? Thats what she said

Seguro la debes de tener acaparada Oh god why
Mis Aportes:

[ TTT ] Item: Target Gun

[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
[Imagen: 76561198074954930.png] [Imagen: venezuela.gif]
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana. Corazón
Responder
#10
(30/11/2016, 01:19 PM)Juan Diego escribió:
(30/11/2016, 10:19 AM)Ballers escribió: Mina, 1 Uso, 1 Credito daño multiplicado por el Karma del jugador

si lo haces y me dejas el .sma estaría joya

Código PHP:
/****************************************************\
|*Land Mines                                        *|
|*Created By: Sam Tsuki(Aka Sam X HearTLesS)        *|
|*                                                  *|
|* Have Fun,                                        *|
|*           Sam Tsuki                              *|
\****************************************************/

/*
Description:
This plugin creates Land Mines and Warning Signs by making map cfg files.

CMDs:
say /minesmenu        // ADMIN_KICK, Shows Land Mines menu

CVARs:
mines_enabled 1        // Enables Land Mines explosion
mines_visible 1        // Enables Land Mines t obe visible when spawned
mines_radius 200    // Maximum radius for Mines damage
mines_maxdamage 50    // Maximum damage a Mine can deal
mines_respawntime 20    // Seconds to respawn a Mine after explosion (Put to 0 to respawn only after new round, put to -1 to never respawn)
mines_frags 1        // Should Mine kills give frags? (Self or Teammates: -1, Others: +1)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Land Mines"
#define VERSION "1.3"
#define AUTHOR "Sam Tsuki"

new mines_enabledmines_visiblemines_radiusmines_maxdamagemines_respawntimemines_frags
new boomMenuID[33]
new 
blood_dropblood_spray
new mdl_gib_fleshmdl_gib_headmdl_gib_legbonemdl_gib_lungmdl_gib_meatmdl_gib_spine
new files_loaded
new in_edit_mode[33], edit_mode
new noclip[33], godmode[33]
//--------------------------------------------------------------------------------------------------
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
mines_enabled register_cvar("mines_enabled""1")
    
mines_visible register_cvar("mines_visible""1")
    
mines_radius register_cvar("mines_radius""200")
    
mines_maxdamage register_cvar("mines_maxdamage""50")
    
mines_respawntime register_cvar("mines_respawntime""20")
    
mines_frags register_cvar("mines_frags""1")
    
    
register_clcmd("say /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_clcmd("say_team /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_menucmd(register_menuid("[Land Mines menu]"),1023,"action_menu")
    
    
register_touch("player""land_mine""mine_touched")
    
    
register_event("HLTV""mines_newround""a""1=0""2=0")
    
register_event("ResetHUD","player_newspawn","b")
    
    
register_logevent("round_end",   2"1=Round_End")
    
    
set_task(0.1"readminescfg")
    
set_task(0.2"readsignscfg")
    
    
RegisterHam(Ham_TakeDamage"info_target""mines_damaged")
}
//--------------------------------------------------------------------------------------------------
public plugin_precache()
{
    
precache_model("models/land_mines/land_mine2.mdl")
    
precache_model("models/land_mines/warning_ns2.mdl")
    
precache_model("models/land_mines/warning_ew2.mdl")
    
boom precache_model("sprites/zerogxplode.spr")
    
mdl_gib_flesh precache_model("models/Fleshgibs.mdl")
    
mdl_gib_head precache_model("models/GIB_Skull.mdl")
    
mdl_gib_legbone precache_model("models/GIB_Legbone.mdl")
    
mdl_gib_lung precache_model("models/GIB_Lung.mdl")
    
mdl_gib_meat precache_model("models/GIB_B_Gib.mdl")
    
mdl_gib_spine precache_model("models/GIB_B_Bone.mdl")
    
blood_drop precache_model("sprites/blood.spr")
    
blood_spray precache_model("sprites/bloodspray.spr")
}
//--------------------------------------------------------------------------------------------------
public client_connect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
}
//--------------------------------------------------------------------------------------------------
public client_disconnect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
    
if(in_edit_mode[id]) {
        
set_task(0.1"remove_edit")
        if(
get_pcvar_num(mines_enabled)) {
            
set_task(0.2"readminescfg")
            
set_task(0.3"readsignscfg")
        }
        
edit_mode 0
    
}
    
in_edit_mode[id] = 0
}
//--------------------------------------------------------------------------------------------------
public round_end()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(2.0"remove_mines")
        
files_loaded 0
    
}
}
//--------------------------------------------------------------------------------------------------
public mines_newround()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(0.1"readminescfg")
        
set_task(0.2"readsignscfg")
    }
}
//--------------------------------------------------------------------------------------------------
public cleanminesfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public cleansignsfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public readminescfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded 0)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
mine_spawn(parsedxparsedyparsedz)
        }
    }
    
files_loaded 1
}
//--------------------------------------------------------------------------------------------------
public readsignscfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded == 2)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0sign_spawn_ns(parsedxparsedyparsedz)
                case 
1sign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
    
files_loaded 2
}
//--------------------------------------------------------------------------------------------------
public create_minesedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
editmine_spawn(parsedxparsedyparsedz)
        }
    }
}
//--------------------------------------------------------------------------------------------------
public create_signsedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0editsign_spawn_ns(parsedxparsedyparsedz)
                case 
1editsign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public player_newspawn(id)
{
    
fx_trans(id1)
}
//--------------------------------------------------------------------------------------------------
public mines_menu(idlevelcid)
{
    if(!
cmd_access(idlevelcid0))
        return 
PLUGIN_HANDLED
    
    MenuID
[id] = 1
    show_minesmenu
(id)
    
    return 
PLUGIN_HANDLED
}
//--------------------------------------------------------------------------------------------------
public show_minesmenu(id)
{
    new 
menu_body[320]
    new 
0
    
new len 319
    
new keys
    
    
switch(MenuID[id]) {
        case 
1: {
            
+= formatmenu_body[n],len-n,"\yLand Mines menu:\w^n^n")
            
            switch(
get_pcvar_num(mines_enabled)) {
                case 
0+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n")
            }
            switch(
get_pcvar_num(mines_visible)) {
                case 
0+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n")
            }
            switch(
get_pcvar_num(mines_frags)) {
                case 
0+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n")
            }
            
+= formatmenu_body[n],len-n,"\y4.\w Edit Mode^n")
            
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
        }
        case 
2: {
            
+= formatmenu_body[n],len-n,"\yLand Mines edit menu:\w^n^n")
            
            
+= formatmenu_body[n],len-n,"\y1.\w Create Mine^n")
            
+= formatmenu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n")
            
+= formatmenu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n")
            
+= formatmenu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y6.\w Remove All^n")
            
            new 
nc[32], gm[32]
            switch(
noclip[id]) {
                case 
0nc "OFF"
                
case 1nc "ON"
            
}
            switch(
godmode[id]) {
                case 
0gm "OFF"
                
case 1gm "ON"
            
}
            
+= formatmenu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n"nc)
            
+= formatmenu_body[n],len-n,"\y8.\w Godmode:\r %s^n"gm)
            
            
+= formatmenu_body[n],len-n,"^n\y9. Back")
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)
        }
    }
    
show_menu(id,keys,menu_body,-1,"[Land Mines menu]")
}
//--------------------------------------------------------------------------------------------------
public action_menu(idkey)
{
    
key++
    
    switch(
MenuID[id]) {
        case 
1: {
            switch(
key) {
                case 
1: {
                    switch(
get_pcvar_num(mines_enabled)) {
                        case 
0: {
                            
set_pcvar_num(mines_enabled1)
                            
client_print(0print_chat"[%s] Plugin is now ON!"PLUGIN)
                            
set_task(0.1"readminescfg")
                            
set_task(0.2"readsignscfg")
                        }
                        case 
1: {
                            
set_pcvar_num(mines_enabled0)
                            
client_print(0print_chat"[%s] Plugin is now OFF!"PLUGIN)
                            
set_task(0.1"remove_mines")
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
2: {
                    switch(
get_pcvar_num(mines_visible)) {
                        case 
0: {
                            
set_pcvar_num(mines_visible1)
                            
client_print(0print_chat"[%s] Mines will be visible after respawn!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_visible0)
                            
client_print(0print_chat"[%s] Mines will be invisible after respawn!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
3: {
                    switch(
get_pcvar_num(mines_frags)) {
                        case 
0: {
                            
set_pcvar_num(mines_frags1)
                            
client_print(0print_chat"[%s] Mine kills will give frags!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_frags0)
                            
client_print(0print_chat"[%s] Mine kills won't give frags!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
4: {
                    if(
edit_mode) {
                        
client_print(idprint_chat"[%s] Someone's already in Edit Mode!"PLUGIN)
                        
show_minesmenu(id)
                        return
                    }
                    
MenuID[id] = 2
                    in_edit_mode
[id] = 1
                    edit_mode 
1
                    set_task
(0.1"remove_mines")
                    
set_task(0.2"create_minesedit")
                    
set_task(0.2"create_signsedit")
                    
show_minesmenu(id)
                }
                case 
10: {
                    
MenuID[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
        case 
2: {
            switch(
key) {
                case 
1: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editmine_spawn(sxsysz)
                    
                    
client_print(idprint_center"[%s] Mine created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
2: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 0"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ns(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
3: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 1"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ew(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
4: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
remove_aim(ent)
                    
                    
show_minesmenu(id)
                }
                case 
5: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
switch_dir(ent)
                    
                    
show_minesmenu(id)
                }
                case 
6: {
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
                    
show_minesmenu(id)
                }
                case 
7: {
                    switch(
noclip[id]) {
                        case 
0: {
                            
set_pev(idpev_movetypeMOVETYPE_NOCLIP)
                            
noclip[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_movetypeMOVETYPE_WALK)
                            
noclip[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
8: {
                    switch(
godmode[id]) {
                        case 
0: {
                            
set_pev(idpev_takedamage0)
                            
godmode[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_takedamage1)
                            
godmode[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
9: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 1
                    show_minesmenu
(id)
                }
                case 
10: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public remove_aim(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editland_mine") && !equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
x[8], y[8], z[8]
    if(
equal(classname"editland_mine")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
        
format(eorigin127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d"str_to_num(x), str_to_num(y), str_to_num(z))
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    else if(
equal(classname"editwarning_sign")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
        new 
model[128]
        
pev(entpev_modelmodel127)
        new 
dir
        
if(equal(model"models/land_mines/warning_ns2.mdl"))
            
dir 0
        
else
            
dir 1
        format
(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public switch_dir(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    new 
model[128]
    
pev(entpev_modelmodel127)
    new 
dirdirection
    
if(equal(model"models/land_mines/warning_ns2.mdl")) {
        
dir 0
        direction 
1
    
}
    else {
        
dir 1
        direction 
0
    
}
    
format(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
    new 
fh fopen(file"rt")
        
    new 
x[8], y[8], z[8]
    if(
fh) {
        new 
buffer[128]
        new 
counter
        
        
while(!feof(fh)) {
            
fgets(fhbuffer127)
            
            
parse(bufferx7y7z7)
            
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
            if(
equal(buffereorigin)) {
                
format(buffer127"")
                
write_file(filebuffercounter)
            }
            
counter++
        }
        
format(buffer127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction)
        
write_file(filebuffer)
        
fclose(fh)
    }
    
    
remove_entity(ent)
    new 
sx[8], sy[8], sz[8]
    
num_to_str(floatround(origin[0]), sx7)
    
num_to_str(floatround(origin[1]), sy7)
    
num_to_str(floatround(origin[2]), sz7)
    switch(
direction) {
        case 
0editsign_spawn_ns(sxsysz)
        case 
1editsign_spawn_ew(sxsysz)
    }
}
//--------------------------------------------------------------------------------------------------
public mine_spawn(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"land_mine")
    
set_pev(entpev_solid2)
    
set_pev(entpev_takedamage1.0)
    
set_pev(entpev_health9999.0)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(entget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ns(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ew(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public editmine_spawn(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editland_mine")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ns(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ew(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public mine_touched(ident)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    if(!
is_user_alive(id))
        return
    
    
explode(ent0)
}
//--------------------------------------------------------------------------------------------------
public remove_mines()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "land_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "land_mine_dead")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "warning_sign")) != 0)
        
remove_entity(ent)
    
    
files_loaded 0
}
//--------------------------------------------------------------------------------------------------
public remove_edit()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "editland_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "editwarning_sign")) != 0)
        
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public mines_damaged(thisidinflictoridattackerFloat:damagedamagebits)
{
    if(!
get_pcvar_num(mines_enabled))
        return 
HAM_IGNORED
    
    
new classname[32]
    
pev(thispev_classnameclassname31)
    if(!
equal(classname"land_mine"))
        return 
HAM_IGNORED
    
    explode
(thisidattacker)
    return 
HAM_HANDLED
}
//--------------------------------------------------------------------------------------------------
public explode(idexploder)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:max_damage get_pcvar_float(mines_maxdamage)
    new 
Float:radius get_pcvar_float(mines_radius)
    new 
Float:distance
    
new Float:damage
    
new Float:origin[3]
    new 
Float:player_origin[3]
    
pev(idpev_originorigin)
    
    for(new 
033; ++i) {
        if(!
is_user_alive(i))
            continue
        
        
pev(ipev_originplayer_origin)
        
distance get_distance_f(originplayer_origin)
        if (
distance radius) {
            
damage max_damage - ((max_damage radius) * distance)
            if(
damage 0) {
                if(
get_user_health(i) <= damage) {
                    
// Effects
                    
new iOrigin[3]
                    
get_user_origin(iiOrigin)
                    
// Effects
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_headshot_red(iOrigin)
                    
fx_trans(i,0)
                    
fx_gib_explode(iOrigin)
                    
fx_blood_large_red(iOrigin,10)
                    
fx_blood_small_red(iOrigin,25)
                    
// Hide body
                    
iOrigin[2] = iOrigin[2]-20
                    set_pev
(ipev_originplayer_origin)
                    if(
get_pcvar_num(mines_frags) && (exploder && exploder 33)) {
                        if(
== exploder || get_user_team(i) == get_user_team(exploder))
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) - 1))
                        else
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) + 1))
                    }
                    
set_pev(ipev_fragsfloat(get_user_frags(i) + 1))
                    
user_silentkill(i)
                    
set_pev(ipev_fragsfloat(get_user_frags(i) - 1))
                    
make_deathmsg(exploderi0"land_mine")
                }
                else
                    
fakedamage(i"land_mine"damageDMG_BLAST)
            }
        }
    }
    
    
CreateExplosion(id)
    
set_pev(idpev_classname"land_mine_dead")
    
set_pev(idpev_solid0)
    
set_pev(idpev_takedamage0.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(id0)
    if(
get_pcvar_num(mines_respawntime) > 0)
        
set_task(get_pcvar_float(mines_respawntime), "mine_respawn"id)
}
//--------------------------------------------------------------------------------------------------
CreateExplosion(iCurrent)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:vOrigin[3];
    
pev(iCurrent,pev_origin,vOrigin);

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(99); //99 = KillBeam
    
write_short(iCurrent);
    
message_end();

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0);
    
write_byte(TE_EXPLOSION);
    
engfunc(EngFunc_WriteCoord,vOrigin[0]);
    
engfunc(EngFunc_WriteCoord,vOrigin[1]);
    
engfunc(EngFunc_WriteCoord,vOrigin[2] + 30);
    
write_short(boom);
    
write_byte(30);
    
write_byte(15);
    
write_byte(0);
    
message_end();
    
    static const 
explosion[3] = {46,47,48}
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(116)
    
engfunc(EngFunc_WriteCoord,vOrigin[0])
    
engfunc(EngFunc_WriteCoord,vOrigin[1])
    
engfunc(EngFunc_WriteCoord,vOrigin[2])
    
write_byte(explosion[random_num(0,2)])
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public mine_respawn(id)
{
    
set_pev(idpev_classname"land_mine")
    
set_pev(idpev_solid2)
    
set_pev(idpev_takedamage1.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(idget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
static fx_trans(player,amount)
{
    
set_entity_visibility(playeramount)
}
//--------------------------------------------------------------------------------------------------
public fx_blood_red(origin[3]) //hit blood human
 
{
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(115//TE_BLOODSPRITE in const.h
    
write_coord(origin[0]+random_num(-20,20))
    
write_coord(origin[1]+random_num(-20,20))
    
write_coord(origin[2]+random_num(-20,20))
    
write_short(blood_spray)
    
write_short(blood_drop)
    
write_byte(248// color index
    
write_byte(15// size
    
message_end()
 }
 
//-------------------------------------------------------------------------------------------------
 
public fx_bleed_red(origin[3]) //blood sprays on low hp
{
    
// Blood spray
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(101)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2]+10)
    
write_coord(random_num(-100,100)) // x
    
write_coord(random_num(-100,100)) // y
    
write_coord(random_num(-10,10)) // z
    
write_byte(70// color
    
write_byte(random_num(50,100)) // speed
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public fx_headshot_red(origin[3])
{
    
// Blood spray, 5 times
    
for (new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(101)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2]+30)
        
write_coord(random_num(-20,20)) // x
        
write_coord(random_num(-20,20)) // y
        
write_coord(random_num(50,300)) // z
        
write_byte(70// color
        
write_byte(random_num(100,200)) // speed
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_small_red(origin[3],num//red blood decals [small]
{
    
// Blood decals
    
static const blood_small[7] = {190,191,192,193,194,195,197}
    
// Small splash
    
for (new 0numj++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-100,100))
        
write_coord(origin[1]+random_num(-100,100))
        
write_coord(origin[2]-36)
        
write_byte(blood_small[random_num(0,6)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_large_red(origin[3],num//red blood decals [ big]
{
    
// Blood decals
    
static const blood_large[2] = {204,205}

    
// Large splash
    
for (new 0numi++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-50,50))
        
write_coord(origin[1]+random_num(-50,50))
        
write_coord(origin[2]-36)
        
write_byte(blood_large[random_num(0,1)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_gib_explode(origin[3])
{
    new 
flesh[3]
    
flesh[0] = mdl_gib_flesh
    flesh
[1] = mdl_gib_meat
    flesh
[2] = mdl_gib_legbone

    
// Gib explosion
    // Head
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106//TR_MODEL
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_head)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Spine
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_spine)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Lung
    
for(new 0random_num(1,2); i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(mdl_gib_lung)
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
    
    
// Parts, 5 times
    
for(new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(flesh[random_num(0,2)])
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
}
//-------------------------------------------------------------------------------------------------- 
ya tiene pacman [TTT] Item: Tripmine

(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no? Thats what she said
de que trata esa 'arma falsa' Oh god why

IMPACKTHADO
Responder
#11
Oh god whyOh god why si me dicen de que trata estaría mejor
Responder
#12
Barcos y putas
Responder
#13
(30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas

RoflmaoInsecureInsecure
Responder
#14
(30/11/2016, 01:19 PM)Juan Diego escribió:
(30/11/2016, 10:19 AM)Ballers escribió: Mina, 1 Uso, 1 Credito daño multiplicado por el Karma del jugador

si lo haces y me dejas el .sma estaría joya

Código PHP:
/****************************************************\
|*Land Mines                                        *|
|*Created By: Sam Tsuki(Aka Sam X HearTLesS)        *|
|*                                                  *|
|* Have Fun,                                        *|
|*           Sam Tsuki                              *|
\****************************************************/

/*
Description:
This plugin creates Land Mines and Warning Signs by making map cfg files.

CMDs:
say /minesmenu        // ADMIN_KICK, Shows Land Mines menu

CVARs:
mines_enabled 1        // Enables Land Mines explosion
mines_visible 1        // Enables Land Mines t obe visible when spawned
mines_radius 200    // Maximum radius for Mines damage
mines_maxdamage 50    // Maximum damage a Mine can deal
mines_respawntime 20    // Seconds to respawn a Mine after explosion (Put to 0 to respawn only after new round, put to -1 to never respawn)
mines_frags 1        // Should Mine kills give frags? (Self or Teammates: -1, Others: +1)
*/

#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Land Mines"
#define VERSION "1.3"
#define AUTHOR "Sam Tsuki"

new mines_enabledmines_visiblemines_radiusmines_maxdamagemines_respawntimemines_frags
new boomMenuID[33]
new 
blood_dropblood_spray
new mdl_gib_fleshmdl_gib_headmdl_gib_legbonemdl_gib_lungmdl_gib_meatmdl_gib_spine
new files_loaded
new in_edit_mode[33], edit_mode
new noclip[33], godmode[33]
//--------------------------------------------------------------------------------------------------
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
mines_enabled register_cvar("mines_enabled""1")
    
mines_visible register_cvar("mines_visible""1")
    
mines_radius register_cvar("mines_radius""200")
    
mines_maxdamage register_cvar("mines_maxdamage""50")
    
mines_respawntime register_cvar("mines_respawntime""20")
    
mines_frags register_cvar("mines_frags""1")
    
    
register_clcmd("say /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_clcmd("say_team /minesmenu""mines_menu"ADMIN_KICK"- Shows Land Mines menu")
    
    
register_menucmd(register_menuid("[Land Mines menu]"),1023,"action_menu")
    
    
register_touch("player""land_mine""mine_touched")
    
    
register_event("HLTV""mines_newround""a""1=0""2=0")
    
register_event("ResetHUD","player_newspawn","b")
    
    
register_logevent("round_end",   2"1=Round_End")
    
    
set_task(0.1"readminescfg")
    
set_task(0.2"readsignscfg")
    
    
RegisterHam(Ham_TakeDamage"info_target""mines_damaged")
}
//--------------------------------------------------------------------------------------------------
public plugin_precache()
{
    
precache_model("models/land_mines/land_mine2.mdl")
    
precache_model("models/land_mines/warning_ns2.mdl")
    
precache_model("models/land_mines/warning_ew2.mdl")
    
boom precache_model("sprites/zerogxplode.spr")
    
mdl_gib_flesh precache_model("models/Fleshgibs.mdl")
    
mdl_gib_head precache_model("models/GIB_Skull.mdl")
    
mdl_gib_legbone precache_model("models/GIB_Legbone.mdl")
    
mdl_gib_lung precache_model("models/GIB_Lung.mdl")
    
mdl_gib_meat precache_model("models/GIB_B_Gib.mdl")
    
mdl_gib_spine precache_model("models/GIB_B_Bone.mdl")
    
blood_drop precache_model("sprites/blood.spr")
    
blood_spray precache_model("sprites/bloodspray.spr")
}
//--------------------------------------------------------------------------------------------------
public client_connect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
}
//--------------------------------------------------------------------------------------------------
public client_disconnect(id)
{
    
noclip[id] = 0
    godmode
[id] = 0
    
if(in_edit_mode[id]) {
        
set_task(0.1"remove_edit")
        if(
get_pcvar_num(mines_enabled)) {
            
set_task(0.2"readminescfg")
            
set_task(0.3"readsignscfg")
        }
        
edit_mode 0
    
}
    
in_edit_mode[id] = 0
}
//--------------------------------------------------------------------------------------------------
public round_end()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(2.0"remove_mines")
        
files_loaded 0
    
}
}
//--------------------------------------------------------------------------------------------------
public mines_newround()
{
    if(
get_pcvar_num(mines_respawntime) != -1) {
        
set_task(0.1"readminescfg")
        
set_task(0.2"readsignscfg")
    }
}
//--------------------------------------------------------------------------------------------------
public cleanminesfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public cleansignsfile() {
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if( !
file_exists(file) ) return

    new 
line 0stxtsize
    
new data[128],tempfile[128]

    
format(tempfile,127,"%s~",file)
    if ( 
file_exists(tempfile) ) {
        if ( !
delete_file(tempfile) ) return
    }

    while( (
line read_file(file,line,data,127,stxtsize)) != ) {
        if (
stxtsize != 0) {
            
write_file(tempfile,data)
        }
    }

    if ( 
file_exists(file) ) {
        if ( !
delete_file(file) ) {
            
delete_file(tempfile)
            return
        }
    }

    
line 0
    
if ( file_exists(tempfile) ) {
        while( (
line read_file(tempfile,line,data,127,stxtsize)) != ) {
            if (
stxtsize != 0) {
                
write_file(file,data)
            }
        }
        
delete_file(tempfile)
    }
}
//--------------------------------------------------------------------------------------------------
public readminescfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded 0)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
mine_spawn(parsedxparsedyparsedz)
        }
    }
    
files_loaded 1
}
//--------------------------------------------------------------------------------------------------
public readsignscfg()
{
    if(!
get_pcvar_num(mines_enabled) || files_loaded == 2)
        return
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0sign_spawn_ns(parsedxparsedyparsedz)
                case 
1sign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
    
files_loaded 2
}
//--------------------------------------------------------------------------------------------------
public create_minesedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7)
            
editmine_spawn(parsedxparsedyparsedz)
        }
    }
}
//--------------------------------------------------------------------------------------------------
public create_signsedit()
{
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    
    if(
file_exists(file)) {
        new 
readdata[128], txtlen
        
new parsedx[8], parsedy[8], parsedz[8], parseddir[8]
        new 
fsize file_size(file1)
        for(new 
line 0line fsize 1; ++line) {
            
read_file(filelinereaddata127txtlen)
            
parse(readdataparsedx7parsedy7parsedz7parseddir7)
            switch(
str_to_num(parseddir)) {
                case 
0editsign_spawn_ns(parsedxparsedyparsedz)
                case 
1editsign_spawn_ew(parsedxparsedyparsedz)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public player_newspawn(id)
{
    
fx_trans(id1)
}
//--------------------------------------------------------------------------------------------------
public mines_menu(idlevelcid)
{
    if(!
cmd_access(idlevelcid0))
        return 
PLUGIN_HANDLED
    
    MenuID
[id] = 1
    show_minesmenu
(id)
    
    return 
PLUGIN_HANDLED
}
//--------------------------------------------------------------------------------------------------
public show_minesmenu(id)
{
    new 
menu_body[320]
    new 
0
    
new len 319
    
new keys
    
    
switch(MenuID[id]) {
        case 
1: {
            
+= formatmenu_body[n],len-n,"\yLand Mines menu:\w^n^n")
            
            switch(
get_pcvar_num(mines_enabled)) {
                case 
0+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n")
            }
            switch(
get_pcvar_num(mines_visible)) {
                case 
0+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n")
            }
            switch(
get_pcvar_num(mines_frags)) {
                case 
0+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags ON^n")
                case 
1+= formatmenu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n")
            }
            
+= formatmenu_body[n],len-n,"\y4.\w Edit Mode^n")
            
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
        }
        case 
2: {
            
+= formatmenu_body[n],len-n,"\yLand Mines edit menu:\w^n^n")
            
            
+= formatmenu_body[n],len-n,"\y1.\w Create Mine^n")
            
+= formatmenu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n")
            
+= formatmenu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n")
            
+= formatmenu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n")
            
+= formatmenu_body[n],len-n,"\y6.\w Remove All^n")
            
            new 
nc[32], gm[32]
            switch(
noclip[id]) {
                case 
0nc "OFF"
                
case 1nc "ON"
            
}
            switch(
godmode[id]) {
                case 
0gm "OFF"
                
case 1gm "ON"
            
}
            
+= formatmenu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n"nc)
            
+= formatmenu_body[n],len-n,"\y8.\w Godmode:\r %s^n"gm)
            
            
+= formatmenu_body[n],len-n,"^n\y9. Back")
            
+= formatmenu_body[n],len-n,"^n\y0. Exit")
            
            
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9)
        }
    }
    
show_menu(id,keys,menu_body,-1,"[Land Mines menu]")
}
//--------------------------------------------------------------------------------------------------
public action_menu(idkey)
{
    
key++
    
    switch(
MenuID[id]) {
        case 
1: {
            switch(
key) {
                case 
1: {
                    switch(
get_pcvar_num(mines_enabled)) {
                        case 
0: {
                            
set_pcvar_num(mines_enabled1)
                            
client_print(0print_chat"[%s] Plugin is now ON!"PLUGIN)
                            
set_task(0.1"readminescfg")
                            
set_task(0.2"readsignscfg")
                        }
                        case 
1: {
                            
set_pcvar_num(mines_enabled0)
                            
client_print(0print_chat"[%s] Plugin is now OFF!"PLUGIN)
                            
set_task(0.1"remove_mines")
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
2: {
                    switch(
get_pcvar_num(mines_visible)) {
                        case 
0: {
                            
set_pcvar_num(mines_visible1)
                            
client_print(0print_chat"[%s] Mines will be visible after respawn!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_visible0)
                            
client_print(0print_chat"[%s] Mines will be invisible after respawn!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
3: {
                    switch(
get_pcvar_num(mines_frags)) {
                        case 
0: {
                            
set_pcvar_num(mines_frags1)
                            
client_print(0print_chat"[%s] Mine kills will give frags!"PLUGIN)
                        }
                        case 
1: {
                            
set_pcvar_num(mines_frags0)
                            
client_print(0print_chat"[%s] Mine kills won't give frags!"PLUGIN)
                        }
                    }
                    
show_minesmenu(id)
                }
                case 
4: {
                    if(
edit_mode) {
                        
client_print(idprint_chat"[%s] Someone's already in Edit Mode!"PLUGIN)
                        
show_minesmenu(id)
                        return
                    }
                    
MenuID[id] = 2
                    in_edit_mode
[id] = 1
                    edit_mode 
1
                    set_task
(0.1"remove_mines")
                    
set_task(0.2"create_minesedit")
                    
set_task(0.2"create_signsedit")
                    
show_minesmenu(id)
                }
                case 
10: {
                    
MenuID[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
        case 
2: {
            switch(
key) {
                case 
1: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editmine_spawn(sxsysz)
                    
                    
client_print(idprint_center"[%s] Mine created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
2: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 0"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ns(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
3: {
                    new 
Float:origin[3]
                    
pev(idpev_originorigin)
                    new 
writedata[128]
                    
formatex(writedata127"%d %d %d 1"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    
                    
write_file(filewritedata)
                    
                    new 
sx[8], sy[8], sz[8]
                    
num_to_str(floatround(origin[0]), sx7)
                    
num_to_str(floatround(origin[1]), sy7)
                    
num_to_str(floatround(origin[2]), sz7)
                    
editsign_spawn_ew(sxsysz)
                    
                    
client_print(idprint_center"[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)"PLUGINfloatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
                    
show_minesmenu(id)
                }
                case 
4: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
remove_aim(ent)
                    
                    
show_minesmenu(id)
                }
                case 
5: {
                    new 
entbody
                    get_user_aiming
(identbody320)
                    
switch_dir(ent)
                    
                    
show_minesmenu(id)
                }
                case 
6: {
                    new 
configsdir[128]
                    
get_configsdir(configsdir127)
                    
                    new 
file[256], mapname[51]
                    
get_mapname(mapname50)
                    
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
                    if(
file_exists(file))
                        
delete_file(file)
                    
                    
show_minesmenu(id)
                }
                case 
7: {
                    switch(
noclip[id]) {
                        case 
0: {
                            
set_pev(idpev_movetypeMOVETYPE_NOCLIP)
                            
noclip[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_movetypeMOVETYPE_WALK)
                            
noclip[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
8: {
                    switch(
godmode[id]) {
                        case 
0: {
                            
set_pev(idpev_takedamage0)
                            
godmode[id] = 1
                        
}
                        case 
1: {
                            
set_pev(idpev_takedamage1)
                            
godmode[id] = 0
                        
}
                    }
                    
                    
show_minesmenu(id)
                }
                case 
9: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 1
                    show_minesmenu
(id)
                }
                case 
10: {
                    
set_task(0.1"remove_edit")
                    
cleanminesfile()
                    
cleansignsfile()
                    if(
get_pcvar_num(mines_enabled)) {
                        
set_task(0.1"readminescfg")
                        
set_task(0.2"readsignscfg")
                    }
                    
set_pev(idpev_movetypeMOVETYPE_WALK)
                    
noclip[id] = 0
                    set_pev
(idpev_takedamage1)
                    
godmode[id] = 0
                    in_edit_mode
[id] = 0
                    edit_mode 
0
                    MenuID
[id] = 0
                    
return
                }
                default: 
show_minesmenu(id)
            }
        }
    }
}
//--------------------------------------------------------------------------------------------------
public remove_aim(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editland_mine") && !equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
x[8], y[8], z[8]
    if(
equal(classname"editland_mine")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_mines.cfg"configsdirmapname)
        
format(eorigin127"%d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]))
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d"str_to_num(x), str_to_num(y), str_to_num(z))
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    else if(
equal(classname"editwarning_sign")) {
        new 
configsdir[128]
        
get_configsdir(configsdir127)
        
        new 
file[256], mapname[51]
        
get_mapname(mapname50)
        
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
        new 
model[128]
        
pev(entpev_modelmodel127)
        new 
dir
        
if(equal(model"models/land_mines/warning_ns2.mdl"))
            
dir 0
        
else
            
dir 1
        format
(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
        new 
fh fopen(file"rt")
        
        if(
fh) {
            new 
buffer[128]
            new 
counter
        
            
while(!feof(fh)) {
                
fgets(fhbuffer127)
            
                
parse(bufferx7y7z7)
                
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
                if(
equal(buffereorigin)) {
                    
format(buffer127"")
                
                    
write_file(filebuffercounter)
                }
                
counter++
            }
            
fclose(fh)
        }
    }
    
    
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public switch_dir(ent)
{
    new 
classname[32]
    
pev(entpev_classnameclassname31)
    if(!
equal(classname"editwarning_sign"))
        return
    
    new 
Float:origin[3]
    
pev(entpev_originorigin)
    new 
eorigin[128]
    
    new 
configsdir[128]
    
get_configsdir(configsdir127)
    
    new 
file[256], mapname[51]
    
get_mapname(mapname50)
    
format(file255"%s/land_mines/%s_signs.cfg"configsdirmapname)
    new 
model[128]
    
pev(entpev_modelmodel127)
    new 
dirdirection
    
if(equal(model"models/land_mines/warning_ns2.mdl")) {
        
dir 0
        direction 
1
    
}
    else {
        
dir 1
        direction 
0
    
}
    
format(eorigin127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), dir)
    new 
fh fopen(file"rt")
        
    new 
x[8], y[8], z[8]
    if(
fh) {
        new 
buffer[128]
        new 
counter
        
        
while(!feof(fh)) {
            
fgets(fhbuffer127)
            
            
parse(bufferx7y7z7)
            
format(buffer127"%d %d %d %d"str_to_num(x), str_to_num(y), str_to_num(z), dir)
            
            if(
equal(buffereorigin)) {
                
format(buffer127"")
                
write_file(filebuffercounter)
            }
            
counter++
        }
        
format(buffer127"%d %d %d %d"floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction)
        
write_file(filebuffer)
        
fclose(fh)
    }
    
    
remove_entity(ent)
    new 
sx[8], sy[8], sz[8]
    
num_to_str(floatround(origin[0]), sx7)
    
num_to_str(floatround(origin[1]), sy7)
    
num_to_str(floatround(origin[2]), sz7)
    switch(
direction) {
        case 
0editsign_spawn_ns(sxsysz)
        case 
1editsign_spawn_ew(sxsysz)
    }
}
//--------------------------------------------------------------------------------------------------
public mine_spawn(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"land_mine")
    
set_pev(entpev_solid2)
    
set_pev(entpev_takedamage1.0)
    
set_pev(entpev_health9999.0)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(entget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ns(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public sign_spawn_ew(x[], y[], z[])
{
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"warning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
    
engfunc(EngFunc_DropToFloorent)
    
set_entity_visibility(ent1)
}
//--------------------------------------------------------------------------------------------------
public editmine_spawn(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editland_mine")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/land_mine2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -4.0, -4.00.0 }, Float:{ 4.04.04.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ns(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ns2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -1.1, -12.70.0 }, Float:{ 1.112.738.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public editsign_spawn_ew(x[], y[], z[])
{
    if(!
edit_mode)
        return
    
    new 
Float:origin[3]
    
origin[0] = str_to_float(x)
    
origin[1] = str_to_float(y)
    
origin[2] = str_to_float(z)
    new 
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
set_pev(entpev_classname"editwarning_sign")
    
set_pev(entpev_solid2)
    
engfunc(EngFunc_SetModelent"models/land_mines/warning_ew2.mdl")
    
engfunc(EngFunc_SetSizeentFloat:{ -12.7, -1.10.0 }, Float:{ 12.71.138.0 } )
    
engfunc(EngFunc_SetOriginentorigin)
}
//--------------------------------------------------------------------------------------------------
public mine_touched(ident)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    if(!
is_user_alive(id))
        return
    
    
explode(ent0)
}
//--------------------------------------------------------------------------------------------------
public remove_mines()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "land_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "land_mine_dead")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "warning_sign")) != 0)
        
remove_entity(ent)
    
    
files_loaded 0
}
//--------------------------------------------------------------------------------------------------
public remove_edit()
{
    new 
ent = -1
    
while((ent find_ent_by_class(ent "editland_mine")) != 0)
        
remove_entity(ent)
    while((
ent find_ent_by_class(ent "editwarning_sign")) != 0)
        
remove_entity(ent)
}
//--------------------------------------------------------------------------------------------------
public mines_damaged(thisidinflictoridattackerFloat:damagedamagebits)
{
    if(!
get_pcvar_num(mines_enabled))
        return 
HAM_IGNORED
    
    
new classname[32]
    
pev(thispev_classnameclassname31)
    if(!
equal(classname"land_mine"))
        return 
HAM_IGNORED
    
    explode
(thisidattacker)
    return 
HAM_HANDLED
}
//--------------------------------------------------------------------------------------------------
public explode(idexploder)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:max_damage get_pcvar_float(mines_maxdamage)
    new 
Float:radius get_pcvar_float(mines_radius)
    new 
Float:distance
    
new Float:damage
    
new Float:origin[3]
    new 
Float:player_origin[3]
    
pev(idpev_originorigin)
    
    for(new 
033; ++i) {
        if(!
is_user_alive(i))
            continue
        
        
pev(ipev_originplayer_origin)
        
distance get_distance_f(originplayer_origin)
        if (
distance radius) {
            
damage max_damage - ((max_damage radius) * distance)
            if(
damage 0) {
                if(
get_user_health(i) <= damage) {
                    
// Effects
                    
new iOrigin[3]
                    
get_user_origin(iiOrigin)
                    
// Effects
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_blood_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_bleed_red(iOrigin)
                    
fx_headshot_red(iOrigin)
                    
fx_trans(i,0)
                    
fx_gib_explode(iOrigin)
                    
fx_blood_large_red(iOrigin,10)
                    
fx_blood_small_red(iOrigin,25)
                    
// Hide body
                    
iOrigin[2] = iOrigin[2]-20
                    set_pev
(ipev_originplayer_origin)
                    if(
get_pcvar_num(mines_frags) && (exploder && exploder 33)) {
                        if(
== exploder || get_user_team(i) == get_user_team(exploder))
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) - 1))
                        else
                            
set_pev(exploderpev_fragsfloat(get_user_frags(exploder) + 1))
                    }
                    
set_pev(ipev_fragsfloat(get_user_frags(i) + 1))
                    
user_silentkill(i)
                    
set_pev(ipev_fragsfloat(get_user_frags(i) - 1))
                    
make_deathmsg(exploderi0"land_mine")
                }
                else
                    
fakedamage(i"land_mine"damageDMG_BLAST)
            }
        }
    }
    
    
CreateExplosion(id)
    
set_pev(idpev_classname"land_mine_dead")
    
set_pev(idpev_solid0)
    
set_pev(idpev_takedamage0.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(id0)
    if(
get_pcvar_num(mines_respawntime) > 0)
        
set_task(get_pcvar_float(mines_respawntime), "mine_respawn"id)
}
//--------------------------------------------------------------------------------------------------
CreateExplosion(iCurrent)
{
    if(!
get_pcvar_num(mines_enabled))
        return
    
    new 
Float:vOrigin[3];
    
pev(iCurrent,pev_origin,vOrigin);

    
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
    
write_byte(99); //99 = KillBeam
    
write_short(iCurrent);
    
message_end();

    
engfunc(EngFunc_MessageBeginMSG_PVSSVC_TEMPENTITYvOrigin0);
    
write_byte(TE_EXPLOSION);
    
engfunc(EngFunc_WriteCoord,vOrigin[0]);
    
engfunc(EngFunc_WriteCoord,vOrigin[1]);
    
engfunc(EngFunc_WriteCoord,vOrigin[2] + 30);
    
write_short(boom);
    
write_byte(30);
    
write_byte(15);
    
write_byte(0);
    
message_end();
    
    static const 
explosion[3] = {46,47,48}
    
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(116)
    
engfunc(EngFunc_WriteCoord,vOrigin[0])
    
engfunc(EngFunc_WriteCoord,vOrigin[1])
    
engfunc(EngFunc_WriteCoord,vOrigin[2])
    
write_byte(explosion[random_num(0,2)])
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public mine_respawn(id)
{
    
set_pev(idpev_classname"land_mine")
    
set_pev(idpev_solid2)
    
set_pev(idpev_takedamage1.0)
    
set_pev(idpev_health9999.0)
    
set_entity_visibility(idget_pcvar_num(mines_visible))
}
//--------------------------------------------------------------------------------------------------
static fx_trans(player,amount)
{
    
set_entity_visibility(playeramount)
}
//--------------------------------------------------------------------------------------------------
public fx_blood_red(origin[3]) //hit blood human
 
{
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(115//TE_BLOODSPRITE in const.h
    
write_coord(origin[0]+random_num(-20,20))
    
write_coord(origin[1]+random_num(-20,20))
    
write_coord(origin[2]+random_num(-20,20))
    
write_short(blood_spray)
    
write_short(blood_drop)
    
write_byte(248// color index
    
write_byte(15// size
    
message_end()
 }
 
//-------------------------------------------------------------------------------------------------
 
public fx_bleed_red(origin[3]) //blood sprays on low hp
{
    
// Blood spray
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(101)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2]+10)
    
write_coord(random_num(-100,100)) // x
    
write_coord(random_num(-100,100)) // y
    
write_coord(random_num(-10,10)) // z
    
write_byte(70// color
    
write_byte(random_num(50,100)) // speed
    
message_end()
}
//--------------------------------------------------------------------------------------------------
public fx_headshot_red(origin[3])
{
    
// Blood spray, 5 times
    
for (new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(101)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2]+30)
        
write_coord(random_num(-20,20)) // x
        
write_coord(random_num(-20,20)) // y
        
write_coord(random_num(50,300)) // z
        
write_byte(70// color
        
write_byte(random_num(100,200)) // speed
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_small_red(origin[3],num//red blood decals [small]
{
    
// Blood decals
    
static const blood_small[7] = {190,191,192,193,194,195,197}
    
// Small splash
    
for (new 0numj++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-100,100))
        
write_coord(origin[1]+random_num(-100,100))
        
write_coord(origin[2]-36)
        
write_byte(blood_small[random_num(0,6)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_blood_large_red(origin[3],num//red blood decals [ big]
{
    
// Blood decals
    
static const blood_large[2] = {204,205}

    
// Large splash
    
for (new 0numi++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(116//TE_WORLDDECAL from const.h
        
write_coord(origin[0]+random_num(-50,50))
        
write_coord(origin[1]+random_num(-50,50))
        
write_coord(origin[2]-36)
        
write_byte(blood_large[random_num(0,1)]) // index
        
message_end()
    }
}
//--------------------------------------------------------------------------------------------------
static fx_gib_explode(origin[3])
{
    new 
flesh[3]
    
flesh[0] = mdl_gib_flesh
    flesh
[1] = mdl_gib_meat
    flesh
[2] = mdl_gib_legbone

    
// Gib explosion
    // Head
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106//TR_MODEL
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_head)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Spine
    
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    
write_byte(106)
    
write_coord(origin[0])
    
write_coord(origin[1])
    
write_coord(origin[2])
    
write_coord(random_num(-100,100))
    
write_coord(random_num(-100,100))
    
write_coord(random_num(100,200))
    
write_angle(random_num(0,360))
    
write_short(mdl_gib_spine)
    
write_byte(0// bounce
    
write_byte(500// life
    
message_end()
    
    
// Lung
    
for(new 0random_num(1,2); i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(mdl_gib_lung)
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
    
    
// Parts, 5 times
    
for(new 05i++) {
        
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
        
write_byte(106)
        
write_coord(origin[0])
        
write_coord(origin[1])
        
write_coord(origin[2])
        
write_coord(random_num(-100,100))
        
write_coord(random_num(-100,100))
        
write_coord(random_num(100,200))
        
write_angle(random_num(0,360))
        
write_short(flesh[random_num(0,2)])
        
write_byte(0// bounce
        
write_byte(500// life
        
message_end()
    }
}
//-------------------------------------------------------------------------------------------------- 
ya tiene pacman [TTT] Item: Tripmine

(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no? Thats what she said
de que trata esa 'arma falsa' Oh god why

Yo me refiero a una mina que pises y explote
Responder
#15
(30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas
Responder
#16
Un escudo al estilo de campo de fuerza , poder traspasar paredes , ect (? Thats what she said
Responder
#17
(30/11/2016, 05:24 PM)Hernandez escribió:
(30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas
Responder
#18
(04/12/2016, 12:34 PM)Hernandez escribió:
(30/11/2016, 05:24 PM)Hernandez escribió:
(30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas
Responder
#19
(04/12/2016, 12:34 PM)Hernandez escribió:
(30/11/2016, 05:24 PM)Hernandez escribió:
(30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas

por que barcos y yo pacman ?
no me incluyas Oh god why
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)