Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Лазерные мины (Трабла)

Статус пользователя Johnny
сообщение 5.6.2013, 17:23
Сообщение #1


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

Имеются лазерные мины, все вроде бы хорошо, но вот есть в них баг: если установить лазер на респавне, при появление игрока его убивает ~7-10 раз, тоесть человек установивший лазер получает с одного убийства несколько фрагов.

Подскажите, как решить данную проблему.


Исходник

/* Plugin generated by AMXX-Studio */
//#define BIOHAZARD_SUPPORT
//#define UL_MONEY_SUPPORT

#include <amxmodx>
#include <fakemeta>
#include <xs>
#include <chatcolor>

#if defined BIOHAZARD_SUPPORT
#include <biohazard>
#endif

#if defined UL_MONEY_SUPPORT
#include <money_ul>
#endif


#if AMXX_VERSION_NUM < 180
#assert AMX Mod X v1.8.0 or greater library required!
#endif

#if defined BIOHAZARD_SUPPORT
#define PLUGIN "LTM for BIOHAZARD"
#define VERSION "+1.4"
#else
#define PLUGIN "Laser/Tripmine Entity"
#define VERSION "2.3"
#endif
#define AUTHOR "SandStriker"

#define RemoveEntity(%1) engfunc(EngFunc_RemoveEntity,%1)
//#define ACCESSLEVEL ADMIN_LEVEL_H
#define TASK_PLANT 15100
#define TASK_RESET 15500
#define TASK_RELEASE 15900

#define LASERMINE_TEAM pev_iuser1//EV_INT_iuser1
#define LASERMINE_OWNER pev_iuser2 //EV_INT_iuser3
#define LASERMINE_STEP pev_iuser3
#define LASERMINE_HITING pev_iuser4
#define LASERMINE_COUNT pev_fuser1

#define LASERMINE_POWERUP pev_fuser2
#define LASERMINE_BEAMTHINK pev_fuser3

#define LASERMINE_BEAMENDPOINT pev_vuser1
#define MAX_MINES 10
#define MODE_LASERMINE 0
#define OFFSET_TEAM 114
#define OFFSET_MONEY 115
#define OFFSET_DEATH 444

#define cs_get_user_team(%1) CsTeams:get_offset_value(%1,OFFSET_TEAM)
#define cs_get_user_deaths(%1) get_offset_value(%1,OFFSET_DEATH)
#define cs_get_user_money(%1) get_offset_value(%1,OFFSET_MONEY)
#define cs_set_user_money(%1,%2) set_offset_value(%1,OFFSET_MONEY,%2)



enum CsTeams {
CS_TEAM_UNASSIGNED = 0,
CS_TEAM_T = 1,
CS_TEAM_CT = 2,
CS_TEAM_SPECTATOR = 3
};

enum tripmine_e {
TRIPMINE_IDLE1 = 0,
TRIPMINE_IDLE2,
TRIPMINE_ARM1,
TRIPMINE_ARM2,
TRIPMINE_FIDGET,
TRIPMINE_HOLSTER,
TRIPMINE_DRAW,
TRIPMINE_WORLD,
TRIPMINE_GROUND,
};

enum
{
POWERUP_THINK,
BEAMBREAK_THINK,
EXPLOSE_THINK
};

enum
{
POWERUP_SOUND,
ACTIVATE_SOUND,
STOP_SOUND
};

new const
ENT_MODELS[] = "models/v_tripmine.mdl",
ENT_SOUND1[] = "weapons/mine_deploy.wav",
ENT_SOUND2[] = "weapons/mine_charge.wav",
ENT_SOUND3[] = "weapons/mine_activate.wav",
ENT_SOUND4[] = "debris/beamstart9.wav",
ENT_SOUND5[] = "items/gunpickup2.wav",
ENT_SOUND6[] = "debris/bustglass1.wav",
ENT_SOUND7[] = "debris/bustglass2.wav",
ENT_SPRITE1[] = "sprites/laserbeam.spr",
ENT_SPRITE2[] = "sprites/zerogxplode.spr";

new const
ENT_CLASS_NAME[] = "lasermine",
//ENT_CLASS_NAME2[] = "info_target",
ENT_CLASS_NAME3[] = "func_breakable";

new const
#if defined BIOHAZARD_SUPPORT
CHATTAG[] = "[BioLaser]",
#else
CHATTAG[] = "[CSDM]",
#endif
//STR_MINEDETNATED[] = "Your mine has detonated.",
//STR_MINEDETNATED2[] = "detonated your mine.",
STR_NOTACTIVE[] = "Лазерные мины неактивны.",
STR_DONTHAVEMINE[] = "У Вас нет лазерных мин.",
//STR_CANTDEPLOY[] = "Ваша команда не может использовать лазерные мины!",
STR_MAXDEPLOY[] = "Вы установили максимальное количество лазерных мин!.",
STR_MANYPPL[] = "У вашей команды слишком много лазерных мин!",
STR_PLANTWALL[] = "Устанавливайте лазерные мины на стены!",
STR_REF[] = "Узнайте, как пользоваться лазерными минами! Напшите в чате ",
#if defined BIOHAZARD_SUPPORT
STR_CBT[] = "Your Zombie! Can't buy and deploying lasermine!",
#else
STR_CBT[] = "Your Team Can't buy and deploying lasermine!",
#endif
STR_CANTBUY[] = "Невозможно купить лазерные мины.",
STR_HAVEMAX[] = "Вы приобрели максимальное количество лазерных мин.",
STR_NOMONEY[] = "У Вас недостаточно денег для покупки лазерной мины!",
STR_NEEDED[] = "РЅСѓР¶РЅРѕ",
STR_DELAY[] = "Купить и установить лазерную мину можно через",
STR_SECONDS[] = "секунд.",
STR_BOUGHT[] = "Вы успешно купили лазерную мину.",
STR_STATE[] = "Лазерные мины:",
STR_NOACCESS[] = "У Вас нет прав для использования этой команды!";

new g_EntMine;
new beam, boom
new
g_LENABLE,g_LFMONEY,g_LAMMO,g_LDMG,
g_LTMAX,g_LCOST,g_LHEALTH,g_LMODE,g_LRADIUS,g_LRDMG,g_LFF,g_LCBT;
new
g_LDELAY,/*g_LTHINK,*/g_LVISIBLE,
g_LSTAMMO,g_LACCESS,g_LGLOW,g_LDMGMODE,g_LCLMODE,g_LCBRIGHT,g_LDSEC,g_LCMDMODE,g
_LBUYMODE;

new g_dcount[33],g_nowtime,g_MaxPL
new bool:g_settinglaser[33]
new g_msgDeathMsg,g_msgScoreInfo,g_msgDamage,g_msgStatusText,g_msgMoney;
new Float:plspeed[33]
new plsetting[33]
new g_havemine[33];
new g_deployed[33];

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);

// Add your code here...
register_clcmd("+setlaser","CreateLaserMine_Progress_b");
register_clcmd("-setlaser","StopCreateLaserMine");
register_clcmd("+dellaser","ReturnLaserMine_Progress");
register_clcmd("-dellaser","StopReturnLaserMine");
register_clcmd("say","say_lasermine");
register_clcmd("buy_lasermine","BuyLasermine");

