Mensajes: 306
Temas: 11
Registro en: Aug 2016
Reputación:
6
30/11/2016, 12:19 AM
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
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
banedo.
menos bugs...
rangos
items qcyo.
Mensajes: 2,087
Temas: 3
Registro en: Jul 2015
Reputación:
14
Mensajes: 4,451
Temas: 45
Registro en: Jan 2014
Reputación:
24
30/11/2016, 07:16 AM
(Última modificación: 30/11/2016, 07:17 AM por FreDDy.)
Yo tengo una super sugerencia...
Después de eso, solo usá tu...
Y también barcos y putas.
Mensajes: 109
Temas: 12
Registro en: Oct 2015
Reputación:
0
Rangos + puntos en MySQL y SQLite.
Barcos y putas también.
Mensajes: 791
Temas: 84
Registro en: Sep 2016
Reputación:
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_enabled, mines_visible, mines_radius, mines_maxdamage, mines_respawntime, mines_frags new boom, MenuID[33] new blood_drop, blood_spray new mdl_gib_flesh, mdl_gib_head, mdl_gib_legbone, mdl_gib_lung, mdl_gib_meat, mdl_gib_spine new files_loaded new in_edit_mode[33], edit_mode new noclip[33], godmode[33] //-------------------------------------------------------------------------------------------------- public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { if (stxtsize != 0) { write_file(file,data) } } delete_file(tempfile) } } //-------------------------------------------------------------------------------------------------- public cleansignsfile() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) mine_spawn(parsedx, parsedy, parsedz) } } files_loaded = 1 } //-------------------------------------------------------------------------------------------------- public readsignscfg() { if(!get_pcvar_num(mines_enabled) || files_loaded == 2) return new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: sign_spawn_ns(parsedx, parsedy, parsedz) case 1: sign_spawn_ew(parsedx, parsedy, parsedz) } } } files_loaded = 2 } //-------------------------------------------------------------------------------------------------- public create_minesedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) editmine_spawn(parsedx, parsedy, parsedz) } } } //-------------------------------------------------------------------------------------------------- public create_signsedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: editsign_spawn_ns(parsedx, parsedy, parsedz) case 1: editsign_spawn_ew(parsedx, parsedy, parsedz) } } } } //-------------------------------------------------------------------------------------------------- public player_newspawn(id) { fx_trans(id, 1) } //-------------------------------------------------------------------------------------------------- public mines_menu(id, level, cid) { if(!cmd_access(id, level, cid, 0)) return PLUGIN_HANDLED MenuID[id] = 1 show_minesmenu(id) return PLUGIN_HANDLED } //-------------------------------------------------------------------------------------------------- public show_minesmenu(id) { new menu_body[320] new n = 0 new len = 319 new keys switch(MenuID[id]) { case 1: { n += format( menu_body[n],len-n,"\yLand Mines menu:\w^n^n") switch(get_pcvar_num(mines_enabled)) { case 0: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines ON^n") case 1: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n") } switch(get_pcvar_num(mines_visible)) { case 0: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n") case 1: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n") } switch(get_pcvar_num(mines_frags)) { case 0: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags ON^n") case 1: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n") } n += format( menu_body[n],len-n,"\y4.\w Edit Mode^n") n += format( menu_body[n],len-n,"^n\y0. Exit") keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9) } case 2: { n += format( menu_body[n],len-n,"\yLand Mines edit menu:\w^n^n") n += format( menu_body[n],len-n,"\y1.\w Create Mine^n") n += format( menu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n") n += format( menu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n") n += format( menu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n") n += format( menu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n") n += format( menu_body[n],len-n,"\y6.\w Remove All^n") new nc[32], gm[32] switch(noclip[id]) { case 0: nc = "OFF" case 1: nc = "ON" } switch(godmode[id]) { case 0: gm = "OFF" case 1: gm = "ON" } n += format( menu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n", nc) n += format( menu_body[n],len-n,"\y8.\w Godmode:\r %s^n", gm) n += format( menu_body[n],len-n,"^n\y9. Back") n += format( menu_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(id, key) { key++ switch(MenuID[id]) { case 1: { switch(key) { case 1: { switch(get_pcvar_num(mines_enabled)) { case 0: { set_pcvar_num(mines_enabled, 1) client_print(0, print_chat, "[%s] Plugin is now ON!", PLUGIN) set_task(0.1, "readminescfg") set_task(0.2, "readsignscfg") } case 1: { set_pcvar_num(mines_enabled, 0) client_print(0, print_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_visible, 1) client_print(0, print_chat, "[%s] Mines will be visible after respawn!", PLUGIN) } case 1: { set_pcvar_num(mines_visible, 0) client_print(0, print_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_frags, 1) client_print(0, print_chat, "[%s] Mine kills will give frags!", PLUGIN) } case 1: { set_pcvar_num(mines_frags, 0) client_print(0, print_chat, "[%s] Mine kills won't give frags!", PLUGIN) } } show_minesmenu(id) } case 4: { if(edit_mode) { client_print(id, print_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(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editmine_spawn(sx, sy, sz) client_print(id, print_center, "[%s] Mine created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 2: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 0", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ns(sx, sy, sz) client_print(id, print_center, "[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 3: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 1", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ew(sx, sy, sz) client_print(id, print_center, "[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 4: { new ent, body get_user_aiming(id, ent, body, 320) remove_aim(ent) show_minesmenu(id) } case 5: { new ent, body get_user_aiming(id, ent, body, 320) switch_dir(ent) show_minesmenu(id) } case 6: { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) show_minesmenu(id) } case 7: { switch(noclip[id]) { case 0: { set_pev(id, pev_movetype, MOVETYPE_NOCLIP) noclip[id] = 1 } case 1: { set_pev(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 } } show_minesmenu(id) } case 8: { switch(godmode[id]) { case 0: { set_pev(id, pev_takedamage, 0) godmode[id] = 1 } case 1: { set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(ent, pev_classname, classname, 31) if(!equal(classname, "editland_mine") && !equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new x[8], y[8], z[8] if(equal(classname, "editland_mine")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d", str_to_num(x), str_to_num(y), str_to_num(z)) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } else if(equal(classname, "editwarning_sign")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir if(equal(model, "models/land_mines/warning_ns2.mdl")) dir = 0 else dir = 1 format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } remove_entity(ent) } //-------------------------------------------------------------------------------------------------- public switch_dir(ent) { new classname[32] pev(ent, pev_classname, classname, 31) if(!equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir, direction if(equal(model, "models/land_mines/warning_ns2.mdl")) { dir = 0 direction = 1 } else { dir = 1 direction = 0 } format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } format(buffer, 127, "%d %d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction) write_file(file, buffer) fclose(fh) } remove_entity(ent) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) switch(direction) { case 0: editsign_spawn_ns(sx, sy, sz) case 1: editsign_spawn_ew(sx, sy, sz) } } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "land_mine") set_pev(ent, pev_solid, 2) set_pev(ent, pev_takedamage, 1.0) set_pev(ent, pev_health, 9999.0) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, get_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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editland_mine") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- public mine_touched(id, ent) { if(!get_pcvar_num(mines_enabled)) return if(!is_user_alive(id)) return explode(ent, 0) } //-------------------------------------------------------------------------------------------------- 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(this, idinflictor, idattacker, Float:damage, damagebits) { if(!get_pcvar_num(mines_enabled)) return HAM_IGNORED new classname[32] pev(this, pev_classname, classname, 31) if(!equal(classname, "land_mine")) return HAM_IGNORED explode(this, idattacker) return HAM_HANDLED } //-------------------------------------------------------------------------------------------------- public explode(id, exploder) { 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(id, pev_origin, origin) for(new i = 0; i < 33; ++i) { if(!is_user_alive(i)) continue pev(i, pev_origin, player_origin) distance = get_distance_f(origin, player_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(i, iOrigin) // 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(i, pev_origin, player_origin) if(get_pcvar_num(mines_frags) && (exploder > 0 && exploder < 33)) { if(i == exploder || get_user_team(i) == get_user_team(exploder)) set_pev(exploder, pev_frags, float(get_user_frags(exploder) - 1)) else set_pev(exploder, pev_frags, float(get_user_frags(exploder) + 1)) } set_pev(i, pev_frags, float(get_user_frags(i) + 1)) user_silentkill(i) set_pev(i, pev_frags, float(get_user_frags(i) - 1)) make_deathmsg(exploder, i, 0, "land_mine") } else fakedamage(i, "land_mine", damage, DMG_BLAST) } } } CreateExplosion(id) set_pev(id, pev_classname, "land_mine_dead") set_pev(id, pev_solid, 0) set_pev(id, pev_takedamage, 0.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, 0) 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_BROADCAST, SVC_TEMPENTITY); write_byte(99); //99 = KillBeam write_short(iCurrent); message_end();
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 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(id, pev_classname, "land_mine") set_pev(id, pev_solid, 2) set_pev(id, pev_takedamage, 1.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, get_pcvar_num(mines_visible)) } //-------------------------------------------------------------------------------------------------- static fx_trans(player,amount) { set_entity_visibility(player, amount) } //-------------------------------------------------------------------------------------------------- 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 i = 0; i < 5; i++) { 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 j = 0; j < num; j++) { 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 i = 0; i < num; i++) { 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 i = 0; i < random_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 i = 0; i < 5; 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(flesh[random_num(0,2)]) write_byte(0) // bounce write_byte(500) // life message_end() } } //--------------------------------------------------------------------------------------------------
Mensajes: 2,454
Temas: 14
Registro en: Oct 2013
Reputación:
51
Hace tiempo no ves el arma falsa no?
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.
Mensajes: 306
Temas: 11
Registro en: Aug 2016
Reputación:
6
30/11/2016, 01:19 PM
(Última modificación: 30/11/2016, 01:21 PM por Juan' Diego'.)
(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_enabled, mines_visible, mines_radius, mines_maxdamage, mines_respawntime, mines_frags new boom, MenuID[33] new blood_drop, blood_spray new mdl_gib_flesh, mdl_gib_head, mdl_gib_legbone, mdl_gib_lung, mdl_gib_meat, mdl_gib_spine new files_loaded new in_edit_mode[33], edit_mode new noclip[33], godmode[33] //-------------------------------------------------------------------------------------------------- public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { if (stxtsize != 0) { write_file(file,data) } } delete_file(tempfile) } } //-------------------------------------------------------------------------------------------------- public cleansignsfile() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) mine_spawn(parsedx, parsedy, parsedz) } } files_loaded = 1 } //-------------------------------------------------------------------------------------------------- public readsignscfg() { if(!get_pcvar_num(mines_enabled) || files_loaded == 2) return new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: sign_spawn_ns(parsedx, parsedy, parsedz) case 1: sign_spawn_ew(parsedx, parsedy, parsedz) } } } files_loaded = 2 } //-------------------------------------------------------------------------------------------------- public create_minesedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) editmine_spawn(parsedx, parsedy, parsedz) } } } //-------------------------------------------------------------------------------------------------- public create_signsedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: editsign_spawn_ns(parsedx, parsedy, parsedz) case 1: editsign_spawn_ew(parsedx, parsedy, parsedz) } } } } //-------------------------------------------------------------------------------------------------- public player_newspawn(id) { fx_trans(id, 1) } //-------------------------------------------------------------------------------------------------- public mines_menu(id, level, cid) { if(!cmd_access(id, level, cid, 0)) return PLUGIN_HANDLED MenuID[id] = 1 show_minesmenu(id) return PLUGIN_HANDLED } //-------------------------------------------------------------------------------------------------- public show_minesmenu(id) { new menu_body[320] new n = 0 new len = 319 new keys switch(MenuID[id]) { case 1: { n += format( menu_body[n],len-n,"\yLand Mines menu:\w^n^n") switch(get_pcvar_num(mines_enabled)) { case 0: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines ON^n") case 1: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n") } switch(get_pcvar_num(mines_visible)) { case 0: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n") case 1: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n") } switch(get_pcvar_num(mines_frags)) { case 0: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags ON^n") case 1: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n") } n += format( menu_body[n],len-n,"\y4.\w Edit Mode^n") n += format( menu_body[n],len-n,"^n\y0. Exit") keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9) } case 2: { n += format( menu_body[n],len-n,"\yLand Mines edit menu:\w^n^n") n += format( menu_body[n],len-n,"\y1.\w Create Mine^n") n += format( menu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n") n += format( menu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n") n += format( menu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n") n += format( menu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n") n += format( menu_body[n],len-n,"\y6.\w Remove All^n") new nc[32], gm[32] switch(noclip[id]) { case 0: nc = "OFF" case 1: nc = "ON" } switch(godmode[id]) { case 0: gm = "OFF" case 1: gm = "ON" } n += format( menu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n", nc) n += format( menu_body[n],len-n,"\y8.\w Godmode:\r %s^n", gm) n += format( menu_body[n],len-n,"^n\y9. Back") n += format( menu_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(id, key) { key++ switch(MenuID[id]) { case 1: { switch(key) { case 1: { switch(get_pcvar_num(mines_enabled)) { case 0: { set_pcvar_num(mines_enabled, 1) client_print(0, print_chat, "[%s] Plugin is now ON!", PLUGIN) set_task(0.1, "readminescfg") set_task(0.2, "readsignscfg") } case 1: { set_pcvar_num(mines_enabled, 0) client_print(0, print_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_visible, 1) client_print(0, print_chat, "[%s] Mines will be visible after respawn!", PLUGIN) } case 1: { set_pcvar_num(mines_visible, 0) client_print(0, print_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_frags, 1) client_print(0, print_chat, "[%s] Mine kills will give frags!", PLUGIN) } case 1: { set_pcvar_num(mines_frags, 0) client_print(0, print_chat, "[%s] Mine kills won't give frags!", PLUGIN) } } show_minesmenu(id) } case 4: { if(edit_mode) { client_print(id, print_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(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editmine_spawn(sx, sy, sz) client_print(id, print_center, "[%s] Mine created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 2: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 0", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ns(sx, sy, sz) client_print(id, print_center, "[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 3: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 1", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ew(sx, sy, sz) client_print(id, print_center, "[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 4: { new ent, body get_user_aiming(id, ent, body, 320) remove_aim(ent) show_minesmenu(id) } case 5: { new ent, body get_user_aiming(id, ent, body, 320) switch_dir(ent) show_minesmenu(id) } case 6: { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) show_minesmenu(id) } case 7: { switch(noclip[id]) { case 0: { set_pev(id, pev_movetype, MOVETYPE_NOCLIP) noclip[id] = 1 } case 1: { set_pev(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 } } show_minesmenu(id) } case 8: { switch(godmode[id]) { case 0: { set_pev(id, pev_takedamage, 0) godmode[id] = 1 } case 1: { set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(ent, pev_classname, classname, 31) if(!equal(classname, "editland_mine") && !equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new x[8], y[8], z[8] if(equal(classname, "editland_mine")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d", str_to_num(x), str_to_num(y), str_to_num(z)) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } else if(equal(classname, "editwarning_sign")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir if(equal(model, "models/land_mines/warning_ns2.mdl")) dir = 0 else dir = 1 format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } remove_entity(ent) } //-------------------------------------------------------------------------------------------------- public switch_dir(ent) { new classname[32] pev(ent, pev_classname, classname, 31) if(!equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir, direction if(equal(model, "models/land_mines/warning_ns2.mdl")) { dir = 0 direction = 1 } else { dir = 1 direction = 0 } format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } format(buffer, 127, "%d %d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction) write_file(file, buffer) fclose(fh) } remove_entity(ent) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) switch(direction) { case 0: editsign_spawn_ns(sx, sy, sz) case 1: editsign_spawn_ew(sx, sy, sz) } } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "land_mine") set_pev(ent, pev_solid, 2) set_pev(ent, pev_takedamage, 1.0) set_pev(ent, pev_health, 9999.0) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, get_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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editland_mine") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- public mine_touched(id, ent) { if(!get_pcvar_num(mines_enabled)) return if(!is_user_alive(id)) return explode(ent, 0) } //-------------------------------------------------------------------------------------------------- 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(this, idinflictor, idattacker, Float:damage, damagebits) { if(!get_pcvar_num(mines_enabled)) return HAM_IGNORED new classname[32] pev(this, pev_classname, classname, 31) if(!equal(classname, "land_mine")) return HAM_IGNORED explode(this, idattacker) return HAM_HANDLED } //-------------------------------------------------------------------------------------------------- public explode(id, exploder) { 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(id, pev_origin, origin) for(new i = 0; i < 33; ++i) { if(!is_user_alive(i)) continue pev(i, pev_origin, player_origin) distance = get_distance_f(origin, player_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(i, iOrigin) // 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(i, pev_origin, player_origin) if(get_pcvar_num(mines_frags) && (exploder > 0 && exploder < 33)) { if(i == exploder || get_user_team(i) == get_user_team(exploder)) set_pev(exploder, pev_frags, float(get_user_frags(exploder) - 1)) else set_pev(exploder, pev_frags, float(get_user_frags(exploder) + 1)) } set_pev(i, pev_frags, float(get_user_frags(i) + 1)) user_silentkill(i) set_pev(i, pev_frags, float(get_user_frags(i) - 1)) make_deathmsg(exploder, i, 0, "land_mine") } else fakedamage(i, "land_mine", damage, DMG_BLAST) } } } CreateExplosion(id) set_pev(id, pev_classname, "land_mine_dead") set_pev(id, pev_solid, 0) set_pev(id, pev_takedamage, 0.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, 0) 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_BROADCAST, SVC_TEMPENTITY); write_byte(99); //99 = KillBeam write_short(iCurrent); message_end();
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 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(id, pev_classname, "land_mine") set_pev(id, pev_solid, 2) set_pev(id, pev_takedamage, 1.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, get_pcvar_num(mines_visible)) } //-------------------------------------------------------------------------------------------------- static fx_trans(player,amount) { set_entity_visibility(player, amount) } //-------------------------------------------------------------------------------------------------- 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 i = 0; i < 5; i++) { 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 j = 0; j < num; j++) { 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 i = 0; i < num; i++) { 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 i = 0; i < random_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 i = 0; i < 5; 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(flesh[random_num(0,2)]) write_byte(0) // bounce write_byte(500) // life message_end() } } //--------------------------------------------------------------------------------------------------
ya tiene [TTT] Item: Tripmine
(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no? de que trata esa 'arma falsa'
Mensajes: 410
Temas: 9
Registro en: Apr 2015
Reputación:
5
(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no?
Seguro la debes de tener acaparada
Mensajes: 791
Temas: 84
Registro en: Sep 2016
Reputación:
6
(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_enabled, mines_visible, mines_radius, mines_maxdamage, mines_respawntime, mines_frags new boom, MenuID[33] new blood_drop, blood_spray new mdl_gib_flesh, mdl_gib_head, mdl_gib_legbone, mdl_gib_lung, mdl_gib_meat, mdl_gib_spine new files_loaded new in_edit_mode[33], edit_mode new noclip[33], godmode[33] //-------------------------------------------------------------------------------------------------- public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { if (stxtsize != 0) { write_file(file,data) } } delete_file(tempfile) } } //-------------------------------------------------------------------------------------------------- public cleansignsfile() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) mine_spawn(parsedx, parsedy, parsedz) } } files_loaded = 1 } //-------------------------------------------------------------------------------------------------- public readsignscfg() { if(!get_pcvar_num(mines_enabled) || files_loaded == 2) return new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: sign_spawn_ns(parsedx, parsedy, parsedz) case 1: sign_spawn_ew(parsedx, parsedy, parsedz) } } } files_loaded = 2 } //-------------------------------------------------------------------------------------------------- public create_minesedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) editmine_spawn(parsedx, parsedy, parsedz) } } } //-------------------------------------------------------------------------------------------------- public create_signsedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: editsign_spawn_ns(parsedx, parsedy, parsedz) case 1: editsign_spawn_ew(parsedx, parsedy, parsedz) } } } } //-------------------------------------------------------------------------------------------------- public player_newspawn(id) { fx_trans(id, 1) } //-------------------------------------------------------------------------------------------------- public mines_menu(id, level, cid) { if(!cmd_access(id, level, cid, 0)) return PLUGIN_HANDLED MenuID[id] = 1 show_minesmenu(id) return PLUGIN_HANDLED } //-------------------------------------------------------------------------------------------------- public show_minesmenu(id) { new menu_body[320] new n = 0 new len = 319 new keys switch(MenuID[id]) { case 1: { n += format( menu_body[n],len-n,"\yLand Mines menu:\w^n^n") switch(get_pcvar_num(mines_enabled)) { case 0: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines ON^n") case 1: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n") } switch(get_pcvar_num(mines_visible)) { case 0: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n") case 1: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n") } switch(get_pcvar_num(mines_frags)) { case 0: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags ON^n") case 1: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n") } n += format( menu_body[n],len-n,"\y4.\w Edit Mode^n") n += format( menu_body[n],len-n,"^n\y0. Exit") keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9) } case 2: { n += format( menu_body[n],len-n,"\yLand Mines edit menu:\w^n^n") n += format( menu_body[n],len-n,"\y1.\w Create Mine^n") n += format( menu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n") n += format( menu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n") n += format( menu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n") n += format( menu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n") n += format( menu_body[n],len-n,"\y6.\w Remove All^n") new nc[32], gm[32] switch(noclip[id]) { case 0: nc = "OFF" case 1: nc = "ON" } switch(godmode[id]) { case 0: gm = "OFF" case 1: gm = "ON" } n += format( menu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n", nc) n += format( menu_body[n],len-n,"\y8.\w Godmode:\r %s^n", gm) n += format( menu_body[n],len-n,"^n\y9. Back") n += format( menu_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(id, key) { key++ switch(MenuID[id]) { case 1: { switch(key) { case 1: { switch(get_pcvar_num(mines_enabled)) { case 0: { set_pcvar_num(mines_enabled, 1) client_print(0, print_chat, "[%s] Plugin is now ON!", PLUGIN) set_task(0.1, "readminescfg") set_task(0.2, "readsignscfg") } case 1: { set_pcvar_num(mines_enabled, 0) client_print(0, print_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_visible, 1) client_print(0, print_chat, "[%s] Mines will be visible after respawn!", PLUGIN) } case 1: { set_pcvar_num(mines_visible, 0) client_print(0, print_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_frags, 1) client_print(0, print_chat, "[%s] Mine kills will give frags!", PLUGIN) } case 1: { set_pcvar_num(mines_frags, 0) client_print(0, print_chat, "[%s] Mine kills won't give frags!", PLUGIN) } } show_minesmenu(id) } case 4: { if(edit_mode) { client_print(id, print_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(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editmine_spawn(sx, sy, sz) client_print(id, print_center, "[%s] Mine created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 2: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 0", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ns(sx, sy, sz) client_print(id, print_center, "[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 3: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 1", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ew(sx, sy, sz) client_print(id, print_center, "[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 4: { new ent, body get_user_aiming(id, ent, body, 320) remove_aim(ent) show_minesmenu(id) } case 5: { new ent, body get_user_aiming(id, ent, body, 320) switch_dir(ent) show_minesmenu(id) } case 6: { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) show_minesmenu(id) } case 7: { switch(noclip[id]) { case 0: { set_pev(id, pev_movetype, MOVETYPE_NOCLIP) noclip[id] = 1 } case 1: { set_pev(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 } } show_minesmenu(id) } case 8: { switch(godmode[id]) { case 0: { set_pev(id, pev_takedamage, 0) godmode[id] = 1 } case 1: { set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(ent, pev_classname, classname, 31) if(!equal(classname, "editland_mine") && !equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new x[8], y[8], z[8] if(equal(classname, "editland_mine")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d", str_to_num(x), str_to_num(y), str_to_num(z)) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } else if(equal(classname, "editwarning_sign")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir if(equal(model, "models/land_mines/warning_ns2.mdl")) dir = 0 else dir = 1 format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } remove_entity(ent) } //-------------------------------------------------------------------------------------------------- public switch_dir(ent) { new classname[32] pev(ent, pev_classname, classname, 31) if(!equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir, direction if(equal(model, "models/land_mines/warning_ns2.mdl")) { dir = 0 direction = 1 } else { dir = 1 direction = 0 } format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } format(buffer, 127, "%d %d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction) write_file(file, buffer) fclose(fh) } remove_entity(ent) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) switch(direction) { case 0: editsign_spawn_ns(sx, sy, sz) case 1: editsign_spawn_ew(sx, sy, sz) } } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "land_mine") set_pev(ent, pev_solid, 2) set_pev(ent, pev_takedamage, 1.0) set_pev(ent, pev_health, 9999.0) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, get_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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editland_mine") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- public mine_touched(id, ent) { if(!get_pcvar_num(mines_enabled)) return if(!is_user_alive(id)) return explode(ent, 0) } //-------------------------------------------------------------------------------------------------- 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(this, idinflictor, idattacker, Float:damage, damagebits) { if(!get_pcvar_num(mines_enabled)) return HAM_IGNORED new classname[32] pev(this, pev_classname, classname, 31) if(!equal(classname, "land_mine")) return HAM_IGNORED explode(this, idattacker) return HAM_HANDLED } //-------------------------------------------------------------------------------------------------- public explode(id, exploder) { 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(id, pev_origin, origin) for(new i = 0; i < 33; ++i) { if(!is_user_alive(i)) continue pev(i, pev_origin, player_origin) distance = get_distance_f(origin, player_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(i, iOrigin) // 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(i, pev_origin, player_origin) if(get_pcvar_num(mines_frags) && (exploder > 0 && exploder < 33)) { if(i == exploder || get_user_team(i) == get_user_team(exploder)) set_pev(exploder, pev_frags, float(get_user_frags(exploder) - 1)) else set_pev(exploder, pev_frags, float(get_user_frags(exploder) + 1)) } set_pev(i, pev_frags, float(get_user_frags(i) + 1)) user_silentkill(i) set_pev(i, pev_frags, float(get_user_frags(i) - 1)) make_deathmsg(exploder, i, 0, "land_mine") } else fakedamage(i, "land_mine", damage, DMG_BLAST) } } } CreateExplosion(id) set_pev(id, pev_classname, "land_mine_dead") set_pev(id, pev_solid, 0) set_pev(id, pev_takedamage, 0.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, 0) 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_BROADCAST, SVC_TEMPENTITY); write_byte(99); //99 = KillBeam write_short(iCurrent); message_end();
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 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(id, pev_classname, "land_mine") set_pev(id, pev_solid, 2) set_pev(id, pev_takedamage, 1.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, get_pcvar_num(mines_visible)) } //-------------------------------------------------------------------------------------------------- static fx_trans(player,amount) { set_entity_visibility(player, amount) } //-------------------------------------------------------------------------------------------------- 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 i = 0; i < 5; i++) { 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 j = 0; j < num; j++) { 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 i = 0; i < num; i++) { 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 i = 0; i < random_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 i = 0; i < 5; 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(flesh[random_num(0,2)]) write_byte(0) // bounce write_byte(500) // life message_end() } } //--------------------------------------------------------------------------------------------------
ya tiene [TTT] Item: Tripmine
(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no? de que trata esa 'arma falsa'
IMPACKTHADO
Mensajes: 306
Temas: 11
Registro en: Aug 2016
Reputación:
6
si me dicen de que trata estaría mejor
Mensajes: 2,087
Temas: 3
Registro en: Jul 2015
Reputación:
14
Mensajes: 306
Temas: 11
Registro en: Aug 2016
Reputación:
6
(30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas
Mensajes: 791
Temas: 84
Registro en: Sep 2016
Reputación:
6
(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_enabled, mines_visible, mines_radius, mines_maxdamage, mines_respawntime, mines_frags new boom, MenuID[33] new blood_drop, blood_spray new mdl_gib_flesh, mdl_gib_head, mdl_gib_legbone, mdl_gib_lung, mdl_gib_meat, mdl_gib_spine new files_loaded new in_edit_mode[33], edit_mode new noclip[33], godmode[33] //-------------------------------------------------------------------------------------------------- public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { if (stxtsize != 0) { write_file(file,data) } } delete_file(tempfile) } } //-------------------------------------------------------------------------------------------------- public cleansignsfile() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if( !file_exists(file) ) return
new line = 0, stxtsize 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)) != 0 ) { 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)) != 0 ) { 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(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) mine_spawn(parsedx, parsedy, parsedz) } } files_loaded = 1 } //-------------------------------------------------------------------------------------------------- public readsignscfg() { if(!get_pcvar_num(mines_enabled) || files_loaded == 2) return new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: sign_spawn_ns(parsedx, parsedy, parsedz) case 1: sign_spawn_ew(parsedx, parsedy, parsedz) } } } files_loaded = 2 } //-------------------------------------------------------------------------------------------------- public create_minesedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7) editmine_spawn(parsedx, parsedy, parsedz) } } } //-------------------------------------------------------------------------------------------------- public create_signsedit() { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) { new readdata[128], txtlen new parsedx[8], parsedy[8], parsedz[8], parseddir[8] new fsize = file_size(file, 1) for(new line = 0; line < fsize - 1; ++line) { read_file(file, line, readdata, 127, txtlen) parse(readdata, parsedx, 7, parsedy, 7, parsedz, 7, parseddir, 7) switch(str_to_num(parseddir)) { case 0: editsign_spawn_ns(parsedx, parsedy, parsedz) case 1: editsign_spawn_ew(parsedx, parsedy, parsedz) } } } } //-------------------------------------------------------------------------------------------------- public player_newspawn(id) { fx_trans(id, 1) } //-------------------------------------------------------------------------------------------------- public mines_menu(id, level, cid) { if(!cmd_access(id, level, cid, 0)) return PLUGIN_HANDLED MenuID[id] = 1 show_minesmenu(id) return PLUGIN_HANDLED } //-------------------------------------------------------------------------------------------------- public show_minesmenu(id) { new menu_body[320] new n = 0 new len = 319 new keys switch(MenuID[id]) { case 1: { n += format( menu_body[n],len-n,"\yLand Mines menu:\w^n^n") switch(get_pcvar_num(mines_enabled)) { case 0: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines ON^n") case 1: n += format( menu_body[n],len-n,"\y1.\w Turn Land Mines OFF^n") } switch(get_pcvar_num(mines_visible)) { case 0: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity ON^n") case 1: n += format( menu_body[n],len-n,"\y2.\w Turn Mines visiblity OFF^n") } switch(get_pcvar_num(mines_frags)) { case 0: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags ON^n") case 1: n += format( menu_body[n],len-n,"\y3.\w Turn Mines frags OFF^n") } n += format( menu_body[n],len-n,"\y4.\w Edit Mode^n") n += format( menu_body[n],len-n,"^n\y0. Exit") keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9) } case 2: { n += format( menu_body[n],len-n,"\yLand Mines edit menu:\w^n^n") n += format( menu_body[n],len-n,"\y1.\w Create Mine^n") n += format( menu_body[n],len-n,"\y2.\w Create Warning sign (North/South)^n") n += format( menu_body[n],len-n,"\y3.\w Create Warning sign (East/West)^n") n += format( menu_body[n],len-n,"\y4.\w Remove Entity (Aim)^n") n += format( menu_body[n],len-n,"\y5.\w Switch Sign Direction (Aim)^n") n += format( menu_body[n],len-n,"\y6.\w Remove All^n") new nc[32], gm[32] switch(noclip[id]) { case 0: nc = "OFF" case 1: nc = "ON" } switch(godmode[id]) { case 0: gm = "OFF" case 1: gm = "ON" } n += format( menu_body[n],len-n,"^n\y7.\w Noclip:\r %s^n", nc) n += format( menu_body[n],len-n,"\y8.\w Godmode:\r %s^n", gm) n += format( menu_body[n],len-n,"^n\y9. Back") n += format( menu_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(id, key) { key++ switch(MenuID[id]) { case 1: { switch(key) { case 1: { switch(get_pcvar_num(mines_enabled)) { case 0: { set_pcvar_num(mines_enabled, 1) client_print(0, print_chat, "[%s] Plugin is now ON!", PLUGIN) set_task(0.1, "readminescfg") set_task(0.2, "readsignscfg") } case 1: { set_pcvar_num(mines_enabled, 0) client_print(0, print_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_visible, 1) client_print(0, print_chat, "[%s] Mines will be visible after respawn!", PLUGIN) } case 1: { set_pcvar_num(mines_visible, 0) client_print(0, print_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_frags, 1) client_print(0, print_chat, "[%s] Mine kills will give frags!", PLUGIN) } case 1: { set_pcvar_num(mines_frags, 0) client_print(0, print_chat, "[%s] Mine kills won't give frags!", PLUGIN) } } show_minesmenu(id) } case 4: { if(edit_mode) { client_print(id, print_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(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editmine_spawn(sx, sy, sz) client_print(id, print_center, "[%s] Mine created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 2: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 0", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ns(sx, sy, sz) client_print(id, print_center, "[%s] Sign (N/S) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 3: { new Float:origin[3] pev(id, pev_origin, origin) new writedata[128] formatex(writedata, 127, "%d %d %d 1", floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) write_file(file, writedata) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) editsign_spawn_ew(sx, sy, sz) client_print(id, print_center, "[%s] Sign (E/W) created at: X(%d) Y(%d) Z(%d)", PLUGIN, floatround(origin[0]), floatround(origin[1]), floatround(origin[2])) show_minesmenu(id) } case 4: { new ent, body get_user_aiming(id, ent, body, 320) remove_aim(ent) show_minesmenu(id) } case 5: { new ent, body get_user_aiming(id, ent, body, 320) switch_dir(ent) show_minesmenu(id) } case 6: { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) if(file_exists(file)) delete_file(file) show_minesmenu(id) } case 7: { switch(noclip[id]) { case 0: { set_pev(id, pev_movetype, MOVETYPE_NOCLIP) noclip[id] = 1 } case 1: { set_pev(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 } } show_minesmenu(id) } case 8: { switch(godmode[id]) { case 0: { set_pev(id, pev_takedamage, 0) godmode[id] = 1 } case 1: { set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(id, pev_movetype, MOVETYPE_WALK) noclip[id] = 0 set_pev(id, pev_takedamage, 1) 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(ent, pev_classname, classname, 31) if(!equal(classname, "editland_mine") && !equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new x[8], y[8], z[8] if(equal(classname, "editland_mine")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_mines.cfg", configsdir, mapname) format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d", str_to_num(x), str_to_num(y), str_to_num(z)) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } else if(equal(classname, "editwarning_sign")) { new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir if(equal(model, "models/land_mines/warning_ns2.mdl")) dir = 0 else dir = 1 format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } fclose(fh) } } remove_entity(ent) } //-------------------------------------------------------------------------------------------------- public switch_dir(ent) { new classname[32] pev(ent, pev_classname, classname, 31) if(!equal(classname, "editwarning_sign")) return new Float:origin[3] pev(ent, pev_origin, origin) new eorigin[128] new configsdir[128] get_configsdir(configsdir, 127) new file[256], mapname[51] get_mapname(mapname, 50) format(file, 255, "%s/land_mines/%s_signs.cfg", configsdir, mapname) new model[128] pev(ent, pev_model, model, 127) new dir, direction if(equal(model, "models/land_mines/warning_ns2.mdl")) { dir = 0 direction = 1 } else { dir = 1 direction = 0 } format(eorigin, 127, "%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(fh, buffer, 127) parse(buffer, x, 7, y, 7, z, 7) format(buffer, 127, "%d %d %d %d", str_to_num(x), str_to_num(y), str_to_num(z), dir) if(equal(buffer, eorigin)) { format(buffer, 127, "") write_file(file, buffer, counter) } counter++ } format(buffer, 127, "%d %d %d %d", floatround(origin[0]), floatround(origin[1]), floatround(origin[2]), direction) write_file(file, buffer) fclose(fh) } remove_entity(ent) new sx[8], sy[8], sz[8] num_to_str(floatround(origin[0]), sx, 7) num_to_str(floatround(origin[1]), sy, 7) num_to_str(floatround(origin[2]), sz, 7) switch(direction) { case 0: editsign_spawn_ns(sx, sy, sz) case 1: editsign_spawn_ew(sx, sy, sz) } } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "land_mine") set_pev(ent, pev_solid, 2) set_pev(ent, pev_takedamage, 1.0) set_pev(ent, pev_health, 9999.0) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, get_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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "warning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) engfunc(EngFunc_DropToFloor, ent) set_entity_visibility(ent, 1) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editland_mine") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/land_mine2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -4.0, -4.0, 0.0 }, Float:{ 4.0, 4.0, 4.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ns2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -1.1, -12.7, 0.0 }, Float:{ 1.1, 12.7, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- 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_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target")) set_pev(ent, pev_classname, "editwarning_sign") set_pev(ent, pev_solid, 2) engfunc(EngFunc_SetModel, ent, "models/land_mines/warning_ew2.mdl") engfunc(EngFunc_SetSize, ent, Float:{ -12.7, -1.1, 0.0 }, Float:{ 12.7, 1.1, 38.0 } ) engfunc(EngFunc_SetOrigin, ent, origin) } //-------------------------------------------------------------------------------------------------- public mine_touched(id, ent) { if(!get_pcvar_num(mines_enabled)) return if(!is_user_alive(id)) return explode(ent, 0) } //-------------------------------------------------------------------------------------------------- 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(this, idinflictor, idattacker, Float:damage, damagebits) { if(!get_pcvar_num(mines_enabled)) return HAM_IGNORED new classname[32] pev(this, pev_classname, classname, 31) if(!equal(classname, "land_mine")) return HAM_IGNORED explode(this, idattacker) return HAM_HANDLED } //-------------------------------------------------------------------------------------------------- public explode(id, exploder) { 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(id, pev_origin, origin) for(new i = 0; i < 33; ++i) { if(!is_user_alive(i)) continue pev(i, pev_origin, player_origin) distance = get_distance_f(origin, player_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(i, iOrigin) // 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(i, pev_origin, player_origin) if(get_pcvar_num(mines_frags) && (exploder > 0 && exploder < 33)) { if(i == exploder || get_user_team(i) == get_user_team(exploder)) set_pev(exploder, pev_frags, float(get_user_frags(exploder) - 1)) else set_pev(exploder, pev_frags, float(get_user_frags(exploder) + 1)) } set_pev(i, pev_frags, float(get_user_frags(i) + 1)) user_silentkill(i) set_pev(i, pev_frags, float(get_user_frags(i) - 1)) make_deathmsg(exploder, i, 0, "land_mine") } else fakedamage(i, "land_mine", damage, DMG_BLAST) } } } CreateExplosion(id) set_pev(id, pev_classname, "land_mine_dead") set_pev(id, pev_solid, 0) set_pev(id, pev_takedamage, 0.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, 0) 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_BROADCAST, SVC_TEMPENTITY); write_byte(99); //99 = KillBeam write_short(iCurrent); message_end();
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin, 0); 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(id, pev_classname, "land_mine") set_pev(id, pev_solid, 2) set_pev(id, pev_takedamage, 1.0) set_pev(id, pev_health, 9999.0) set_entity_visibility(id, get_pcvar_num(mines_visible)) } //-------------------------------------------------------------------------------------------------- static fx_trans(player,amount) { set_entity_visibility(player, amount) } //-------------------------------------------------------------------------------------------------- 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 i = 0; i < 5; i++) { 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 j = 0; j < num; j++) { 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 i = 0; i < num; i++) { 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 i = 0; i < random_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 i = 0; i < 5; 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(flesh[random_num(0,2)]) write_byte(0) // bounce write_byte(500) // life message_end() } } //--------------------------------------------------------------------------------------------------
ya tiene [TTT] Item: Tripmine
(30/11/2016, 11:58 AM)Treki escribió: Hace tiempo no ves el arma falsa no? de que trata esa 'arma falsa'
Yo me refiero a una mina que pises y explote
Mensajes: 2,087
Temas: 3
Registro en: Jul 2015
Reputación:
14
(30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas
Mensajes: 92
Temas: 47
Registro en: Aug 2016
Reputación:
0
04/12/2016, 10:12 AM
(Última modificación: 04/12/2016, 10:15 AM por gianfranco1029.)
Un escudo al estilo de campo de fuerza , poder traspasar paredes , ect (?
Mensajes: 2,087
Temas: 3
Registro en: Jul 2015
Reputación:
14
(30/11/2016, 05:24 PM)Hernandez escribió: (30/11/2016, 04:47 PM)Hernandez escribió: Barcos y putas
Mensajes: 791
Temas: 84
Registro en: Sep 2016
Reputación:
6
(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
Mensajes: 7,178
Temas: 93
Registro en: Aug 2014
Reputación:
63
(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 ?
no me incluyas
|