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

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

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

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

2 страниц V   1 2

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

Статус пользователя intercs
сообщение 5.6.2013, 23:36
Сообщение #21


Стаж: 13 лет

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

Цитата(cs-portal @ 6.6.2013, 1:32) *
мины лагают изза thinkoв / ставьте больше, там хоть 300 можно мин поставить и лагов не будет, лично проверял


СЕК...

Что именно надо сделать с этими тхинками и где?

Скрытый текст
Код:
#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()
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Cracky
сообщение 5.6.2013, 23:46
Сообщение #22


Стаж: 15 лет

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

Цитата(intercs @ 5.6.2013, 23:36) *
СЕК...

Что именно надо сделать с этими тхинками и где?

Засунуть их скриптеру в одно место и придумать как изменить алгоритм чтобы не юзать prethink и прочие think, ибо вызываются они каждый кадр/цикл/фрейм/геймлюп т.е в твоем случае вроде бы pev_nextthink

Цитата(Johnny @ 5.6.2013, 22:02) *
Cracky,
Не знаю, не замечал я за лазерами большой нагрузки... Все стабильно и оптимально.

Я помоему и сказал что метамод хуже amxx плагина, не?

Цитата(intercs @ 5.6.2013, 22:08) *
Хз у нас на селе, все так говорят, если грамотного тракториста найти, то он на метамоде сможет сверстать по пьяни плагин - козу на возу на отваре пчелиной маточки...

... который будет рассыпаться по дороге (читай как утечка памяти) которую ты будешь искать потом неделю. Я уже говорил про не кроссплатформенность? ну значит уже сказал. Ах ну и конечно же не совместимость с amxx плагинами.
Я уже говорил что заказывать доработку придется скорее всего у того же человека? ну значит уже сказал.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 6.6.2013, 2:00
Сообщение #23
Стаж: 16 лет

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

да все верно. то что вызывается каждый фрейм грузит но think вызывается так часто как ты укажешь в коде, поетому и нужно его облегчить
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 6.6.2013, 7:00
Сообщение #24


Стаж: 13 лет

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

Cracky,
Я помойму не утверждал обратного. Я не скриптер, тем более в области hlds. Поэтому не знаю, что лучше, метамод или амх. Если не трудно просвятите и буду знать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
cs-portal
сообщение 6.6.2013, 7:51
Сообщение #25
Стаж: 16 лет

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

metamod > dll быстрее работает, немного натянутый пример для сравнения, блокировать ддос на уровне компа или дц
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 6.6.2013, 8:37
Сообщение #26


Стаж: 13 лет

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

Так метамод для кс 1.6 это хорошо или плохо в сравнии с павн?

Многие трактуют, что если норм написать .дллку, то будет летать.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DraconKCH
сообщение 6.6.2013, 13:02
Сообщение #27
Стаж: 17 лет

Сообщений: 156
Благодарностей: 74
Полезность: 373

О чём вы? Сравниваете amxmodx с метамодом? Amxmodx это плагин для метамода... как их можно сравнивать? Вы сейчас говорите что руль в автомобиле лучше движка в техническом смысле...

p.s. Если фиксить существующий плагин, то можно регать спавн игрока, брать значение квара из ксдм, который отвечает за неуязвимость и блочить урон на эти секунды. Или я туплю?

Отредактировал: DraconKCH, - 6.6.2013, 13:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя intercs
сообщение 6.6.2013, 14:56
Сообщение #28


Стаж: 13 лет

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

Цитата(DraconKCH @ 6.6.2013, 15:02) *
О чём вы? Сравниваете amxmodx с метамодом? Amxmodx это плагин для метамода... как их можно сравнивать? Вы сейчас говорите что руль в автомобиле лучше движка в техническом смысле...

p.s. Если фиксить существующий плагин, то можно регать спавн игрока, брать значение квара из ксдм, который отвечает за неуязвимость и блочить урон на эти секунды. Или я туплю?


Так, чего мы все надрываем пердак?)

Писать плагины напрямую на метамоде это лучше в плане минимизирования нагрузок на цпу и проседания памяти?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя RedL1ne
сообщение 6.6.2013, 16:00
Сообщение #29


Стаж: 15 лет

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

DraconKCH,
Сравнение неудачное.

Если сравнивать одинаковый Плагин на метамоде и на амиксе, первый будет в любом случае лучше. Поскольку, убирается лишняя прослойка в виде амикса по работе с движком сервера.