#if defined BIOHAZARD_SUPPORT
g_LENABLE = register_cvar("bio_ltm","1");
g_LACCESS = register_cvar("bio_ltm_acs","0"); //0 all, 1 admin
g_LMODE = register_cvar("bio_ltm_mode","0"); //0 lasermine, 1 tripmine
g_LAMMO = register_cvar("bio_ltm_ammo","2");
g_LDMG = register_cvar("bio_ltm_dmg","60"); //laser hit dmg
g_LCOST = register_cvar("bio_ltm_cost","2500");
g_LFMONEY = register_cvar("bio_ltm_fragmoney","300");
g_LHEALTH = register_cvar("bio_ltm_health","500");
g_LTMAX = register_cvar("bio_ltm_teammax","10");
g_LRADIUS = register_cvar("bio_ltm_radius","320.0");
g_LRDMG = register_cvar("bio_ltm_rdmg","100"); //radius damage
g_LFF = register_cvar("bio_ltm_ff","0");
g_LCBT = register_cvar("bio_ltm_cbt","ALL");
g_LBUYMODE = register_cvar("bio_ltm_buymode","1");
g_LDELAY = register_cvar("bio_ltm_delay","15");
//g_LTHINK = register_cvar("bio_ltm_think","0.01");
g_LVISIBLE = register_cvar("bio_ltm_line","1");
g_LGLOW = register_cvar("bio_ltm_glow","0");
g_LCBRIGHT = register_cvar("bio_ltm_bright","255"); //laser line brightness.
g_LCLMODE = register_cvar("bio_ltm_color","0"); //0 is team color,1 is green
g_LDMGMODE = register_cvar("bio_ltm_ldmgmode","0"); //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
g_LDSEC = register_cvar("bio_ltm_ldmgseconds","1"); //mode 2 only, damage / seconds. default 1 (sec)
g_LSTAMMO = register_cvar("bio_ltm_startammo","1");
g_LCMDMODE = register_cvar("bio_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each.
#else
g_LENABLE = register_cvar("amx_ltm","1");
g_LACCESS = register_cvar("amx_ltm_acs","0"); //0 all, 1 admin
g_LMODE = register_cvar("amx_ltm_mode","0"); //0 lasermine, 1 tripmine
g_LAMMO = register_cvar("amx_ltm_ammo","2");
g_LDMG = register_cvar("amx_ltm_dmg","60"); //laser hit dmg
g_LCOST = register_cvar("amx_ltm_cost","2500");
g_LFMONEY = register_cvar("amx_ltm_fragmoney","300");
g_LHEALTH = register_cvar("amx_ltm_health","500");
g_LTMAX = register_cvar("amx_ltm_teammax","10");
g_LRADIUS = register_cvar("amx_ltm_radius","320.0");
g_LRDMG = register_cvar("amx_ltm_rdmg","100"); //radius damage
g_LFF = register_cvar("amx_ltm_ff","0");
g_LCBT = register_cvar("amx_ltm_cbt","ALL");
g_LBUYMODE = register_cvar("amx_ltm_buymode","1");
g_LDELAY = register_cvar("amx_ltm_delay","15");
//g_LTHINK = register_cvar("amx_ltm_think","0.01")
g_LVISIBLE = register_cvar("amx_ltm_line","1");
g_LGLOW = register_cvar("amx_ltm_glow","0");
g_LCBRIGHT = register_cvar("amx_ltm_bright","255"); //laser line brightness.
g_LCLMODE = register_cvar("amx_ltm_color","0"); //0 is team color,1 is green
g_LDMGMODE = register_cvar("amx_ltm_ldmgmode","0"); //0 - frame dmg, 1 - once dmg, 2 - 1 second dmg
g_LDSEC = register_cvar("amx_ltm_ldmgseconds","1"); //mode 2 only, damage / seconds. default 1 (sec)
g_LSTAMMO = register_cvar("amx_ltm_startammo","1");
g_LCMDMODE = register_cvar("amx_ltm_cmdmode","0"); //0 is +USE key, 1 is bind, 2 is each.
#endif
register_event("DeathMsg", "DeathEvent", "a");
register_event("CurWeapon", "standing", "be", "1=1");
register_event("ResetHUD", "delaycount", "a");
register_event("ResetHUD", "newround", "b");
register_event("Damage","CutDeploy_onDamage","b");
g_msgDeathMsg = get_user_msgid("DeathMsg");
g_msgScoreInfo = get_user_msgid("ScoreInfo");
g_msgDamage = get_user_msgid("Damage");
g_msgStatusText = get_user_msgid("StatusText");
g_msgMoney = get_user_msgid("Money");
// -- Forward.
register_forward(FM_Think, "ltm_Think" );
register_forward(FM_PlayerPostThink, "ltm_PostThink" );
register_forward(FM_PlayerPreThink, "ltm_PreThink");
}

public plugin_precache()
{
precache_sound(ENT_SOUND1);
precache_sound(ENT_SOUND2);
precache_sound(ENT_SOUND3);
precache_sound(ENT_SOUND4);
precache_sound(ENT_SOUND5);
precache_sound(ENT_SOUND6);
precache_sound(ENT_SOUND7);
precache_model(ENT_MODELS);
beam = precache_model(ENT_SPRITE1);
boom = precache_model(ENT_SPRITE2);

return PLUGIN_CONTINUE;
}

public plugin_modules()
{
require_module("fakemeta");
require_module("cstrike");
//require_module("fun")
}

public plugin_cfg()
{
g_EntMine = engfunc(EngFunc_AllocString,ENT_CLASS_NAME3);
arrayset(g_havemine,0,sizeof(g_havemine));
arrayset(g_deployed,0,sizeof(g_deployed));
g_MaxPL = get_maxplayers();

new file[64]; get_localinfo("amxx_configsdir",file,63);
#if defined BIOHAZARD_SUPPORT
format(file, 63, "%s/bhltm_cvars.cfg", file);
#else
format(file, 63, "%s/ltm_cvars.cfg", file);
#endif
if(file_exists(file)) server_cmd("exec %s", file), server_exec();

}

public delaycount(id)
{
g_dcount[id] = floatround(get_gametime());
}

bool:CheckTime(id)
{
g_nowtime = floatround(get_gametime()) - g_dcount[id];
if(g_nowtime >= get_pcvar_num(g_LDELAY))
return true;
return false;
}

public CreateLaserMine_Progress_b(id)
{
if(get_pcvar_num(g_LCMDMODE) != 0)
CreateLaserMine_Progress(id);
return PLUGIN_HANDLED;
}

public CreateLaserMine_Progress(id)
{

if (!CreateCheck(id))
return PLUGIN_HANDLED;
g_settinglaser[id] = true;

message_begin( MSG_ONE, 108, {0,0,0}, id );
write_byte(1);
write_byte(0);
message_end();

set_task(1.2, "Spawn", (TASK_PLANT + id));

return PLUGIN_HANDLED;
}

public ReturnLaserMine_Progress(id)
{

if (!ReturnCheck(id))
return PLUGIN_HANDLED;
g_settinglaser[id] = true;

message_begin( MSG_ONE, 108, {0,0,0}, id );
write_byte(1);
write_byte(0);
message_end();

set_task(1.2, "ReturnMine", (TASK_RELEASE + id));


return PLUGIN_HANDLED;
}

public StopCreateLaserMine(id)
{

DeleteTask(id);
message_begin(MSG_ONE, 108, {0,0,0}, id);
write_byte(0);
write_byte(0);
message_end();

return PLUGIN_HANDLED;
}

public StopReturnLaserMine(id)
{

DeleteTask(id);
message_begin(MSG_ONE, 108, {0,0,0}, id);
write_byte(0);
write_byte(0);
message_end();

return PLUGIN_HANDLED;
}

public ReturnMine(id)
{
id -= TASK_RELEASE;
new tgt,body,Float:vo[3],Float:to[3];
get_user_aiming(id,tgt,body);
if(!pev_valid(tgt)) return;
pev(id,pev_origin,vo);
pev(tgt,pev_origin,to);
if(get_distance_f(vo,to) > 70.0) return;

new EntityName[32];
pev(tgt, pev_classname, EntityName, 31);
if(!equal(EntityName, ENT_CLASS_NAME)) return;
if(pev(tgt,LASERMINE_OWNER) != id) return;
RemoveEntity(tgt);

g_havemine[id] ++;
g_deployed[id] --;
emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
ShowAmmo(id)

return;
}

public Spawn( id )
{
id -= TASK_PLANT
// motor
new i_Ent = engfunc(EngFunc_CreateNamedEntity,g_EntMine);
if(!i_Ent)
{
client_print(id,print_chat,"[Laesrmine Debug] Can't Create Entity");
return PLUGIN_HANDLED_MAIN;
}
set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);

engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);

set_pev(i_Ent,pev_solid,SOLID_NOT);
set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);

set_pev(i_Ent,pev_frame,0);
set_pev(i_Ent,pev_body,3);
set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);
set_pev(i_Ent,pev_framerate,0);

set_pev(i_Ent,pev_takedamage,DAMAGE_YES);

set_pev(i_Ent,pev_dmg,100.0);
set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
new Float:vOrigin[3];
new Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
Float:vTraceEnd[3],Float:vEntAngles[3];
pev( id, pev_origin, vOrigin );
velocity_by_aim( id, 128, vTraceDirection );
xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );

engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );

new Float:fFraction;
get_tr2( 0, TR_flFraction, fFraction );


// -- We hit something!
if ( fFraction < 1.0 )
{
// -- Save results to be used later.
get_tr2( 0, TR_vecEndPos, vTraceEnd );
get_tr2( 0, TR_vecPlaneNormal, vNormal );
}


xs_vec_mul_scalar( vNormal, 8.0, vNormal );
xs_vec_add( vTraceEnd, vNormal, vNewOrigin );

engfunc(EngFunc_SetSize, i_Ent, Float:{ -4.0, -4.0, -4.0 }, Float:{ 4.0, 4.0, 4.0 } );
engfunc(EngFunc_SetOrigin, i_Ent, vNewOrigin );

// -- Rotate tripmine.
vector_to_angle(vNormal,vEntAngles );
set_pev(i_Ent,pev_angles,vEntAngles );

// -- Calculate laser end origin.
new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];

xs_vec_mul_scalar(vNormal, 8192.0, vNormal );
xs_vec_add( vNewOrigin, vNormal, vBeamEnd );

engfunc( EngFunc_TraceLine, vNewOrigin, vBeamEnd, IGNORE_MONSTERS, -1, 0 );

get_tr2( 0, TR_vecPlaneNormal, vNormal );
get_tr2( 0, TR_vecEndPos, vTracedBeamEnd );

// -- Save results to be used later.
set_pev(i_Ent, LASERMINE_OWNER, id );
set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd);
set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id));
new Float:fCurrTime = get_gametime();

set_pev(i_Ent,LASERMINE_POWERUP, fCurrTime + 2.5 );

set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK);
set_pev(i_Ent,pev_nextthink, fCurrTime + 0.2 );

PlaySound(i_Ent,POWERUP_SOUND );
g_deployed[id]++;
g_havemine[id]--;
DeleteTask(id);
ShowAmmo(id);
return 1;
}

stock TeamDeployedCount(id)
{
//new tid[32];

static i;
static CsTeams:t;t = cs_get_user_team(id);
static cnt;cnt=0;

for(i = 1;i <= g_MaxPL;i++)
{
if(is_user_connected(i))
if(t == cs_get_user_team(i))
cnt += g_deployed[i];
}

return cnt;
}

