Здравствуйте.
Сразу к сути. Использую эту версию мода (ниже код)
Код:
Код
#include <amxmodx>
#include <hamsandwich>
#include <fun>
#define PLUGIN "Knife DM"
#define AUTHOR "TunoK`~"
#define VERSION "1.0"
#define SPAWN_SECOND 1.0//время в сек. через сколько произойдет возрождение (время обязательно в десятичных)
static szMap[32]
public plugin_init()
{
register_plugin(PLUGIN, AUTHOR, VERSION)
register_logevent("PlayerRespawn", 3, "1=joined team")//Отлов события выбора тима
register_event("DeathMsg", "PlayerKill", "a")//Отлов события смерти игрока
get_mapname(szMap, 31)
}
public PlayerKill()
{
new id = read_data(2)//индекс жертвы
SpawnTask(SPAWN_SECOND, id)//таймер для возрождения
}
public PlayerRespawn()
{
new szLog[256]
new szName[32], szTeam[12]
read_logargv(0, szLog, charsmax( szLog ))
read_logargv(2, szTeam, charsmax( szTeam ))
parse_loguser(szLog, szName, charsmax( szName ))
new id = get_user_index(szName)
if(is_user_connected(id) && szTeam[0] != 'S')//игорируем спектаров
{
SpawnTask(SPAWN_SECOND, id)//таймер для возрождения
}
}
public Respawn(id)
{
static team
new MapName[32]
get_mapname(MapName,31)
if(!is_user_alive(id) && (team = get_user_team(id)) != 3 && team != 0)
ExecuteHamB(Ham_CS_RoundRespawn,id)//Возрождение
if(is_user_alive(id))//Если игрок жив
{
set_user_godmode(id, 1)//Предоставляем бессмертие
ColorChat(id, "", PLUGIN)
if(get_user_team(id) == 1)//Если игрок тер
{
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 50)
}
else if(get_user_team(id) == 2)//Если игрок КТ
{
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 255, kRenderNormal, 50)
}
set_task(1.0, "ProtectionOff", id)
}
return PLUGIN_CONTINUE;
}
public ProtectionOff(id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE;
if (containi(szMap, "35hp_")!=-1)
set_user_health(id, 35)
else if (containi(szMap, "1hp_")!=-1)
set_user_health(id, 1)
set_user_godmode(id, 0)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25)
return PLUGIN_CONTINUE;
}
stock SpawnTask(Time, const id)
{
set_task(Time, "Respawn", id)
}
stock ColorChat(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
format(msg, sizeof(msg), "%s", msg)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
Проблемы:
- игрок конектится к серверу, выбирает команду, остается смотреть убитым за игроками (при чем команду сменить не может), решение - перезайти (после n-попыток)
- игрок игрок конектится к серверу, каким-то образом не успевает выбрать команду и остается в спектрах. Решение - перезайти (после n-попыток)
Если это можно назвать работой, то оплачиваю (цена и прочее в ЛС).