Вообще идеальный вариант это работа с дллками движка (например патчи фиксов), но там куда все сложнее и тех кто таким занимается куда меньше, чем даже с метамодом.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Cracky
сообщение 6.6.2013, 21:46
Сообщение #30


Стаж: 15 лет

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

Цитата(intercs @ 6.6.2013, 9:37) *
Так метамод для кс 1.6 это хорошо или плохо в сравнии с павн?

Многие трактуют, что если норм написать .дллку, то будет летать.

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

Цитата(intercs @ 6.6.2013, 15:56) *
Писать плагины напрямую на метамоде это лучше в плане минимизирования нагрузок на цпу и проседания памяти?

И образования утечек, а также несовместимостей с amxx плагинами, не говоря уже о ценах, vendor lockin (это значит что наврятли другой метамод кодер будет тебе переписывать, придется все переделки у одного заказывать)
Чего на спичках экономим? amxx плагины работают с нормальной скоростью, выигрыш в 8 цифре после запятой не существенен. Ну будет оно "летать", а потом будешь ругаться куда сервер память девает, где найти скриптера, и как это все самому скомпилить. Не говоря уже о том что самостоятельно отредактировать плагин amxx проще.

Цитата(RedL1ne @ 6.6.2013, 17:00) *
Если сравнивать одинаковый Плагин на метамоде и на амиксе, первый будет в любом случае лучше. Поскольку, убирается лишняя прослойка в виде амикса по работе с движком сервера.

Чем же лучше? в скорости? на спичках экономим? amxx это не прослойка в работе с движком сервера, это фреймворк и куча готовых плагинов и инклюдов.

Цитата(RedL1ne @ 6.6.2013, 17:00) *
Вообще идеальный вариант это работа с дллками движка (например патчи фиксов), но там куда все сложнее и тех кто таким занимается куда меньше, чем даже с метамодом.

Метамод это и есть прослойка между метамод плагином и дллками движка.


PS. Плагины на метамоде оправдано писать только в случае реально высоких нагрузок, например боты, мобы, боссы, т.е там где каждый кадр происходит коллосальное количество вычислений. Все остальное это маркетинговый пшик.

Отредактировал: Cracky, - 6.6.2013, 21:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DraconKCH
сообщение 7.6.2013, 7:10
Сообщение #31
Стаж: 17 лет

Сообщений: 156
Благодарностей: 74
Полезность: 373

Если так попробовать?
Время защиты
new Float:ProtectTime = 2.0
в секундах
Время защиты считается от смерти игрока, т.е. учитывайте если у вас идёт время на спавн, прибавляйте сюда же.
Метод прямолинейный, на гуру скриптинга не претендую.
Прикрепленные файлы:
Прикрепленный файл  lasermine_0231.sma ( 39,37 килобайт ) Кол-во скачиваний: 10
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 7.6.2013, 7:22
Сообщение #32


Стаж: 13 лет

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

DraconKCH,
Легче защищать на спавне 0.45 секунд, бага нет, но игроки успевают за это время убежать от лазера, но думаю, так даже лучше.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя StasL
сообщение 7.6.2013, 10:22
Сообщение #33
Стаж: 13 лет

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

иногда ставят прям под ноги, сдвинуться не возможно, только начинаешь стрелять и сразу тебя раз 50 а иногда в разы больше убивает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 7.6.2013, 10:31
Сообщение #34


Стаж: 13 лет

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

StasL,
У меня сейчас такого не наблюдается, если игрок не успевает соскачить от лазера, то его убивает по нормальному, один раз.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя DraconKCH
сообщение 8.6.2013, 8:15
Сообщение #35
Стаж: 17 лет

Сообщений: 156
Благодарностей: 74
Полезность: 373

Цитата(Johnny @ 7.6.2013, 11:22) *
DraconKCH,
Легче защищать на спавне 0.45 секунд, бага нет, но игроки успевают за это время убежать от лазера, но думаю, так даже лучше.

это понятно, но в предыдущих постах писали, что защита в момент респа не помогает, так как в 0.1-ую секунду респы защиты нет. Поэтому решил использовать уже существующий эвент смерти игрока и защищать его заранее, при чём это касается только мин. Я так понял что никто особо и не тестил... ну ладно =)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Johnny
сообщение 8.6.2013, 8:18
Сообщение #36


Стаж: 13 лет

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

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