bool:CheckCanTeam(id)
{
new arg[5],CsTeam:num;
get_pcvar_string(g_LCBT,arg,3);
if(equali(arg,"T"))
{
num = CsTeam:CS_TEAM_T;
}
else if(equali(arg,"CT"))
{
num = CsTeam:CS_TEAM_CT;
}
else if(equali(arg,"ALL"))
{
num = CsTeam:CS_TEAM_UNASSIGNED;
}
else
{
num = CsTeam:CS_TEAM_UNASSIGNED;
}
if(num != CsTeam:CS_TEAM_UNASSIGNED && num != CsTeam:cs_get_user_team(id))
return false;
return true;
}

bool:CanCheck(id,mode)
{
if( !get_pcvar_num( g_LENABLE ) )
{
client_print_color(id, Red, "^4%s ^3%s",CHATTAG,STR_NOTACTIVE);
return false;
}
if( get_pcvar_num(g_LACCESS) != 0)
if(!(get_user_flags(id) & ADMIN_IMMUNITY))
{
client_print_color(id, Red, "^4%s ^3%s",CHATTAG,STR_NOACCESS);
return false;
}
if(!pev_user_alive(id)) return false;
#if defined BIOHAZARD_SUPPORT
if(is_user_zombie(id))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT);
return false;
}
#endif
if (!CheckCanTeam(id))
{
client_print(id, print_chat, "%s %s",CHATTAG,STR_CBT);
return false;
}
if( mode == 0)
{
if(g_havemine[id] <= 0)
{
client_print_color(id, Red, "^4%s ^3%s",CHATTAG,STR_DONTHAVEMINE);
return false;
}
}
if (mode == 1)
{
if (get_pcvar_num(g_LBUYMODE) == 0)
{
client_print_color(id, Red, "^4%s ^3%s",CHATTAG,STR_CANTBUY);
return false;
}
if (g_havemine[id] >= get_pcvar_num(g_LAMMO))
{
client_print_color(id, Red, "^4%s ^1%s",CHATTAG,STR_HAVEMAX);
return false;
}
if (cs_get_user_money(id) < get_pcvar_num(g_LCOST))
{
client_print_color(id, Red, "^4%s ^3%s ^1(%s ^4%d^1) ",CHATTAG, STR_NOMONEY,get_pcvar_num(g_LCOST),STR_NEEDED);
return false;
}
}
if(!CheckTime(id))
{
client_print_color(id, DontChange, "^4%s ^1%s ^3%d ^1%s",CHATTAG,STR_DELAY,get_pcvar_num(g_LDELAY)-g_nowtime,STR_SECONDS);
return false;
}

return true;
}

bool:ReturnCheck( id )
{
if(!CanCheck(id,-1)) return false;
if(g_havemine[id] + 1 > get_pcvar_num(g_LAMMO)) return false;
new tgt,body,Float:vo[3],Float:to[3];
get_user_aiming(id,tgt,body);
if(!pev_valid(tgt)) return false;
pev(id,pev_origin,vo);
pev(tgt,pev_origin,to);
if(get_distance_f(vo,to) > 70.0) return false;

new EntityName[32];
pev(tgt, pev_classname, EntityName, 31);
if(!equal(EntityName, ENT_CLASS_NAME)) return false;
if(pev(tgt,LASERMINE_OWNER) != id) return false;

return true;
}

bool:CreateCheck( id )
{
if (!CanCheck(id,0)) return false;
if (g_deployed[id] >= get_pcvar_num(g_LAMMO))
{
client_print_color(id, Red, "^4%s ^3%s",CHATTAG,STR_MAXDEPLOY);
return false;
}

//client_print(id,print_chat,"[Lasermine] your team deployed %d",TeamDeployedCount(id))
if(TeamDeployedCount(id) >= get_pcvar_num(g_LTMAX))
{
client_print_color(id, Red, "^4%s ^3%s",CHATTAG,STR_MANYPPL);
return false;
}

new Float:vTraceDirection[3], Float:vTraceEnd[3],Float:vOrigin[3];

pev( id, pev_origin, vOrigin );
velocity_by_aim( id, 128, vTraceDirection );
xs_vec_add( vTraceDirection, vOrigin, vTraceEnd );

engfunc( EngFunc_TraceLine, vOrigin, vTraceEnd, DONT_IGNORE_MONSTERS, id, 0 );

new Float:fFraction,Float:vTraceNormal[3];
get_tr2( 0, TR_flFraction, fFraction );

// -- We hit something!
if ( fFraction < 1.0 )
{
// -- Save results to be used later.
get_tr2( 0, TR_vecEndPos, vTraceEnd );
get_tr2( 0, TR_vecPlaneNormal, vTraceNormal );

//get_tr2( 0, TR_pHit );

return true;
}

client_print_color(id, DontChange, "^4%s ^1%s",CHATTAG,STR_PLANTWALL)
DeleteTask(id);
// -- Did not touched something. (not solid)
return false;
}

public ltm_Think( i_Ent )
{
if ( !pev_valid( i_Ent ) )
return FMRES_IGNORED;
new EntityName[32];
pev( i_Ent, pev_classname, EntityName, 31);
if(!get_pcvar_num(g_LENABLE)) return FMRES_IGNORED;
// -- Entity is not a tripmine, ignoring the next...
if ( !equal( EntityName, ENT_CLASS_NAME ) )
return FMRES_IGNORED;

static Float:fCurrTime;
fCurrTime = get_gametime();

switch( pev( i_Ent, LASERMINE_STEP ) )
{
case POWERUP_THINK :
{
new Float:fPowerupTime;
pev( i_Ent, LASERMINE_POWERUP, fPowerupTime );

if( fCurrTime > fPowerupTime )
{
set_pev( i_Ent, pev_solid, SOLID_BBOX );
set_pev( i_Ent, LASERMINE_STEP, BEAMBREAK_THINK );

PlaySound( i_Ent, ACTIVATE_SOUND );
}
if(get_pcvar_num(g_LGLOW)!=0)
{
if(get_pcvar_num(g_LCLMODE)==0)
{
switch (pev(i_Ent,LASERMINE_TEAM))
{
case CS_TEAM_T: set_rendering(i_Ent,kRenderFxGlowShell,255,0,0,kRenderNormal,5);
case CS_TEAM_CT:set_rendering(i_Ent,kRenderFxGlowShell,0,0,255,kRenderNormal,5);
}
}else
{
set_rendering(i_Ent,kRenderFxGlowShell,0,255,0,kRenderNormal,5);
}
}
set_pev( i_Ent, pev_nextthink, fCurrTime + 0.1 );
}
case BEAMBREAK_THINK :
{
static Float:vEnd[3],Float:vOrigin[3];
pev( i_Ent, pev_origin, vOrigin );
pev( i_Ent, LASERMINE_BEAMENDPOINT, vEnd );

static iHit, Float:fFraction;
engfunc( EngFunc_TraceLine, vOrigin, vEnd, DONT_IGNORE_MONSTERS, i_Ent, 0 );

get_tr2( 0, TR_flFraction, fFraction );
iHit = get_tr2( 0, TR_pHit );

// -- Something has passed the laser.
if ( fFraction < 1.0 )
{
// -- Ignoring others tripmines entity.
if(pev_valid(iHit))
{
pev( iHit, pev_classname, EntityName, 31 );

if( !equal( EntityName, ENT_CLASS_NAME ) )
{
set_pev( i_Ent, pev_enemy, iHit );
if(get_pcvar_num(g_LMODE) == MODE_LASERMINE)
CreateLaserDamage(i_Ent,iHit);
else
if(get_pcvar_num(g_LFF) || CsTeams:pev(i_Ent,LASERMINE_TEAM) != cs_get_user_team(iHit))
set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK );

set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) );
}
}
}
if(get_pcvar_num(g_LDMGMODE)!=0)
if(pev(i_Ent,LASERMINE_HITING) != iHit)
set_pev(i_Ent,LASERMINE_HITING,iHit);

// -- Tripmine is still there.
if ( pev_valid( i_Ent ))
{
static Float:fHealth;
pev( i_Ent, pev_health, fHealth );

if( fHealth <= 0.0 || (pev(i_Ent,pev_flags) & FL_KILLME))
{
set_pev( i_Ent, LASERMINE_STEP, EXPLOSE_THINK );
set_pev( i_Ent, pev_nextthink, fCurrTime + random_float( 0.1, 0.3 ) );
}

static Float:fBeamthink;
pev( i_Ent, LASERMINE_BEAMTHINK, fBeamthink );

if( fBeamthink < fCurrTime && get_pcvar_num(g_LVISIBLE))
{
DrawLaser(i_Ent, vOrigin, vEnd );
set_pev( i_Ent, LASERMINE_BEAMTHINK, fCurrTime + 0.1 );
}
set_pev( i_Ent, pev_nextthink, fCurrTime + 0.03 );
}
}
case EXPLOSE_THINK :
{
// -- Stopping entity to think
set_pev( i_Ent, pev_nextthink, 0.0 );
PlaySound( i_Ent, STOP_SOUND );
g_deployed[pev(i_Ent,LASERMINE_OWNER)]--;
CreateExplosion( i_Ent );
CreateDamage(i_Ent,get_pcvar_float(g_LRDMG),get_pcvar_float(g_LRADIUS))
RemoveEntity ( i_Ent );
}
}

return FMRES_IGNORED;
}

PlaySound( i_Ent, i_SoundType )
{
switch ( i_SoundType )
{
case POWERUP_SOUND :
{
emit_sound( i_Ent, CHAN_VOICE, ENT_SOUND1, VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
emit_sound( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, 0, PITCH_NORM );
}
case ACTIVATE_SOUND :
{
emit_sound( i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, 1, 75 );
}
case STOP_SOUND :
{
emit_sound( i_Ent, CHAN_BODY , ENT_SOUND2, 0.2, ATTN_NORM, SND_STOP, PITCH_NORM );
emit_sound( i_Ent, CHAN_VOICE, ENT_SOUND3, 0.5, ATTN_NORM, SND_STOP, 75 );
}
}
}

DrawLaser(i_Ent, const Float:v_Origin[3], const Float:v_EndOrigin[3] )
{
new tcolor[3];
new teamid = pev(i_Ent, LASERMINE_TEAM);
if(get_pcvar_num(g_LCLMODE) == 0)
{
switch(teamid){
case 1:{
tcolor[0] = 255;
tcolor[1] = 0;
tcolor[2] = 0;
}
case 2:{
tcolor[0] = 0;
tcolor[1] = 0;
tcolor[2] = 255;
}
}
}else
{
tcolor[0] = 0;
tcolor[1] = 255;
tcolor[2] = 0;
}
message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
write_byte(TE_BEAMPOINTS);
engfunc(EngFunc_WriteCoord,v_Origin[0]);
engfunc(EngFunc_WriteCoord,v_Origin[1]);
engfunc(EngFunc_WriteCoord,v_Origin[2]);
engfunc(EngFunc_WriteCoord,v_EndOrigin[0]); //Random
engfunc(EngFunc_WriteCoord,v_EndOrigin[1]); //Random
engfunc(EngFunc_WriteCoord,v_EndOrigin[2]); //Random
write_short(beam);
write_byte(0);
write_byte(0);
write_byte(1); //Life
write_byte(5); //Width
write_byte(0); //wave
write_byte(tcolor[0]); // r
write_byte(tcolor[1]); // g
write_byte(tcolor[2]); // b
write_byte(get_pcvar_num(g_LCBRIGHT));
write_byte(255);
message_end();
}
/*
CreateDamage(iCurrent,DmgMAX,Float:Radius)
{
new AtkID = pev(iCurrent,LASERMINE_OWNER)// entity_get_int(iCurrent,LASERMINE_OWNER)
new TeamID= pev(iCurrent,LASERMINE_TEAM) //entity_get_int(iCurrent,LASERMINE_INT_TEAM)
new Player = -1;
new Float:distance,dmg;
new Float:tOrigin[3];
new Float:vOrigin[3];
new iHitHP,iHitTeam;
pev(iCurrent,pev_origin,vOrigin);
while((Player = engfunc(EngFunc_FindEntityInSphere, Player, vOrigin, Radius)) != 0)
{
if(is_user_alive(Player))
{
pev(Player,pev_origin,tOrigin)
distance = get_distance_f(vOrigin, tOrigin)
dmg = floatround(DmgMAX - ((DmgMAX / Radius) * distance))
iHitHP = pev_user_health(Player) - dmg
iHitTeam = int:bio_get_user_team(Player)
if(iHitHP <= 0)
{
if(iHitTeam != TeamID)
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY))
set_score(AtkID,Player,1,iHitHP)
}else
{
if(get_pcvar_num(g_LFF))
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY))
set_score(AtkID,Player,-1,iHitHP)
}
}
}else
{
if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
{
//set_pev(Player,pev_health,iHitHP)
set_user_health(Player, iHitHP)
message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {0,0,0}, Player)
write_byte(dmg)
write_byte(dmg)
write_long(DMG_BULLET)
engfunc(EngFunc_WriteCoord,vOrigin[0])
engfunc(EngFunc_WriteCoord,vOrigin[1])
engfunc(EngFunc_WriteCoord,vOrigin[2])
message_end()
}
}
}
Player = engfunc(EngFunc_FindEntityInSphere,Player,vOrigin,Radius)
}
return PLUGIN_CONTINUE
}
*/
CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)
{
// Get given parameters

new Float:vecSrc[3];
pev(iCurrent, pev_origin, vecSrc);

new AtkID =pev(iCurrent,LASERMINE_OWNER);
new TeamID=pev(iCurrent,LASERMINE_TEAM);

new ent = -1;
new Float:tmpdmg = DmgMAX;

new Float:kickback = 0.0;

// Needed for doing some nice calculations :P
new Float:Tabsmin[3], Float:Tabsmax[3];
new Float:vecSpot[3];
new Float:Aabsmin[3], Float:Aabsmax[3];
new Float:vecSee[3];
new trRes;
new Float:flFraction;
new Float:vecEndPos[3];
new Float:distance;
new Float:origin[3], Float:vecPush[3];
new Float:invlen;
new Float:velocity[3];
new iHitHP,iHitTeam;
// Calculate falloff
new Float:falloff;
if (Radius > 0.0)
{
falloff = DmgMAX / Radius;
} else {
falloff = 1.0;
}

// Find monsters and players inside a specifiec radius
while((ent = engfunc(EngFunc_FindEntityInSphere, ent, vecSrc, Radius)) != 0)
{
if(!pev_valid(ent)) continue;
if(!(pev(ent, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
{
// Entity is not a player or monster, ignore it
continue;
}
if(!pev_user_alive(ent)) continue;
// Reset data
kickback = 1.0;
tmpdmg = DmgMAX;

// The following calculations are provided by Orangutanz, THANKS!
// We use absmin and absmax for the most accurate information
pev(ent, pev_absmin, Tabsmin);
pev(ent, pev_absmax, Tabsmax);
xs_vec_add(Tabsmin,Tabsmax,Tabsmin);
xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);

pev(iCurrent, pev_absmin, Aabsmin);
pev(iCurrent, pev_absmax, Aabsmax);
xs_vec_add(Aabsmin,Aabsmax,Aabsmin);
xs_vec_mul_scalar(Aabsmin,0.5,vecSee);

engfunc(EngFunc_TraceLine, vecSee, vecSpot, 0, iCurrent, trRes);
get_tr2(trRes, TR_flFraction, flFraction);
// Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)
if (flFraction >= 0.9 || get_tr2(trRes, TR_pHit) == ent)
{
// Work out the distance between impact and entity
get_tr2(trRes, TR_vecEndPos, vecEndPos);

distance = get_distance_f(vecSrc, vecEndPos) * falloff;
tmpdmg -= distance;
if(tmpdmg < 0.0)
tmpdmg = 0.0;

// Kickback Effect
if(kickback != 0.0)
{
xs_vec_sub(vecSpot,vecSee,origin);

invlen = 1.0/get_distance_f(vecSpot, vecSee);

xs_vec_mul_scalar(origin,invlen,vecPush);
pev(ent, pev_velocity, velocity)
xs_vec_mul_scalar(vecPush,tmpdmg,vecPush);
xs_vec_mul_scalar(vecPush,kickback,vecPush);
xs_vec_add(velocity,vecPush,velocity);

if(tmpdmg < 60.0)
{
xs_vec_mul_scalar(velocity,12.0,velocity);
} else {
xs_vec_mul_scalar(velocity,4.0,velocity);
}

if(velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0)
{
// There's some movement todo :)
set_pev(ent, pev_velocity, velocity)
}
}

iHitHP = pev_user_health(ent) - floatround(tmpdmg)
iHitTeam = int:cs_get_user_team(ent)
if(iHitHP <= 0)
{
if(iHitTeam != TeamID)
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY))
set_score(AtkID,ent,1,iHitHP)
}else
{
if(get_pcvar_num(g_LFF))
{
cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY))
set_score(AtkID,ent,-1,iHitHP)
}
}
}else
{
if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
{
//set_pev(Player,pev_health,iHitHP)
set_user_health(ent, iHitHP)
engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent);
write_byte(floatround(tmpdmg))
write_byte(floatround(tmpdmg))
write_long(DMG_BULLET)
engfunc(EngFunc_WriteCoord,vecSrc[0])
engfunc(EngFunc_WriteCoord,vecSrc[1])
engfunc(EngFunc_WriteCoord,vecSrc[2])
message_end()
}
}
}
}

return
}

bool:pev_user_alive(ent)
{
new deadflag = pev(ent,pev_deadflag);
if(deadflag != DEAD_NO)
return false;
return true;
}

CreateExplosion(iCurrent)
{

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]);
write_short(boom);
write_byte(30);
write_byte(15);
write_byte(0);
message_end();
}

CreateLaserDamage(iCurrent,isHit)
{
if(isHit < 0 ) return PLUGIN_CONTINUE
switch(get_pcvar_num(g_LDMGMODE))
{
case 1:
{
if(pev(iCurrent,LASERMINE_HITING) == isHit)
return PLUGIN_CONTINUE
}
case 2:
{
if(pev(iCurrent,LASERMINE_HITING) == isHit)
{
static Float:cnt
static now,htime;now = floatround(get_gametime())

pev(iCurrent,LASERMINE_COUNT,cnt)
htime = floatround(cnt)
if(now - htime < get_pcvar_num(g_LDSEC))
{
return PLUGIN_CONTINUE;
}else{
set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
}
}else
{
set_pev(iCurrent,LASERMINE_COUNT,get_gametime())
}
}
}

new Float:vOrigin[3],Float:vEnd[3]
pev(iCurrent,pev_origin,vOrigin)
pev(iCurrent,pev_vuser1,vEnd)

new teamid = pev(iCurrent, LASERMINE_TEAM)

new szClassName[32]
new Alive,God
new iHitTeam,iHitHP,id
new hitscore


szClassName[0] = '^0'
pev(isHit,pev_classname,szClassName,32)

if((pev(isHit, pev_flags) & (FL_CLIENT | FL_FAKECLIENT | FL_MONSTER)))
{
Alive = pev_user_alive(isHit)
God = get_user_godmode(isHit)
if(!Alive || God) return PLUGIN_CONTINUE

iHitTeam = int:cs_get_user_team(isHit)
iHitHP = pev_user_health(isHit) - get_pcvar_num(g_LDMG)
id = pev(iCurrent,LASERMINE_OWNER)//, szNetName[32]
if(iHitHP <= 0)
{
if(iHitTeam != teamid)
{
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
hitscore = 1
cs_set_user_money(id,cs_get_user_money(id) + get_pcvar_num(g_LFMONEY))
set_score(id,isHit,hitscore,iHitHP)
}else
{
if(get_pcvar_num(g_LFF))
{
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
hitscore = -1
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LFMONEY))
set_score(id,isHit,hitscore,iHitHP)
}
}
}else if(iHitTeam != teamid || get_pcvar_num(g_LFF))
{
emit_sound(isHit, CHAN_WEAPON, ENT_SOUND4, 1.0, ATTN_NORM, 0, PITCH_NORM )
set_user_health(isHit,iHitHP)
set_pev(iCurrent,LASERMINE_HITING,isHit);

engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},isHit)
;
write_byte(get_pcvar_num(g_LDMG))
write_byte(get_pcvar_num(g_LDMG))
write_long(DMG_BULLET)
engfunc(EngFunc_WriteCoord,vOrigin[0])
engfunc(EngFunc_WriteCoord,vOrigin[1])
engfunc(EngFunc_WriteCoord,vOrigin[2])
message_end()
}
}else if(equal(szClassName, ENT_CLASS_NAME3))
{
new hl;
hl = pev_user_health(isHit);
set_user_health(isHit,hl-get_pcvar_num(g_LDMG));
}
return PLUGIN_CONTINUE
}

stock pev_user_health(id)
{
new Float:health
pev(id,pev_health,health)
return floatround(health)
}

stock set_user_health(id,health)
{
health > 0 ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id);
}

stock get_user_godmode(index) {
new Float:val
pev(index, pev_takedamage, val)

return (val == DAMAGE_NO)
}

stock set_user_frags(index, frags)
{
set_pev(index, pev_frags, float(frags))

return 1
}

stock pev_user_frags(index)
{
new Float:frags;
pev(index,pev_frags,frags);
return floatround(frags);
}

set_score(id,target,hitscore,HP){

new idfrags = pev_user_frags(id) + hitscore// get_user_frags(id) + hitscore
set_user_frags(id,idfrags)
//set_user_frags(id, idfrags)
//entity_set_float(id, EV_FL_frags, float(idfrags))

new tarfrags = pev_user_frags(target) + 1 //get_user_frags(target) + 1
set_user_frags(target,tarfrags)
//set_user_frags(target,tarfrags)
//entity_set_float(target, EV_FL_frags, float(tarfrags))

new idteam = int:cs_get_user_team(id)
new iddeaths = cs_get_user_deaths(id)


message_begin(MSG_ALL, g_msgDeathMsg, {0, 0, 0} ,0)
write_byte(id)
write_byte(target)
write_byte(0)
write_string(ENT_CLASS_NAME)
message_end()

message_begin(MSG_ALL, g_msgScoreInfo)
write_byte(id)
write_short(idfrags)
write_short(iddeaths)
write_short(0)
write_short(idteam)
message_end()

set_msg_block(g_msgDeathMsg, BLOCK_ONCE)

//entity_set_float(target, EV_FL_health,float(HP))
set_user_health(target, HP)
//set_pev(target,pev_health,HP)

}

public BuyLasermine(id)
{
if( !CanCheck(id,1) ) return PLUGIN_CONTINUE
cs_set_user_money(id,cs_get_user_money(id) - get_pcvar_num(g_LCOST))
g_havemine[id]++;
client_print_color(id, DontChange, "^4%s ^1%s",CHATTAG,STR_BOUGHT)
emit_sound(id, CHAN_ITEM, ENT_SOUND5, VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
ShowAmmo(id)
return PLUGIN_HANDLED
}

ShowAmmo(id)
{
new ammo[51]
formatex(ammo, 50, "%s %i/%i",STR_STATE, g_havemine[id],get_pcvar_num(g_LAMMO))

message_begin(MSG_ONE, g_msgStatusText, {0,0,0}, id)
write_byte(0)
write_string(ammo)
message_end()
}

public showInfo(id)
{
client_print_color(id, Red, "^4[CSDM] ^1%s ^3/lasermine",STR_REF)
}

public say_lasermine(id){
new said[32]
read_argv(1,said,31);
if( !get_pcvar_num( g_LENABLE ) ){
// client_print_color(id, Red, "^4%s ^3Lasermines are not currently active.",CHATTAG)
return PLUGIN_CONTINUE
}

if (equali(said,"/buy lasermine")||equali(said,"/lm")){
BuyLasermine(id)
}else if (equali(said, "lasermine") || equali(said, "/lasermine")){
const SIZE = 1024
new msg[SIZE+1],len = 0;
len += formatex(msg[len], SIZE - len, "<html><body>")
len += formatex(msg[len], SIZE - len, "</body></html>")
show_motd(id, msg, "Lasermine Entity help")
return PLUGIN_CONTINUE
}
else if (containi(said, "laser") != -1) {
showInfo(id)
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}

public standing(id)
{
if (!g_settinglaser[id])
return PLUGIN_CONTINUE

set_pev(id, pev_maxspeed, 1.0)
// ShowAmmo(id)

return PLUGIN_CONTINUE
}

public ltm_PostThink(id)
{
if (!g_settinglaser[id] && plsetting[id]){
resetspeed(id)
}
else if (g_settinglaser[id] && !plsetting[id]) {
pev(id, pev_maxspeed,plspeed[id])
set_pev(id, pev_maxspeed, 1.0)
}
plsetting[id] = g_settinglaser[id]
return FMRES_IGNORED
}

public ltm_PreThink(id)
{
if (!pev_user_alive(id) || g_settinglaser[id] == true || is_user_bot(id) || get_pcvar_num(g_LCMDMODE) == 1)
return FMRES_IGNORED;

if(pev(id, pev_button ) & IN_USE && !(pev(id, pev_oldbuttons ) & IN_USE ))
//client_print(id,print_chat,"test");
CreateLaserMine_Progress(id)
return FMRES_IGNORED;
}

resetspeed(id)
{
set_pev(id, pev_maxspeed, plspeed[id])
}

public client_putinserver(id){
g_deployed[id] = 0;
g_havemine[id] = 0;
DeleteTask(id);
return PLUGIN_CONTINUE
}

public client_disconnect(id){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE
DeleteTask(id);
RemoveAllTripmines(id);
return PLUGIN_CONTINUE
}


public newround(id){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE
pev(id, pev_maxspeed,plspeed[id])
DeleteTask(id);
RemoveAllTripmines(id);
delaycount(id);
SetStartAmmo(id);
return PLUGIN_CONTINUE
}

public DeathEvent(){
if(!get_pcvar_num( g_LENABLE ))
return PLUGIN_CONTINUE

new id = read_data(2)
if(is_user_connected(id)) DeleteTask(id);
return PLUGIN_CONTINUE
}

public RemoveAllTripmines( i_Owner )
{
new iEnt = g_MaxPL + 1;
new clsname[32];
while( ( iEnt = engfunc( EngFunc_FindEntityByString, iEnt, "classname", ENT_CLASS_NAME ) ) )
{
if ( i_Owner )
{
if( pev( iEnt, LASERMINE_OWNER ) != i_Owner )
continue;
clsname[0] = '^0'
pev( iEnt, pev_classname, clsname, sizeof(clsname)-1 );

if ( equali( clsname, ENT_CLASS_NAME ) )
{
PlaySound( iEnt, STOP_SOUND );
RemoveEntity( iEnt );
}
}
else
set_pev( iEnt, pev_flags, FL_KILLME );
}
g_deployed[i_Owner]=0;
}

SetStartAmmo(id)
{
new stammo = get_pcvar_num(g_LSTAMMO);
if(stammo <= 0) return PLUGIN_CONTINUE;
g_havemine[id] = (g_havemine[id] <= stammo) ? stammo : g_havemine[id];
return PLUGIN_CONTINUE;
}

public CutDeploy_onDamage(id)
{
if(get_user_health(id) < 1)
DeleteTask(id);
}

#if defined BIOHAZARD_SUPPORT
public event_infect2(id)
{
DeleteTask(id);
return PLUGIN_CONTINUE
}
#endif

DeleteTask(id)
{
if (task_exists((TASK_PLANT + id)))
{
remove_task((TASK_PLANT + id))
}
if (task_exists((TASK_RELEASE + id)))
{
remove_task((TASK_RELEASE + id))
}
g_settinglaser[id] = false
return PLUGIN_CONTINUE;
}

stock set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
static Float:RenderColor[3];
RenderColor[0] = float®;
RenderColor[1] = float(g);
RenderColor[2] = float(b);

set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));

return 1
}

// Gets offset data
get_offset_value(id, type)
{
new key = -1;
switch(type)
{
case OFFSET_TEAM: key = OFFSET_TEAM;
case OFFSET_MONEY:
{
#if defined UL_MONEY_SUPPORT
return cs_get_user_money_ul(id);
#else
key = OFFSET_MONEY;
#endif
}
case OFFSET_DEATH: key = OFFSET_DEATH;
}

if(key != -1)
{
if(is_amd64_server()) key += 25;
return get_pdata_int(id, key);
}

return -1;
}

// Sets offset data
set_offset_value(id, type, value)
{
new key = -1;
switch(type)
{
case OFFSET_TEAM: key = OFFSET_TEAM;
case OFFSET_MONEY:
{
#if defined UL_MONEY_SUPPORT
return cs_set_user_money_ul(id, value);
#else
key = OFFSET_MONEY;

// Send Money message to update player's HUD
message_begin(MSG_ONE_UNRELIABLE, g_msgMoney, {0,0,0}, id);
write_long(value);
write_byte(1); // Flash (difference between new and old money)
message_end();
#endif
}
case OFFSET_DEATH: key = OFFSET_DEATH;
}

if(key != -1)
{
if(is_amd64_server()) key += 25;
set_pdata_int(id, key, value);
}

return PLUGIN_CONTINUE;
}




P.S. Плагин с оленей.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 18:23
Сообщение #2


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата
Имеются лазерные мины, все вроде бы хорошо, но вот есть в них баг: если установить лазер на респавне, при появление игрока его убивает ~7-10 раз, тоесть человек установивший лазер получает с одного убийства несколько фрагов.


Я предалгаю в этой или любой другой теме скинуться всеми желающими деньгами и заказать наконец-то уже достойные мины на МЕТАМОДЕ, чтоб снизить нагрузку! Кто за? Тут будем обсуждать или лучше пойти тему создать?
Жаль, что Бос уже ушёл от нас на время, а ведь он хотел осенью писать ПУШКИ (Сентри) И Мины на метамоде...

Вообщем, кому интересны мины и скидывание деньгами на их заказ?
Исходниками будут владеть заказчики естественно (можно даже привязку по ИР).

Я уже давно планирую написать грандиозный заказ по минам, но руки пока заняты, да и пушки на метамоде, на мин пока нет, но есть мой древний заказ на пушки, который я подправлю позже:
https://c-s.net.ua/forum/topic46344.html

Отредактировал: intercs, - 5.6.2013, 18:27
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 5.6.2013, 18:42
Сообщение #3


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

Не сказал бы, что сильно они грузят. Мне и на amx нравится, только баг исправить.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 18:52
Сообщение #4


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Хз я успел насчёт мин пообщаться со многими скриптерами, и все разом заявляли (денег и ТЗ я в тот момент не предлагал), что надо мины полностью переписать опытным скриптерам, т.к. в паблике до сих пор кружат лагнутые всеми фиксенные мины...

Предлагали:
1) Либо заного переписать на закрытом форуме для своих.
2) Либо писать на метамоде.

Но информировали, что лучше для своих и наметамоде...

Так, что может дружно скинемся и сделаем заказ на мины и распишем по пунктм норм?
--------------------------------------------------

Т.к. я всё равно, если никто не захочет скинутсья человек этак 20 по 100-300 рублей, то я всё равно закажу потом мины на метамоде...
Я вообще считаю, что надо найти заинтересованных людей - вкладчиков разных, кому интересно это = вложился = получил исходники. И тд. Тем самым нам всем будет легче осуществлять новые задумки совместно... Главное, чтоб потом в паблик не слили.

Лично у меня в команде уже есть 4 человека, готовых скидываться на заказы, которые им интересны на данном этапе. М?
Ну толку мы - все сидим и по крапульке ковыряем эти лагнутые пабликовские (или кривоприватные) мины?


Мины мне пояснили надо писать опытным кодерам... Как и норм пушки с адекватным и не нагружающим ЦПУ и без проседания памяти выстрелом ракетой во время стрельбы пушки по противнкику на 3 лвле.

Отредактировал: intercs, - 5.6.2013, 18:55
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 5.6.2013, 19:02
Сообщение #5


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

Мне таких крутых наворотов не нужно, я не люблю вары, зомби и т.п. Мне на ДМ нужно.

Хм... Что же они такого вам пообещали за 3-5к?
Кроме тоже что это будет под метамод.

Отредактировал: Johnny, - 5.6.2013, 19:02
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 19:11
Сообщение #6


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата(Johnny @ 5.6.2013, 21:02) *
Мне таких крутых наворотов не нужно, я не люблю вары, зомби и т.п. Мне на ДМ нужно.

Хм... Что же они такого вам пообещали за 3-5к?
Кроме тоже что это будет под метамод.


Там будут ещё и пушки-) Но это пока в планах, лень переписывать заказы на ТЗ-)
Я итак уже назаказывал у всех, что пора пока остановиться и собрать все заказы по частям. А то хз куда деньги дел-)))

Так и мне надо на КСДМ тоже. У нас общие идеи! Я готов скинуться за норм мины для КСДМ сервера-)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 5.6.2013, 19:19
Сообщение #7


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

intercs,
Я готов подписаться только под переписку лазеров, хоть под метамод, хоть под амх.
Относительно лазеров, вас какойто дополнительный функционал интересует?
Лично мне, максимум нужно ограничить разрушение лазеров товарищами по команде, исправить баг описанный в шапке темы и можно еще выводить худ о создателе и здоровье.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 19:22
Сообщение #8


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата
Имеются лазерные мины, все вроде бы хорошо, но вот есть в них баг: если установить лазер на респавне, при появление игрока его убивает ~7-10 раз, тоесть человек установивший лазер получает с одного убийства несколько фрагов.

Подскажите, как решить данную проблему.


Теперь по теме.
Вообщем мы со многими на амх-х (не реклама) уже ковыряли этот случай и оказалось, что причина не в минах, а в самих сборках КСДМ от Балабан...
Т.е. у него не предусмотренно где-то 0.1 доли секунды бесмертия в момент респауна и в этот момент чевек якобы становится уязвим в эту 0.1 сек. времени.

Мне скриптер ради теста, написал корявые мины, но с основой на обход этого бага в КСДМ от балабана.
В итоге иногда мины бывает не сразу убивают в момент респауна, но чаще всё-равно убивают.
Вообщем в итоге, если появился возле луча и ты бессмертен там сек 3-5, то пробегая мимо луча с этими минами тебя не убьёт, но при респауне попав сразу на луч = убивает очень часто.


Вообщем, поэтому-то я и заказываю за 4500 у одного админа этого форума (попросил не разглашать) КСДМ сборку новую...

Вот мои кривые мины:

ИСХОДНИК МОИХ МИН
Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <cstrike>
#include <engine>
#include <xs>

#define LASERMINE_TEAM pev_iuser1
#define LASERMINE_OWNER pev_iuser2
#define LASERMINE_STEP pev_iuser3
#define LASERMINE_POWERUP pev_fuser1
#define LASERMINE_BEAMTHINK pev_fuser2
#define LASERMINE_BEAMENDPOINT pev_vuser1

#define LASERMINE_CLASSNAME "LaserMine"

new g_iDeployed[33];

new g_msgSayText;
new g_msgDeathMsg;

public plugin_init()
{
register_plugin("LaserMine", "Best", "SandStriker / fl0wer")

register_clcmd("+setlaser", "ClCmdSetLM")

register_think(LASERMINE_CLASSNAME, "FwdThink")

RegisterHam(Ham_Spawn, "player", "FwdSpawnPost", 1)
RegisterHam(Ham_Killed, "info_target", "FwdKilled")
RegisterHam(Ham_TakeDamage, "info_target", "FwdTakeDamage")

g_msgSayText = get_user_msgid("SayText");
g_msgDeathMsg = get_user_msgid("DeathMsg");
}

public plugin_precache()
{
precache_sound("weapons/mine_deploy.wav")
precache_sound("weapons/mine_charge.wav")
precache_sound("weapons/mine_activate.wav")
precache_sound("debris/beamstart9.wav")
precache_model("models/v_tripmine.mdl")
}

public client_disconnect(pPlayer) RemoveAllTripmines(pPlayer)

public ClCmdSetLM(pPlayer)
{
if(!is_user_alive(pPlayer))
return PLUGIN_HANDLED;

if(get_pdata_float(pPlayer, 83) > 0.0)
return PLUGIN_HANDLED;

if(g_iDeployed[pPlayer] >= 1)
{
MessageSayText(pPlayer, "^x04[LaserMine] ^x01Maximum mines have been deployed.")
return PLUGIN_HANDLED;
}

if(cs_get_user_money(pPlayer) < 500)
{
MessageSayText(pPlayer, "^x04[LaserMine] ^x01You don't have enough money to buy a lasermine! ($500 needed)")
return PLUGIN_HANDLED;
}

new Float:vecDirection[3], Float:vecTraceEnd[3], Float:vecOrigin[3];
pev(pPlayer, pev_origin, vecOrigin)

velocity_by_aim(pPlayer, 128, vecDirection)
xs_vec_add(vecDirection, vecOrigin, vecTraceEnd)

engfunc(EngFunc_TraceLine, vecOrigin, vecTraceEnd, DONT_IGNORE_MONSTERS, pPlayer, 0)

new Float:flFraction, Float:vecTraceNormal[3];
get_tr2(0, TR_flFraction, flFraction)

if(flFraction < 1.0)
{
get_tr2(0, TR_vecEndPos, vecTraceEnd)
get_tr2(0, TR_vecPlaneNormal, vecTraceNormal)

cs_set_user_money(pPlayer, cs_get_user_money(pPlayer) - 500, 1)
TaskSpawn(pPlayer)
return PLUGIN_HANDLED;
}

MessageSayText(pPlayer, "^x04[LaserMine] ^x01You must plant the lasermine on a wall!")
return PLUGIN_HANDLED;
}

public TaskSpawn(pPlayer)
{
new pEntity;
static iszAllocStringCached;

if(iszAllocStringCached || (iszAllocStringCached = engfunc(EngFunc_AllocString, "info_target")))
pEntity = engfunc(EngFunc_CreateNamedEntity, iszAllocStringCached);

if(!pev_valid(pEntity))
return;

set_pev(pEntity, pev_classname, LASERMINE_CLASSNAME)
set_pev(pEntity, pev_solid, SOLID_NOT)
set_pev(pEntity, pev_movetype, MOVETYPE_FLY)
set_pev(pEntity, pev_frame, 0)
set_pev(pEntity, pev_body, 3)
set_pev(pEntity, pev_sequence, 7)
set_pev(pEntity, pev_framerate, 0)
set_pev(pEntity, pev_takedamage, DAMAGE_YES)
set_pev(pEntity, pev_dmg, 100.0)
set_pev(pEntity, pev_health, 500.0)
set_pev(pEntity, LASERMINE_OWNER, pPlayer)

engfunc(EngFunc_SetModel, pEntity, "models/v_tripmine.mdl")

new Float:vecOrigin[3], Float:vecNewOrigin[3], Float:vecNormal[3], Float:vecDirection[3], Float:vecTraceEnd[3], Float:vecEntAngles[3];
pev(pPlayer, pev_origin, vecOrigin)
velocity_by_aim(pPlayer, 128, vecDirection)
xs_vec_add(vecDirection, vecOrigin, vecTraceEnd)

engfunc(EngFunc_TraceLine, vecOrigin, vecTraceEnd, DONT_IGNORE_MONSTERS, pPlayer, 0)

new Float:flFraction;
get_tr2(0, TR_flFraction, flFraction)

if(flFraction < 1.0)
{
get_tr2(0, TR_vecEndPos, vecTraceEnd)
get_tr2(0, TR_vecPlaneNormal, vecNormal)
}

xs_vec_mul_scalar(vecNormal, 8.0, vecNormal)
xs_vec_add(vecTraceEnd, vecNormal, vecNewOrigin)

engfunc(EngFunc_SetSize, pEntity, Float:{ -8.0, -8.0, -8.0 }, Float:{ 8.0, 8.0, 8.0 })
engfunc(EngFunc_SetOrigin, pEntity, vecNewOrigin)

vector_to_angle(vecNormal, vecEntAngles)
set_pev(pEntity, pev_angles, vecEntAngles)

new Float:vecBeamEnd[3], Float:vecTracedBeamEnd[3];
xs_vec_mul_scalar(vecNormal, 8192.0, vecNormal)
xs_vec_add(vecNewOrigin, vecNormal, vecBeamEnd)

engfunc(EngFunc_TraceLine, vecNewOrigin, vecBeamEnd, IGNORE_MONSTERS, -1, 0)

get_tr2(0, TR_vecPlaneNormal, vecNormal)
get_tr2(0, TR_vecEndPos, vecTracedBeamEnd)

set_pev(pEntity, LASERMINE_BEAMENDPOINT, vecTracedBeamEnd)
set_pev(pEntity, LASERMINE_TEAM, get_pdata_int(pPlayer, 114))

new Float:flGameTime = get_gametime();

set_pev(pEntity, LASERMINE_POWERUP, flGameTime + 2.5)
set_pev(pEntity, LASERMINE_STEP, 0)
set_pev(pEntity, pev_nextthink, flGameTime + 0.2)

g_iDeployed[pPlayer]++;

emit_sound(pEntity, CHAN_VOICE, "weapons/mine_deploy.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
emit_sound(pEntity, CHAN_BODY, "weapons/mine_charge.wav", 0.2, ATTN_NORM, 0, PITCH_NORM)
}

public FwdThink(pEntity)
{
if(!pev_valid(pEntity))
return;

static Float:flGameTime;
flGameTime = get_gametime();

switch(pev(pEntity, LASERMINE_STEP))
{
case 0:
{
new Float:flPowerUpTime;
pev(pEntity, LASERMINE_POWERUP, flPowerUpTime)

if(flGameTime > flPowerUpTime)
{
set_pev(pEntity, LASERMINE_STEP, 1)
set_pev(pEntity, pev_solid, SOLID_BBOX)

emit_sound(pEntity, CHAN_VOICE, "weapons/mine_activate.wav", 0.5, ATTN_NORM, 1, 75)
}

set_pev(pEntity, pev_nextthink, flGameTime + 0.1)
}
case 1:
{
static Float:vecEnd[3],Float:vecOrigin[3];
pev(pEntity, pev_origin, vecOrigin)
pev(pEntity, LASERMINE_BEAMENDPOINT, vecEnd)

static iHit, Float:flFraction;
engfunc(EngFunc_TraceLine, vecOrigin, vecEnd, DONT_IGNORE_MONSTERS, pEntity, 0)

get_tr2(0, TR_flFraction, flFraction)
iHit = get_tr2(0, TR_pHit);

if(flFraction < 1.0)
{
if(pev_valid(iHit))
{
static szClassName[32];
pev(iHit, pev_classname, szClassName, charsmax(szClassName))

if(equal(szClassName, "player"))
{
get_tr2(0, TR_vecEndPos, vecEnd)

if(is_user_alive(iHit) && pev(iHit, pev_takedamage))
{
if(pev(pEntity, LASERMINE_TEAM) != get_pdata_int(iHit, 114))
{
emit_sound(iHit, CHAN_WEAPON, "debris/beamstart9.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

new pOwner = pev(pEntity, LASERMINE_OWNER);

message_begin(MSG_ALL, g_msgDeathMsg, _, 0)
write_byte(pOwner)
write_byte(iHit)
write_byte(0)
write_string("lasermine")
message_end()

set_msg_block(g_msgDeathMsg, BLOCK_SET)
ExecuteHamB(Ham_Killed, iHit, pOwner, 0)
set_msg_block(g_msgDeathMsg, BLOCK_NOT)

set_pev(pEntity, pev_nextthink, flGameTime + 0.2)
}
}
}
}
}

static Float:flBeamThink;
pev(pEntity, LASERMINE_BEAMTHINK, flBeamThink)

if(flBeamThink < flGameTime)
{
static iSpriteLaserBeam;

if(iSpriteLaserBeam || (iSpriteLaserBeam = engfunc(EngFunc_ModelIndex, "sprites/laserbeam.spr")))
{
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMPOINTS)
engfunc(EngFunc_WriteCoord, vecOrigin[0])
engfunc(EngFunc_WriteCoord, vecOrigin[1])
engfunc(EngFunc_WriteCoord, vecOrigin[2])
engfunc(EngFunc_WriteCoord, vecEnd[0])
engfunc(EngFunc_WriteCoord, vecEnd[1])
engfunc(EngFunc_WriteCoord, vecEnd[2])
write_short(iSpriteLaserBeam)
write_byte(0)
write_byte(0)
write_byte(1)
write_byte(5)
write_byte(0)
switch(pev(pEntity, LASERMINE_TEAM))
{
case 1:
{
write_byte(255)
write_byte(0)
write_byte(0)
}
case 2:
{
write_byte(0)
write_byte(0)
write_byte(255)
}
}
write_byte(100)
write_byte(255)
message_end()

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_SPARKS)
engfunc(EngFunc_WriteCoord, vecEnd[0])
engfunc(EngFunc_WriteCoord, vecEnd[1])
engfunc(EngFunc_WriteCoord, vecEnd[2])
message_end()

set_pev(pEntity, LASERMINE_BEAMTHINK, flGameTime + 0.1)
}
}

set_pev(pEntity, pev_nextthink, flGameTime + 0.01)
}
}
}

public FwdSpawnPost(pPlayer)
{
if(!is_user_alive(pPlayer))
return;

RemoveAllTripmines(pPlayer)
}

public FwdKilled(pEntity)
{
if(!pev_valid(pEntity))
return;

new szClassName[32];
pev(pEntity, pev_classname, szClassName, charsmax(szClassName))

if(!equal(szClassName, LASERMINE_CLASSNAME))
return;

emit_sound(pEntity, CHAN_BODY, "weapons/mine_charge.wav", 0.2, ATTN_NORM, SND_STOP, PITCH_NORM)
emit_sound(pEntity, CHAN_VOICE, "weapons/mine_activate.wav", 0.5, ATTN_NORM, SND_STOP, 75)

new pOwner = pev(pEntity, LASERMINE_OWNER);

g_iDeployed[pOwner]--;

new Float:vecOrigin[3];
pev(pEntity, pev_origin, vecOrigin)

message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_KILLBEAM)
write_short(pEntity)
message_end()

new iExplosionEntity;
static iszAllocStringCached;

if(iszAllocStringCached || (iszAllocStringCached = engfunc(EngFunc_AllocString, "env_explosion")))
{
if(pev_valid((iExplosionEntity = engfunc(EngFunc_CreateNamedEntity, iszAllocStringCached))))
{
set_pev(iExplosionEntity, pev_origin, vecOrigin)
set_pev(iExplosionEntity, pev_spawnflags, SF_ENVEXPLOSION_NODAMAGE)

DispatchKeyValue(iExplosionEntity, "iMagnitude", "050")
DispatchSpawn(iExplosionEntity)

force_use(iExplosionEntity, iExplosionEntity)
}
}
}

public FwdTakeDamage(pVictim, pInflictor, pAttacker)
{
new szClassName[32];
pev(pVictim, pev_classname, szClassName, charsmax(szClassName))

if(!equal(szClassName, LASERMINE_CLASSNAME))
return HAM_IGNORED;

if(pev(pVictim, LASERMINE_TEAM) != get_pdata_int(pAttacker, 114))
return HAM_IGNORED;

if(pev(pVictim, LASERMINE_OWNER) != pAttacker)
return HAM_SUPERCEDE;

return HAM_IGNORED;
}

RemoveAllTripmines(pPlayer)
{
new szClassName[32];

static pEntity;
pEntity = -1;

while((pEntity = engfunc(EngFunc_FindEntityByString, pEntity, "classname", LASERMINE_CLASSNAME)))
{
if(pPlayer)
{
if(pev(pEntity, LASERMINE_OWNER) != pPlayer)
continue;

pev(pEntity, pev_classname, szClassName, charsmax(szClassName))

if(equal(szClassName, LASERMINE_CLASSNAME))
{
emit_sound(pEntity, CHAN_BODY, "weapons/mine_charge.wav", 0.2, ATTN_NORM, SND_STOP, PITCH_NORM)
emit_sound(pEntity, CHAN_VOICE, "weapons/mine_activate.wav", 0.5, ATTN_NORM, SND_STOP, 75)

engfunc(EngFunc_RemoveEntity, pEntity)
}
}
else
set_pev(pEntity, pev_flags, FL_KILLME)
}

g_iDeployed[pPlayer] = 0;
}

MessageSayText(pPlayer, szMessage[])
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, pPlayer)
write_byte(pPlayer)
write_string(szMessage)
message_end()
}


А вот тема на КСДМ, вдруг кто захочет сложится для получения будущих исходников-)
ТЕМА:
https://c-s.net.ua/forum/topic51732s0.html?...mp;#entry427473

==========================
ИТОГ: ПРОБЛЕМА НЕ В МИНАХ, А В КСДМ ОТ БАЛАБАНА! Нафиг его КСДМ лагучий и навороченный, лучше простой написать и без багов.

Отредактировал: intercs, - 5.6.2013, 19:26
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 5.6.2013, 19:56
Сообщение #9


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

intercs,
Хм.. Интересно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 20:03
Сообщение #10


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Я не умничаю и не хочу показаться всезнайком и всезнающих скритперов, но часто переписываюсь в лички. Балабану передали это, но он положил х на исправление этого бага. Сказали сейчас не до этого ему.
Поэтому я открыто заявляю, что возможно мины и можно создать нормальные для обхода этого бага, но а смысл?
Я проще не стал париться с этим лагучим и нагружнным ксдм бу балабан, и тупо решил заказать свою мини-сборку КСДМа под свои нужды с новыми пушками, чем дальше пользоваться КСДМ от балабана, 80% функций которых нафиг не нужны и ещё этот тупорылый /respawn уже изнасиловал!) Ну нет бы сделал сразу автовход в игру на : спектр и 6 из спектра, чем ставить отдельные для этого плагины, которые из-за ксдм - тоже криво пашут.

Я окончательно решил похоронить для себя в будущем КСДМ от балабана. Дебильный мод. Столько нерв я потратил, пока понял, что это не баги разные во многих плагинах, а баги в самом ксдм балабан.

Отредактировал: intercs, - 5.6.2013, 20:06
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 5.6.2013, 20:19
Сообщение #11


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

intercs,
На сколько я в курсе есть успешные фиксы, по крайне мере я ни разу не замечал такого бага у Редлайна и Миррора.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 21:18
Сообщение #12


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

так это фикс под подстройку КСДМА от балабан. Т.е. там может быть тоже кривизна на проверки, т.к. я хз с этими подстроениями одного плагина под другой, а 3-й работает вообще за счёт 4-го и тд.

Надоел уже балабан в стране.

Я так понимаю они делиться минами с нами не будут?) Я угрожаю им 300 рублями или эти угрозы для их мин весьма смешны и они вправе кинуть исходником в лицо?)

Отредактировал: intercs, - 5.6.2013, 21:20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 5.6.2013, 21:31
Сообщение #13


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

Я нашел фикс. Я думал об этом, но все выше изложенное подтолкнуло меня на решение проблемы.
Проблема заключалась в том, что у меня была отключена защита при респавне вообще. Я установил защиту на 0.50 секунд и вуаля) Бага больше нет. Так что думаю не стоит всетаки так сильно ругать Баилопана.)

Отредактировал: Johnny, - 5.6.2013, 21:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 21:46
Сообщение #14


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата(Johnny @ 5.6.2013, 23:31) *
Я нашел фикс. Я думал об этом, но все выше изложенное подтолкнуло меня на решение проблемы.
Проблема заключалась в том, что у меня была отключена защита при респавне вообще. Я установил защиту на 0.50 секунд и вуаля) Бага больше нет. Так что думаю не стоит всетаки так сильно ругать Балабана.)


Сек. потестируй лучше-) Там когда как в итоге происходит. Когда ты при респавне попадаешь под луч, то в 2-х случаях из 10 тебя убьёт... Тестани и дай знать...

Т.к. у меня стоит бессмертие в 3 секунды и меня ошарашил такой бредово-матский способ защиты игрока в 0.50 сек-))) Ну балабан колбас балобас-)

Отредактировал: intercs, - 5.6.2013, 21:47
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя RedL1ne
сообщение 5.6.2013, 21:49
Сообщение #15


Стаж: 15 лет

Сообщений: 3828
Благодарностей: 1854
Полезность: 876

Какого такого балабана? Случаем не баилопана? У последнего таки эталонный ксдм.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 21:51
Сообщение #16


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата(RedL1ne @ 5.6.2013, 23:49) *
Какого такого балабана? Случаем не баилопана? У последнего таки эталонный ксдм.


ёлки палки, надо поспать после работы-))) Баилопана))))
Балобан это человек, который написал защиту вроде там какую-то-)))
Сорри за мой IQ 25.

Ну ппц от меня заразились и уже 2 страницу унижаем балабана)))))) Он в эту тему зайдёт и будет 2 дня в ступоре...

Отредактировал: intercs, - 5.6.2013, 21:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Cracky
сообщение 5.6.2013, 22:00
Сообщение #17


Стаж: 15 лет

Сообщений: 768
Благодарностей: 197
Полезность: 506

Объясните мне связь между багами и нагрузкой.
Что за метамод мода пошла? метамод ХУЖЕ!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 5.6.2013, 22:02
Сообщение #18


Стаж: 13 лет

Сообщений: 2470
Благодарностей: 1086
Полезность: 515

RedL1ne,
Сорри, Баилопана.

intercs,
Минут двадцать тестил 2-3 лазера на респавнах, результат отличный. Заметно было и по фрагам игроков, обычно за 5-10 минут таким маневром набегало по 60-100 фрагов.

Cracky,
Не знаю, не замечал я за лазерами большой нагрузки... Все стабильно и оптимально.

Отредактировал: Johnny, - 5.6.2013, 22:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 5.6.2013, 22:08
Сообщение #19


Стаж: 13 лет

Сообщений: 727
Благодарностей: 408
Полезность: 504

Цитата(Johnny @ 6.6.2013, 0:02) *
RedL1ne,
Сорри, Баилопана.

intercs,
Минут двадцать тестил 2-3 лазера на респавнах, результат отличный. Заметно было и по фрагам игроков, обычно за 5-10 минут таким маневром набегало по 60-100 фрагов.


Пойду тоже ставить 0.50 и тестить! Я в шоке! Всё равно наверняка виноват всё же балабан (шутка сорри)!)))

Цитата(Cracky @ 6.6.2013, 0:00) *
Объясните мне связь между багами и нагрузкой.
Что за метамод мода пошла? метамод ХУЖЕ!

Хз у нас на селе, все так говорят, если грамотного тракториста найти, то он на метамоде сможет сверстать по пьяни плагин - козу на возу на отваре пчелиной маточки...

Отредактировал: intercs, - 5.6.2013, 22:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 5.6.2013, 23:32
Сообщение #20
Стаж: 16 лет

Сообщений: 8181
Благодарностей: 2709
Полезность: 0

мины лагают изза thinkoв / ставьте больше, там хоть 300 можно мин поставить и лагов не будет, лично проверял
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 3 гостей читают эту тему: