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

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

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

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

Как сделать воспроизведение рандом музыки в дуэлях? [DR]

, В полном описании.
Статус пользователя nazik114
сообщение 7.6.2015, 21:00
Сообщение #1
Стаж: 10 лет

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

Вообщем, у меня одна проблема. Я пытался сделать рандомное воспроизведение музыки, но не получалось... У меня получается, только чтобы одна песня играла...Ещё как сделать вместо: "Стреляет КТ: и т.д на Худ сообщения Стреляет: ник Осталось:сколько". И последнее как сделать, чтобы когда подходишь близко к дуэлянту, тебя откидывало.Код исходника ниже. Помогите пожалуйста
!
Есть тег для плагинов:
Код
[pawn]тут код плагина[/pawn]

ТыК*
Код:
/**==============================================================================
==
Инклюды
================================================================================
=*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta_util>
#include <fun>
#include <engine>
#include <hamsandwich>
#include <dhudmessage>
#include <xs>
#include < DeathrunManager >


/**==============================================================================
==
Данные о плагине
================================================================================
=*/
#define PLUGIN "DeathRun Duels"
#define VERSION "3.2"
#define AUTHOR "Sho0ter & CaNiBaL & MilkyWay & I Am LeGenD"
#define PREFIX "!y[!gDUEL!y]"
#define PREFIX_BETS "!y[!gBETS!y]"

#define is_valid_player(%1) (1 <= %1 <= 32)
/**==============================================================================
==
Различные данные
================================================================================
=*/
#define FIGHTDISTANSION 1

#define GODTID 100500
#define TIMER2TID 100502
/*#define INFORMERTID 100503*/
#define WAITTIMERTID 100504
#define STABKUID 100505
#define DCOUNT 12
#define DAMMO 1
#define KWPN "world"
#define KHS 1
#define MENUBODY 1024
#define MAXORIGINS 2

const OFFSET_CSMENUCODE = 205
#define MENUBUTTON1 (1<<0)
#define MENUBUTTON2 (1<<1)
#define MENUBUTTON3 (1<<2)
#define MENUBUTTON4 (1<<3)
#define MENUBUTTON5 (1<<4)
#define MENUBUTTON6 (1<<5)
#define MENUBUTTON7 (1<<6)
#define MENUBUTTON8 (1<<7)
#define MENUBUTTON9 (1<<8)
#define MENUBUTTON0 (1<<9)

#define TEAM_T 1
#define TEAM_CT 2

#define TASKID_BETTIMER 300
#define TASKID_BETTIMERDISPLAY 400
/**==============================================================================
==
Константы
================================================================================
=*/
// const for auto fight
new bool:bFightCt,bool:bFightTt, szNameFighting[32], idfighter, TimerFight
#define TASK_ID_FIGHTING 05051050
//
new MaxPlayers
new ChoosedDuel
new DuelNum
new SayText
new BeaconSprite
new CounterID
new TerroristID
new Index
new Timer
new OriginsNum

/*new g_MsgHud1*/
new g_MsgHud2
new g_MsgHud3

/*new PcvarLastMenu*/
new PcvarDuels
new PcvarTimeLimit
new PcvarSpawnGod
new PcvarEffects
new PcvarWait
new PcvarMode
new PcvarTele

new MenuPosition[33]
new MenuTs[33]
new ConfigsDir[64]
new OriginsFile[128]


new MenuBody[MENUBODY + 1]

/*new bool:Last*/
new bool:Duel
new bool:FPage
new bool:TouchWeapons[33]
new bool:Once[33]
new bool:InDuel[33]
new bool:Knife[33]
new bool:Deagle[33]
new bool:Grenade[33]
new bool:Scout[33]
new bool:Drob[33]
new bool:Awp[33]
new bool:Used[33]
new bool:NotYou[33]
new bool:DoIt[33]
new bool:Start[33]
new bool:Famas[33]
new bool:Ak47[33]
new bool:M4a1[33]
new bool:Glock18[33]
new bool:M249[33]
new bool:USP[33]
new bool:timers[33]
/*new bool:g_bInformer[33]*/
new bool:g_betting = false
new bool:g_bSniper
new bool:dr_drop
new bool:g_round

/*new PcvarInformer*/
new timer[33]
new g_betperson[33]
new g_betamount[33]
new t_ctav_on[33]
new ct_ctav_on[33]

new g_t
new g_ct
new perezar
new newperezar
new g_pot = 0
new g_betmenu

new const OVERRIDEPREVIOUSMENU[] = "lastmanbets_overridemenus"
new const CVAR_DEFAULTBET[] = "lastmanbets_defaultbet"
new const CVAR_BETTIME[] = "lastmanbets_bettime"
new const VAULTKEY_POT[] = "lastmanbets_pot"
new bool:attacknodistanse[33]

new Origins[MAXORIGINS][128]

new Duels[DCOUNT][] =
{
"DUEL_1",
"DUEL_2",
"DUEL_3",
"DUEL_4",
"DUEL_5",
"DUEL_6",
"DUEL_7",
"DUEL_8",
"DUEL_9",
"DUEL_10",
"DUEL_11",
"DUEL_12"
}

new zp_countchant[10][] =
{
"sound/LeGenD_DEATHRUN_NEW/manager/10.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/9.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/8.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/7.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/6.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/5sec.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/4sec.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/3sec.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/2sec.wav",
"sound/LeGenD_DEATHRUN_NEW/manager/1.wav"
}

new const EndDuelM[] = {"sound/LeGenD_DEATHRUN_NEW/dd/dd_end.mp3"}
new const FightDuelM[] = {"sound/LeGenD_DEATHRUN_NEW/dd/dd_start.mp3"}
new const AttackDuel[] = {"sound/LeGenD_DEATHRUN_NEW/dd/dd_attack.wav"}
new const MissedDuel[] = {"sound/LeGenD_DEATHRUN_NEW/dd/dd_missed.wav"}
new const FastDuel[] = {"sound/LeGenD_DEATHRUN_NEW/dd/dd_fast.wav"}
new const DieDuel[4][] =
{
"sound/LeGenD_DEATHRUN_NEW/dd/dd_die1.wav",
"sound/LeGenD_DEATHRUN_NEW/dd/dd_die2.wav",
"sound/LeGenD_DEATHRUN_NEW/dd/dd_die3.wav",
"sound/LeGenD_DEATHRUN_NEW/dd/dd_die4.wav"
}

#define MISSED_TASK 562
#define FAST_TASK 565

/**==============================================================================
==
Спрайт дуели
================================================================================
=*/

const maxPlayers = 32

#define SPRITE_DUEL "sprites/Dr_LeGenD/duel_cso_LeGenD.spr"

#define SPRITE_DISTANCE 10.0
#define SPRITE_CLASSNAME "duel_sprite"
new spriteIndex, temporarySprites[ maxPlayers + 1 ]

new bool:ESPduelON[ maxPlayers + 1 ];


/**==============================================================================
==
Загрузка плагина
================================================================================
=*/
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

register_event("HLTV", "alalala", "a", "1=0", "2=0")
register_event("ResetHUD", "newround_event", "b")
register_event("SendAudio", "roundend_t_event", "a", "2&%!MRAD_terwin")
register_event("SendAudio", "roundend_ct_event", "a", "2&%!MRAD_ctwin")
register_event("SendAudio", "roundend_draw_event", "a", "2&%!MRAD_rounddraw")
register_event("Damage","DamageEvent","b","2!0","3=0","4!0")
register_logevent("RoundEnd", 2, "1=Round_End")

RegisterHam(Ham_Touch, "weaponbox", "TouchWeapon")
RegisterHam(Ham_Touch, "armoury_entity", "TouchWeapon")
RegisterHam(Ham_Touch, "weapon_shield", "TouchWeapon")
RegisterHam(Ham_Touch, "trigger_hurt", "TouchWeapon")
RegisterHam(Ham_TakeDamage, "player", "FwdHamPlayerDamage")
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_awp", "SecondaryAttack")
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_scout", "SecondaryAttack")
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_glock18", "SecondaryAttack")
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_famas", "SecondaryAttack")
RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1)
RegisterHam(Ham_Killed, "player", "PlayerKilled")

register_forward(FM_PlayerPreThink, "client_PreThink")
register_forward(FM_UpdateClientData, "UpdateClientData", 1)
register_forward(FM_PlaybackEvent, "fwPlaybackEvent")

register_clcmd("say /lr", "CmdDuelsMenu")
register_clcmd("say /dd", "CmdDuelsMenu")
register_clcmd("duel", "CmdDuelsMenu")
register_clcmd("say_team /lr", "CmdDuelsMenu")
register_clcmd("say_team /dd", "CmdDuelsMenu")
register_clcmd("deathrun_duels", "CmdDuelsMenu")
/*register_clcmd("informer", "InformerDisabled")*/
register_clcmd("drop", "clcmd_drop")
register_concmd("dd_origin_menu", "CmdOriginsMenu", ADMIN_RCON)

for( new iCurrent = 1 ; iCurrent <= maxPlayers ; iCurrent++ ){
temporarySprites[ iCurrent ] = createSprite( iCurrent );
}

PcvarDuels = register_cvar("shizo_dr", "abcdefghijklmn")
/*PcvarInformer = register_cvar("dd_informer", "1")*/
PcvarTimeLimit = register_cvar("dd_timelimit", "120")
PcvarSpawnGod = register_cvar("dd_spawngod", "1")
PcvarEffects = register_cvar("dd_effects", "3")
PcvarWait = register_cvar("dd_wait", "12")
PcvarTele = register_cvar("dd_teleport", "1")
/*PcvarLastMenu = register_cvar("dd_lastmenu", "1")*/
PcvarMode = register_cvar("deathrun_mode", "BUTTONS", FCVAR_SERVER)
register_cvar("cv_duels_sprite", "1") // Отображать ли спрайт Осталось

if(get_cvar_num("cv_duels_sprite"))
{
register_forward( FM_AddToFullPack , "addToFullPack" , 1 )
register_forward( FM_CheckVisibility , "checkVisibility" )
}

register_cvar("DeathRun Duels", "v2.9 by NoName", FCVAR_SERVER|FCVAR_SPONLY)
register_cvar(OVERRIDEPREVIOUSMENU, "1")
register_cvar(CVAR_DEFAULTBET, "1000")
register_cvar(CVAR_BETTIME, "15")

register_menucmd(register_menuid("Duels Menu"), MENUBODY - 1, "ActionDuelsMenu")
register_menucmd(register_menuid("Enemy Menu"), MENUBODY - 1, "ActionEnemyMenu")
register_menucmd(register_menuid("Super Menu"), MENUBODY - 1, "ActionSuperMenu")
register_menucmd(register_menuid("Origins Menu"), MENUBODY - 1, "ActionOriginsMenu")

SayText = get_user_msgid("SayText")
MaxPlayers = get_maxplayers()
/*set_task(1.0, "Informer", INFORMERTID, "", 0, "b")
g_MsgHud1 = CreateHudSyncObj()*/
g_MsgHud2 = CreateHudSyncObj()
g_MsgHud3 = CreateHudSyncObj()
g_betmenu = register_menuid("\yМеню ставок")
register_menucmd(g_betmenu, MENUBODY - 1, "menu_fn")
register_dictionary("dd.txt")
if (vaultdata_exists(VAULTKEY_POT))
g_pot = get_vaultdata(VAULTKEY_POT)

return PLUGIN_CONTINUE
}

/**==============================================================================
==
Получение урона (Дамагер)
================================================================================
=*/
public DamageEvent(victim)
{
new attacker = get_user_attacker(victim), damage = read_data(2), at_name[32], vi_name[32]
get_user_name(victim, vi_name, 31)
get_user_name(attacker, at_name, 31)

if(!Duel || attacker == victim || !is_user_connected(attacker) || !is_user_connected(victim) || get_user_team(attacker) == get_user_team(victim) || !is_user_alive(attacker) || !is_user_alive(victim))
return PLUGIN_CONTINUE

if(CounterID == victim || CounterID == attacker || TerroristID == victim || TerroristID == attacker)
{
remove_task(MISSED_TASK)
set_task(0.3, "DIE_PL")
cleardhud(attacker)
cleardhud(victim)

set_dhudmessage( 0, 255, 0, -1.0, -0.35, 1, 3.0, 3.0, 0.1, 1.5 )
show_dhudmessage(attacker, "Вы нанесли: %d", damage)
set_dhudmessage( 255, 0, 0, -1.0, -0.35, 1, 3.0, 3.0, 0.1, 1.5 )
show_dhudmessage(victim, "Вам нанесли: %d", damage)
}
return PLUGIN_CONTINUE
}

/*===============================================================================
=
Убрать с экрана все дхуд сообщения
================================================================================
=*/

public cleardhud(pId)
{
ClearDHUDMessages(pId);
}

stock ClearDHUDMessages(pId, iClear = 8)
{
for (new iDHUD = 0; iDHUD < iClear; iDHUD++)
show_dhudmessage(pId, "");
}

/**==============================================================================
==
Звук(попадание в игрока)
================================================================================
=*/
public DIE_PL()
client_cmd(0, "stopsound;spk %s", DieDuel[random_num(0, charsmax(DieDuel))])

/**==============================================================================
==
Автовыстрел
================================================================================
=*/
public AutoFighting()
{
if(!Duel || !task_exists(TASK_ID_FIGHTING))
return PLUGIN_CONTINUE

if(!attacknodistanse[CounterID] && !attacknodistanse[TerroristID])
TimerFight--

if(bFightCt) idfighter = CounterID
else if(bFightTt) idfighter = TerroristID
get_user_name(idfighter, szNameFighting, charsmax(szNameFighting))
client_print( 0, print_center, "Стреляет %s%s Осталось: %d%s", bFightCt ? "Кт: " : "Т: ", szNameFighting, TimerFight, (attacknodistanse[CounterID] && attacknodistanse[TerroristID]) ? " Отойдите друг от друга" : " Держитесь на растоянии")

if(TimerFight <= 0)
client_cmd(idfighter, "+attack;wait;wait;-attack")

return PLUGIN_CONTINUE
}

/**==============================================================================
==
Закачки плагина
================================================================================
=*/
public plugin_precache()
{
BeaconSprite = precache_model("sprites/shockwave.spr")
precache_generic(EndDuelM)
precache_generic(FightDuelM)
precache_generic(MissedDuel)
precache_generic(FastDuel)
precache_generic(AttackDuel)
spriteIndex = precache_model(SPRITE_DUEL);

for(new i; i < sizeof DieDuel; i++)
precache_generic(DieDuel[i])

for(new i; i < sizeof zp_countchant; i++)
precache_generic(zp_countchant[i])

get_configsdir(ConfigsDir, charsmax(ConfigsDir))
new cmap[32], Len, dddir[128]
format(dddir, 127, "%s/deathrun_duels", ConfigsDir)
if(!dir_exists(dddir))
{
mkdir(dddir)
}
get_mapname(cmap, 31)
format(OriginsFile, charsmax(OriginsFile), "%s/deathrun_duels/%s.ini", ConfigsDir, cmap)
new i = 0
if(file_exists(OriginsFile))
{
while(i < MAXORIGINS && read_file(OriginsFile, i ,Origins[OriginsNum], 127, Len))
{
i++
if(Origins[OriginsNum][0] == ';' || Len == 0)
{
continue
}
OriginsNum++
}
}
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Начало раунда
================================================================================
=*/
public alalala()
{
Duel = false
/*Last = false*/
dr_drop = false
g_bSniper = false
newperezar = false
perezar = false
closebetmenu()
remove_task(STABKUID)
remove_task(TIMER2TID)
remove_task(WAITTIMERTID)
set_pcvar_string(PcvarMode, "BUTTONS")
set_cvar_num( "deathrun_shop", 1 );
server_cmd("drshop_enable 1")
server_cmd("knife_enable 1")
set_cvar_num("bh_enabled", 1)
server_cmd( "bh_menu 1" );
server_cmd("dr_speedometer_enable 1");
server_cmd("night_menu 1")
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Вкл. и Выкл. Информер
================================================================================
=*/
/*public InformerDisabled(id)
{
switch(g_bInformer[id])
{
case true:
{
g_bInformer[id] = false
}
case false:
{
g_bInformer[id] = true
}
}
}*/
/*===============================================================================
=
Информер
================================================================================
=*/
/*public Informer()
{
if(!get_pcvar_num(PcvarInformer))
{
remove_task(INFORMERTID)
return PLUGIN_HANDLED
}
new id, LastID, acts, cts, all, CurrentTime[32], NextMap[32], Terrorist[32], names[33][32], Message[512]
for(id = 1; id <= MaxPlayers; id++)
{
if(!is_user_connected(id))
{
continue
} else if(is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) {
acts++
cts++
all ++
LastID = id
get_user_name(id, names[acts], 31)
} else if(!is_user_alive(id) && cs_get_user_team(id) == CS_TEAM_CT) {
cts++
all++
} else if(cs_get_user_team(id) == CS_TEAM_T && !is_user_bot(id)) {
get_user_name(id, Terrorist, 63)
all++
} else {
all++
}
}
if(acts == 1 && !Last && get_pcvar_num(PcvarLastMenu))
{
LastMenu(LastID)
Last = true
}
for(id = 1; id <= MaxPlayers; id++)
{
new Len, Mode[32]
get_pcvar_string(PcvarMode, Mode, 31)
Len = format(Message, 511, "%L: %L", LANG_PLAYER, "CURRENTMODE", LANG_PLAYER, Mode)
get_time("%H:%M:%S", CurrentTime, 31)
Len += format(Message[Len], 511 - Len, "^n%L: %s", LANG_PLAYER, "CURRENTTIME", CurrentTime)
if(get_cvar_float("mp_timelimit"))
{
new a = get_timeleft()
Len += format(Message[Len], 511 - Len, "^n%L: %d:%02d", LANG_PLAYER, "TLEFT", (a / 60), (a % 60))
} else {
Len += format(Message[Len], 511 - Len, "^n%L: %L", LANG_PLAYER, "TLEFT", LANG_PLAYER, "LASTR")
}
get_cvar_string("amx_nextmap", NextMap, 31)
Len += format(Message[Len], 511 - Len, "^n%L: %s", LANG_PLAYER, "NMAP", NextMap)
if(GetTsNum(0))
{
Len += format(Message[Len], 511 - Len, "^n%L: %s", LANG_PLAYER, "CTER", Terrorist)
} else {
Len += format(Message[Len], 511 - Len, "^n%L: %L", LANG_PLAYER, "CTER", LANG_PLAYER, "TNONE")
}
Len += format(Message[Len], 511 - Len, "^n%L: %d | %d", LANG_PLAYER, "ALIVECTS", acts,cts)
Len += format(Message[Len], 511 - Len, "^n%L: %d | %d", LANG_PLAYER, "APLAYERS", all, MaxPlayers)
if(acts > 3)
{
set_hudmessage(255, 117, 24, 0.01, 0.18, 0, 1.0, 1.0)
} else if(acts == 3) {
set_hudmessage(0, 255, 255, 0.01, 0.18, 0, 1.0, 1.0)
Len += format(Message[Len], 511 - Len, "^n^n1. %s^n2. %s^n3. %s", names[1], names[2], names[3])
} else if(acts == 2) {
set_hudmessage(137, 42, 220, 0.01, 0.18, 0, 1.0, 1.0)
Len += format(Message[Len], 511 - Len, "^n^n1. %s^n2. %s", names[1], names[2])
} else {
set_hudmessage(255, 0, 255, 0.01, 0.18, 0, 1.0, 1.0)
Len += format(Message[Len], 511 - Len, "^n^n1. %s", names[1])
}
ShowSyncHudMsg(id, g_MsgHud1, "%s", Message)
}
return PLUGIN_CONTINUE
}*/
/**==============================================================================
==
Запрет drop
================================================================================
=*/
public clcmd_drop(id)
{
if(dr_drop)
{
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Конец раунда
================================================================================
=*/
public RoundEnd()
{
remove_task(STABKUID)
remove_task(TIMER2TID)
remove_task(WAITTIMERTID)
set_cvar_num("bh_enabled", 1)
set_cvar_num("admin_enabled", 1)
set_cvar_num("vip_enabled", 1)
set_cvar_num( "deathrun_shop", 1 );
server_cmd("drshop_enable 1")
server_cmd("knife_enable 1")
server_cmd( "bh_menu 1" );
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Возрождение игрока
================================================================================
=*/
public PlayerSpawn(id)
{
if(!is_user_alive(id) || !cs_get_user_team(id) || is_user_bot(id))
{
return PLUGIN_CONTINUE
}
if(get_pcvar_num(PcvarSpawnGod))
{
set_pev(id, pev_takedamage, 0)
set_task(3.0, "GodOff", id + GODTID)
}
set_user_rendering(id)
remove_task(id)
TouchWeapons[id] = false
Once[id] = false
Knife[id] = false
Deagle[id] = false
Grenade[id] = false
Scout[id] = false
Drob[id] = false
Awp[id] = false
Used[id] = false
NotYou[id] = false
DoIt[id] = false
Start[id] = false
InDuel[id] = false
Famas[id] = false
Ak47[id] = false
M4a1[id] = false
Glock18[id] = false
M249[id] = false
USP[id] = false
ESPduelON[id] = false;

return PLUGIN_CONTINUE
}
/**==============================================================================
==
Прицел
================================================================================
=*/
public SecondaryAttack(ent)
{
if(g_bSniper || !is_user_alive(pev(ent, pev_owner)))
return HAM_SUPERCEDE;

return HAM_IGNORED;
}
/**==============================================================================
==
Касание к оружию
================================================================================
=*/
public TouchWeapon(weapon, id)
{
if(!is_user_connected(id))
{
return HAM_IGNORED
}
if(is_user_bot(id))
{
return HAM_IGNORED
}
if(TouchWeapons[id])
{
return HAM_SUPERCEDE
}
return HAM_IGNORED
}

/**==============================================================================
==
Не отнимаем хп при падении
================================================================================
=*/
public FwdHamPlayerDamage( id, idInflictor, idAttacker, Float:flDamage, iDamageBits )
{
if(!Duel)
return HAM_IGNORED

if( TouchWeapons[id] )
{
if( iDamageBits & DMG_FALL )
{
if( get_user_team( id ) == 2 )
return HAM_SUPERCEDE
}

if(!is_user_connected(idAttacker))
return HAM_IGNORED;

if(idAttacker == CounterID && id == TerroristID || idAttacker == TerroristID && id == CounterID)
{
return HAM_IGNORED;
} else {
return HAM_SUPERCEDE;
}
}
return HAM_IGNORED;
}

/**==============================================================================
==
Игрок промазал
================================================================================
=*/
public SpkMissed()
client_cmd(0, "spk %s", MissedDuel)

/**==============================================================================
==
Долго ждём выстрела
================================================================================
=*/
public SpkFast()
client_cmd(0, "spk %s", FastDuel)
/**==============================================================================
==
Использование комманд (отлов выстрела)
================================================================================
=*/
public fwPlaybackEvent(flags, id, eventid, uc_handle)
{
if(is_user_bot(id))
{
return PLUGIN_HANDLED
}

if(Duel && is_user_alive(id) && is_user_connected(id))
{
remove_task(FAST_TASK)
client_cmd(0, "stopsound;spk %s", AttackDuel)
if(!task_exists(MISSED_TASK))
set_task(1.0, "SpkMissed", MISSED_TASK)

if(!task_exists(FAST_TASK))
set_task(8.0, "SpkFast", FAST_TASK)

if(task_exists(TASK_ID_FIGHTING) && (!attacknodistanse[CounterID] && !attacknodistanse[TerroristID]))
{
if(cs_get_user_team(id) & CS_TEAM_CT && bFightCt)
bFightCt = false, bFightTt = true, TimerFight = 15
else
bFightCt = true, bFightTt = false, TimerFight = 15
}
#if FIGHTDISTANSION == 1
if(attacknodistanse[id])
{
set_player_ammo(id, 1)
client_print(id, print_center, "Отойдите дальше, очень близко")
return PLUGIN_HANDLED
}
#endif
if(Deagle[id])
{
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_DEAGLE, 1)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_DEAGLE, 1)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
return PLUGIN_HANDLED
} else if(Scout[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_SCOUT, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_SCOUT, 1)
}
}
return PLUGIN_HANDLED
} else if(Drob[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_M3, 1)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_M3, 1)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
return PLUGIN_HANDLED
} else if(Awp[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_AWP, 1)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_AWP, 1)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
return PLUGIN_HANDLED
} else if(Ak47[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_AK47, 1)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_AK47, 1)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
return PLUGIN_HANDLED
} else if(M4a1[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_M4A1, 1)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_M4A1, 1)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
return PLUGIN_HANDLED
} else if(M249[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_M249, 1)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_M249, 1)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
return PLUGIN_HANDLED
} else if(USP[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
set_player_ammo(TerroristID, 1)
} else if(cs_get_user_team(id) & CS_TEAM_T) {
set_player_ammo(CounterID, 1)
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
cs_set_user_bpammo(TerroristID, CSW_USP, 1)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
} else if(cs_get_user_team(id) & CS_TEAM_T) {
cs_set_user_bpammo(CounterID, CSW_USP, 1)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
return PLUGIN_HANDLED
} else if(Famas[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
new wEnt = fm_find_ent_by_owner(-1, "weapon_famas", TerroristID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
set_player_ammo(TerroristID, 3)
}
} else if(cs_get_user_team(id) & CS_TEAM_T) {
new wEnt = fm_find_ent_by_owner(-1, "weapon_famas", CounterID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
set_player_ammo(CounterID, 3)
}
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
new wEnt = fm_find_ent_by_owner(-1, "weapon_famas", TerroristID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 1)
cs_set_user_bpammo(TerroristID, CSW_FAMAS, 3)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
}
} else if(cs_get_user_team(id) & CS_TEAM_T) {
new wEnt = fm_find_ent_by_owner(-1, "weapon_famas", CounterID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 1)
cs_set_user_bpammo(CounterID, CSW_FAMAS, 3)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
}
return PLUGIN_HANDLED
} else if(Glock18[id]) {
if(newperezar)
{
if(cs_get_user_team(id) & CS_TEAM_CT)
{
new wEnt = fm_find_ent_by_owner(-1, "weapon_glock18", TerroristID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
set_player_ammo(TerroristID, 3)
}
} else if(cs_get_user_team(id) & CS_TEAM_T) {
new wEnt = fm_find_ent_by_owner(-1, "weapon_glock18", CounterID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
set_player_ammo(CounterID, 3)
}
}
} else if(perezar) {
if(cs_get_user_team(id) & CS_TEAM_CT)
{
new wEnt = fm_find_ent_by_owner(-1, "weapon_glock18", TerroristID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 1)
cs_set_user_bpammo(TerroristID, CSW_GLOCK18, 3)
client_cmd(TerroristID,"+attack;wait;wait;wait;-attack")
}
} else if(cs_get_user_team(id) & CS_TEAM_T) {
new wEnt = fm_find_ent_by_owner(-1, "weapon_glock18", CounterID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 1)
cs_set_user_bpammo(CounterID, CSW_GLOCK18, 3)
client_cmd(CounterID,"+attack;wait;wait;wait;-attack")
}
}
}
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Обновление данных о игроке
================================================================================
=*/
public UpdateClientData(id, sendweapons, cd_handle)
{
if(!is_user_alive(id))
{
return FMRES_IGNORED
}
if(Used[id] && InDuel[id])
{
set_cd(cd_handle, CD_ID, 0)
}
return FMRES_HANDLED
}
/**==============================================================================
==
Смерть игрока
================================================================================
=*/
public PlayerKilled(victim, attacker, shouldgib)
{
if(victim <= 0 || attacker <= 0 || victim >= 33 || attacker >= 33)
{
return PLUGIN_HANDLED
}
if(Duel)
{
if(InDuel[victim] && InDuel[attacker])
{
if(victim == CounterID)
{
attacker = TerroristID
} else if(victim == TerroristID) {
attacker = CounterID
}
Once[attacker] = false
Knife[attacker] = false
Deagle[attacker] = false
Grenade[attacker] = false
Scout[attacker] = false
Drob[attacker] = false
Awp[attacker] = false
Used[attacker] = false
NotYou[attacker] = false
DoIt[attacker] = false
Start[attacker] = false
InDuel[attacker] = false
Famas[attacker] = false
Ak47[attacker] = false
M4a1[attacker] = false
Glock18[attacker] = false
M249[attacker] = false
USP[attacker] = false
g_bSniper = false
Duel = false
dr_drop = false
newperezar = false
perezar = false
}
if(victim == CounterID || victim == TerroristID)
{
if(!is_user_connected(victim))
return PLUGIN_CONTINUE;

client_cmd(0, "mp3 stop %s", FightDuelM)
remove_task(TASK_ID_FIGHTING)
bFightCt = false
bFightTt = false
}
}
remove_task(attacker)
remove_task(victim)
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Команда открытия меню дуэлей
================================================================================
=*/
public CmdDuelsMenu(id)
{

if(!is_user_alive(id))
{
return PLUGIN_HANDLED
}
if (!Once[id])
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
new CTsNum = GetCTsNum(1)
new TsNum = GetTsNum(1)
if(CTsNum == 1 && TsNum >= 1)
{
SuperMenu(id)
}
if(TsNum < 1)
{
ChatColor(id, "%s %L", PREFIX, LANG_PLAYER,"NOT_TS")
} else if(CTsNum > 1) {
ChatColor(id, "%s %L", PREFIX, LANG_PLAYER,"ONLY_LAST")
}
} else {
ChatColor(id, "%s %L", PREFIX, LANG_PLAYER, "ONLY_CTS")
}
}
return PLUGIN_HANDLED
}
public SuperMenu(id)
{
new Len
new Keys = MENU_KEY_0
Len = format(MenuBody, MENUBODY - 1, "\y%L\w^n^n", LANG_PLAYER, "KAKCTPELAT")
Keys |= (1 << 0)
Len += format(MenuBody[Len], MENUBODY - Len, "\r1. \w%L^n", LANG_PLAYER, "PEREZAR")
Keys |= (1 << 1)
Len += format(MenuBody[Len], MENUBODY - Len, "\r2. \w%L^n", LANG_PLAYER, "BEZPEREZAR")
show_menu(id, Keys, MenuBody, -1, "Super Menu")
return PLUGIN_CONTINUE
}
public ActionSuperMenu(id, key)
{
switch(key)
{
case 0:
{
if(GetTsNum(1) || GetCTsNum(1) == 1 || is_user_alive(id))
{
DuelsMenu(id, MenuPosition[id] = 0)
newperezar = true
if(perezar)
{
perezar = false
}
}
}
case 1:
{
if(GetTsNum(1) || GetCTsNum(1) == 1 || is_user_alive(id))
{
DuelsMenu(id, MenuPosition[id] = 0)
perezar = true
if(newperezar)
{
newperezar = false
}
}
}
}
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Меню дуэлей
================================================================================
=*/
public DuelsMenu(id, position)
{
if(position < 0)
{
return
}
FPage = false
new DuelsNum = GetFlagsNum(PcvarDuels)
new Flags = GetFlags(PcvarDuels)
new MenuStart = position * 8
if(MenuStart >= DuelsNum)
{
MenuStart = position = MenuPosition[id]
}
new MenuEnd = position * 8 + 8
if(MenuEnd >= DuelsNum && position != 0)
{
MenuEnd = DuelsNum
} else if(MenuEnd >= DuelsNum && position == 0) {
MenuEnd = DCOUNT
FPage = true
}
new Keys = MENU_KEY_0
new Len
new b
Len = format(MenuBody, MENUBODY - 1, "\y%L^n^n", LANG_PLAYER, "CHOOSE_DUEL")
for(new a = MenuStart; a < MenuEnd; a++)
{
if(Flags & (1 << a))
{
Keys |= (1 << b)
Len += format(MenuBody[Len], MENUBODY - Len, "\r%d. \w%L^n", ++b, LANG_PLAYER, Duels[a])
} else {
continue
}
}
if(MenuEnd != DuelsNum && !FPage)
{
Keys |= MENU_KEY_9
Len += format(MenuBody[Len], MENUBODY - Len, "^n\r9. \w%L^n\r0. \w%L^n", LANG_PLAYER, "DD_MENU_MORE", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT")
} else {
Len += format(MenuBody[Len], MENUBODY - Len, "^n\r0. \w%L^n", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT")
}
show_menu(id, Keys, MenuBody, -1, "Duels Menu")
}
/**==============================================================================
==
Действие меню дуэлей
================================================================================
=*/
public ActionDuelsMenu(id, key)
{
switch(key)
{
case 8:
{
DuelsMenu(id, ++MenuPosition[id])
}
case 9:
{
DuelsMenu(id, --MenuPosition[id])
}
default:
{
if(GetTsNum(1) || GetCTsNum(1) == 1 || is_user_alive(id))
{
ChoosedDuel = MenuPosition[id] * 8 + key
EnemyMenu(id, MenuPosition[id] = 0)
}
}
}
}
/**==============================================================================
==
Меню выбора противника
================================================================================
=*/
public EnemyMenu(id, position)
{
if(position < 0)
{
return
}
new TsNum = 0
for(new aid = 1; aid <= MaxPlayers; aid++)
{
if(is_user_connected(aid) && is_user_alive(aid) && cs_get_user_team(aid) == CS_TEAM_T && !is_user_bot(aid))
{
MenuTs[TsNum++] = aid
}
}
new MenuStart = position * 8
if(MenuStart >= TsNum)
{
MenuStart = position = MenuPosition[id]
}
new MenuEnd = position + 8
if(MenuEnd > TsNum)
{
MenuEnd = TsNum
}
new Keys = MENU_KEY_0
new Len
new b = 0
new Names[32]
Len = format(MenuBody, MENUBODY - 1, "\y%L^n^n", LANG_PLAYER, "CHOOSE_ENEMY")
for(new a = MenuStart; a < MenuEnd; a++)
{
get_user_name(MenuTs[a], Names, 31)
Keys |= (1 << b)
Len += format(MenuBody[Len], MENUBODY - Len, "\r%d. \w%s^n", ++b, Names)
}
if(MenuEnd != TsNum)
{
Keys |= MENU_KEY_9
Len += format(MenuBody[Len], MENUBODY - Len, "^n\r9. \w%L^n\r0. \w%L^n", LANG_PLAYER, "DD_MENU_MORE", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT")
} else {
Len += format(MenuBody[Len], MENUBODY - Len, "^n\r0. \w%L^n", LANG_PLAYER, position ? "DD_MENU_BACK" : "DD_MENU_EXIT")
}
show_menu(id, Keys, MenuBody, -1, "Enemy Menu")
}
/**==============================================================================
==
Действие выбора противника
================================================================================
=*/
public ActionEnemyMenu(id, key)
{
switch(key)
{
case 8: EnemyMenu(id, ++MenuPosition[id])
case 9: EnemyMenu(id, --MenuPosition[id])
default:
{
if(GetTsNum(1) || GetCTsNum(1) == 1 || is_user_alive(id))
{
new Choosed = MenuPosition[id] * 8 + key
new Enemy = MenuTs[Choosed]
StartDuel(id, Enemy)
for(new i = 1; i <= MaxPlayers; i++)
{
if(is_user_alive(i))
{
if(cs_get_user_team(i) == CS_TEAM_T)
{
if(i != MenuTs[Choosed])
{
user_kill(i, 1)
}
}
}
}
}
}
}
return PLUGIN_CONTINUE
}
public CmdOriginsMenu(id, level, cid)
{
if(!cmd_access(id, level, cid, 1))
{
return PLUGIN_HANDLED
} else {
ShowOriginsMenu(id)
}
return PLUGIN_CONTINUE
}
public ShowOriginsMenu(id)
{
new Keys = MENU_KEY_0
new Len
Len = format(MenuBody, MENUBODY, "\y%L^n^n", id, "ORIGINS_TITLE")
Keys |= (1 << 0)
Len += format(MenuBody[Len], MENUBODY - Len, "\r1. \w%L^n", id, "SAVE_POSITION")
Keys |= (1 << 1)
Len += format(MenuBody[Len], MENUBODY - Len, "\r2. \w%L^n", id, "DELETE_POSITIONS")
Len += format(MenuBody[Len], MENUBODY - Len, "^n\r0. \w%L^n^n", id, "DD_MENU_EXIT")
show_menu(id, Keys, MenuBody, -1, "Origins Menu")
return PLUGIN_CONTINUE
}
public ActionOriginsMenu(id, key)
{
switch(key)
{
case 0:
{
new vec[3]
get_user_origin(id, vec)
add_spawn(vec)
client_print(id, print_center, "*** Сохраненно ***")
ShowOriginsMenu(id)
}
case 1:
{
if(file_exists(OriginsFile))
{
delete_file(OriginsFile)
client_print(id, print_center, "*** Удаленно ***")
ShowOriginsMenu(id)
}
}
}
return PLUGIN_CONTINUE
}
public add_spawn(vecs[3])
{
new Line[128]
format(Line, 127, "%d %d %d",vecs[0], vecs[1], vecs[2])
write_file(OriginsFile, Line)
return PLUGIN_CONTINUE
}
public SetOrigins(ctid, terid)
{
if(!file_exists(OriginsFile) || !get_pcvar_num(PcvarTele))
{
return PLUGIN_CONTINUE
}
new pos[4][8]
parse(Origins[0], pos[1], 7, pos[2], 7, pos[3], 7)
new Vec[3]
Vec[0] = str_to_num(pos[1])
Vec[1] = str_to_num(pos[2])
Vec[2] = str_to_num(pos[3])
set_user_origin(ctid, Vec)
parse(Origins[1], pos[1], 7, pos[2], 7, pos[3], 7)
Vec[0] = str_to_num(pos[1])
Vec[1] = str_to_num(pos[2])
Vec[2] = str_to_num(pos[3])
set_user_origin(terid, Vec)
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Начало дуэли
================================================================================
=*/
public StartDuel(id, tempid)
{
if(!GetTsNum(1) || GetCTsNum(1) > 1|| !is_user_alive(tempid) || !is_user_alive(id) || cs_get_user_team(tempid) != CS_TEAM_T || cs_get_user_team(id) != CS_TEAM_CT || !is_user_connected(tempid) || !is_user_connected(id) || is_user_bot(id) || is_user_bot(tempid))
{
return PLUGIN_HANDLED
}
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
set_lights("#OFF")
server_cmd("bh_enabled 0")
server_cmd("dr_speedometer_enable 0")
server_cmd("drshop_enable 0")
server_cmd("knife_enable 0")
server_cmd( "bh_menu 0" );
server_cmd("night_menu 0")
set_cvar_num( "deathrun_shop", 0 );
new challenger[32], challenged[32]
get_user_name(id, challenger, 31)
get_user_name(tempid, challenged, 31)
strip_user_weapons(id)
strip_user_weapons(tempid)
set_user_gravity( id, 1.0 );
set_user_gravity( tempid, 1.0 );
set_user_maxspeed( id, 250.0 );
set_user_maxspeed( tempid, 250.0 );
set_user_godmode(id, 0);
set_user_godmode(tempid, 0);
set_user_health(id, 100)
set_user_health(tempid, 100)
set_cvar_num("bh_enabled", 0)
set_cvar_num("drshop_enable", 0)
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SetFOV"), _, id)
write_byte( 90 )
message_end()
switch(get_pcvar_num(PcvarEffects))
{
case 1:
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 150, kRenderNormal, 20)
set_user_rendering(tempid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
set_user_rendering(tempid, kRenderFxGlowShell, 150, 0, 0, kRenderNormal, 20)
}
case 2:
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
set_task(1.0, "Beacon", id)
set_user_rendering(tempid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
set_task(1.0, "Beacon", tempid)
}
case 3:
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 150, kRenderNormal, 20)
set_task(1.0, "Beacon", id)
set_user_rendering(tempid, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255)
set_user_rendering(tempid, kRenderFxGlowShell, 150, 0, 0, kRenderNormal, 20)
set_task(1.0, "Beacon", tempid)
}
}
InDuel[tempid] = true
InDuel[id] = true
Once[id] = true
TouchWeapons[id] = true
TouchWeapons[tempid] = true
CounterID = id
TerroristID = tempid
dr_drop = true
g_round = true
Timer = get_pcvar_num(PcvarWait)
Index = get_pcvar_num(PcvarTimeLimit) + 1
InitBettings()
set_pcvar_string(PcvarMode, "DUEL")
new Flags = GetFlags(PcvarDuels)
DuelNum = 0
new DuelIndex
while(DuelIndex <= ChoosedDuel)
{
if(Flags & (1 << DuelNum))
{
DuelIndex++
}
DuelNum ++
}
SetOrigins(id, tempid)
switch(DuelNum)
{
case 1:
{
Knife[id] = true
Knife[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"KNIFE1", challenger, challenged)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 2:
{
Deagle[id] = true
Deagle[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"DEAGLE1", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"DEAGLE2")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"DEAGLE3", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 3:
{
Grenade[id] = true
Grenade[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"GRENADE1", challenger, challenged)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 4:
{
Scout[id] = true
g_bSniper = true
Scout[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"SCOUT1", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"SCOUT2")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"SCOUT3", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 5:
{
Drob[id] = true
Drob[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"DROB1", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"DROB2")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"DROB3", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 6:
{
Awp[id] = true
g_bSniper = true
Awp[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"AWP1", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"AWP2")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"AWP3", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 7:
{
Famas[id] = true
g_bSniper = true
Famas[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "FAMAS1", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "FAMAS2")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "FAMAS3", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 8:
{
Ak47[id] = true
Ak47[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"AK471", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"AK472")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"AK473", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 9:
{
M4a1[id] = true
M4a1[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"M4A1", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"M4A2")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER,"M4A3", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 10:
{
Glock18[id] = true
g_bSniper = true
Glock18[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "GLOCK181", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "GLOCK182")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "GLOCK183", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 11:
{
M249[id] = true
M249[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "M2491", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "M2492")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "M2493", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
case 12:
{
USP[id] = true
USP[tempid] = true
Duel = true
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "USP1", challenger, challenged)
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "USP2")
ChatColor(0, "%s %L", PREFIX, LANG_PLAYER, "USP3", challenger)
set_task(0.0, "StartWait", WAITTIMERTID)
return PLUGIN_HANDLED
}
}
Duel = true
return PLUGIN_HANDLED
}
/**==============================================================================
==
Ожидание дуэли
================================================================================
=*/
public StartWait()
{
new iChant[64], iSound

set_hudmessage(128, 128, 128, -1.0, 0.25, 1, 1.0, 1.0, _, _, 2)
switch(DuelNum)
{
case 1:
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "KNIFE_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
case 2:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "DEAGLE_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "DEAGLE_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 3:
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "GRENADE_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
case 4:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "SCOUT_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "SCOUT_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 5:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "DROB_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "DROB_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 6:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "AWP_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "AWP_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 7:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "FAMAS_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "FAMAS_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 8:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "AK47_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "AK47_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 9:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "M4A1_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "M4A1_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 10:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "GLOCK18_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "GLOCK18_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
case 11:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "M249_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "M249_WAIT", LANG_PLAYER, "STARTAFTER", Timer)

}
}
case 12:
{
if(newperezar)
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "USP_WAITNEW", LANG_PLAYER, "STARTAFTER", Timer)
} else if(perezar) {
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "USP_WAIT", LANG_PLAYER, "STARTAFTER", Timer)

}
}
case 13:
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "MATH_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
case 14:
{
ShowSyncHudMsg(0, g_MsgHud2, "%L^n%L", LANG_PLAYER, "WORD_WAIT", LANG_PLAYER, "STARTAFTER", Timer)
}
}
Timer--
if(Timer <= 0)
{
set_task(1.0, "StartGo")
} else {

set_task(1.0, "StartWait", WAITTIMERTID)
}
return PLUGIN_CONTINUE

iSound = Timer

if(iSound == -1)
return PLUGIN_CONTINUE

copy(iChant, charsmax(iChant), zp_countchant[iSound])
client_cmd(0,"speak ^"%s^"", iChant)
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Дуэль началась
================================================================================
=*/
public StartGo()
{
if(!is_user_alive(TerroristID) || !is_user_alive(CounterID) || !is_user_connected(TerroristID) || !is_user_connected(CounterID) || !is_valid_player(CounterID) || !is_valid_player(TerroristID))
{
return PLUGIN_HANDLED
}
switch(DuelNum)
{
case 1:
{
give_item(CounterID, "weapon_knife")
give_item(TerroristID, "weapon_knife")
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 2:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_deagle"), DAMMO)
cs_set_weapon_ammo(give_item(TerroristID, "weapon_deagle"), 0)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 3:
{
give_item(CounterID, "weapon_hegrenade")
give_item(TerroristID, "weapon_hegrenade")
cs_set_user_bpammo(CounterID, CSW_HEGRENADE, 100)
cs_set_user_bpammo(TerroristID, CSW_HEGRENADE, 100)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 4:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_scout"), DAMMO)
cs_set_weapon_ammo(give_item(TerroristID, "weapon_scout"), 0)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 5:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_m3"), 1)
cs_set_weapon_ammo(give_item(TerroristID, "weapon_m3"), 0)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 6:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_awp"), DAMMO)
cs_set_weapon_ammo(give_item(TerroristID, "weapon_awp"), 0)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 7:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_famas"), 3)
new wEnt = fm_find_ent_by_owner(-1, "weapon_famas", CounterID)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
}
cs_set_weapon_ammo(give_item(TerroristID, "weapon_famas"), 0)
wEnt = fm_find_ent_by_owner(-1, "weapon_famas", TerroristID)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
}
}
case 8:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_ak47"), DAMMO)
cs_set_weapon_ammo(give_item(TerroristID, "weapon_ak47"), 0)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 9:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_m4a1"), DAMMO)
cs_set_weapon_ammo(give_item(TerroristID, "weapon_m4a1"), 0)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 10:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_glock18"), 3)
new wEnt = fm_find_ent_by_owner(-1, "weapon_glock18", CounterID)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
}
cs_set_weapon_ammo(give_item(TerroristID, "weapon_glock18"), 0)
wEnt = fm_find_ent_by_owner(-1, "weapon_glock18", TerroristID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
}
}
case 11:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_m249"), DAMMO)
new wEnt = fm_find_ent_by_owner(-1, "weapon_m249", TerroristID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
}
cs_set_weapon_ammo(give_item(TerroristID, "weapon_m249"), 0)
wEnt = fm_find_ent_by_owner(-1, "weapon_m249", TerroristID)
if(wEnt)
{
cs_set_weapon_burst(wEnt, 2)
}
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
case 12:
{
cs_set_weapon_ammo(give_item(CounterID, "weapon_usp"), DAMMO)
cs_set_weapon_ammo(give_item(TerroristID, "weapon_usp"), 0)
fm_set_user_maxspeed(CounterID , 250.0 )
fm_set_user_maxspeed(TerroristID , 250.0 )
}
}
set_dhudmessage( 255, 255, 0, -1.0, -0.70, 1, 6.0, 3.0, 0.1, 1.5 )
show_dhudmessage(0, "!~FIGHT~!")
message_begin(MSG_ALL, get_user_msgid("ScreenFade"), {0,0,0}, 0)
write_short(5<<10)
write_short(5<<10)
write_short(0x0000)
write_byte(0)
write_byte(0)
write_byte(0)
write_byte(255)
message_end()
client_cmd(0, "mp3 play %s", FightDuelM)

if(!task_exists(TASK_ID_FIGHTING) && DuelNum != 1)
{
if(!Grenade[CounterID] && !Grenade[TerroristID])
{
ESPduelON[CounterID] = true
ESPduelON[TerroristID] = true
set_task(1.0, "AutoFighting", TASK_ID_FIGHTING, _, _, "b")
bFightCt = true
TimerFight = 15
}
}

return PLUGIN_CONTINUE
}
/**==============================================================================
==
Игрок авторизовался
================================================================================
=*/
public client_authorized(id)
client_cmd(id, "drawradar 1")
/**==============================================================================
==
Игрок покинул сервер
================================================================================
=*/
public client_disconnect(id)
{
new szMode[32]
get_cvar_string("deathrun_mode", szMode, charsmax( szMode ))
if(equal(szMode, "DUEL"))
{
if(id == CounterID)
{
Kill(CounterID)
ChatColor(0, "%s !teamКонтр Террорист !gсбежал - победил !teamТеррорист", PREFIX)
} else if(id == TerroristID) {
Kill(TerroristID)
ChatColor(0, "%s !teamТеррорист !gсбежал - победил !teamКонтр Террорист", PREFIX)
}
}
remove_task(id)
TouchWeapons[id] = false
Once[id] = false
Knife[id] = false
Deagle[id] = false
Grenade[id] = false
Scout[id] = false
Drob[id] = false
Awp[id] = false
Used[id] = false
NotYou[id] = false
DoIt[id] = false
Start[id] = false
InDuel[id] = false
Famas[id] = false
Ak47[id] = false
M4a1[id] = false
Glock18[id] = false
M249[id] = false
USP[id] = false
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Выключение неуязвимости
================================================================================
=*/
public GodOff(tskid)
{
new id = tskid - GODTID
set_pev(id, pev_takedamage, 1)
return PLUGIN_CONTINUE
}

/**==============================================================================
==
Эффект волны
================================================================================
=*/
public Beacon(id)
{
if(cs_get_user_team(id) == CS_TEAM_CT)
{
static origin[3]
get_user_origin(id, origin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMCYLINDER)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]-20)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+200)
write_short(BeaconSprite)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(2)
write_byte(1)
write_byte(0)
write_byte(0)
write_byte(255)
write_byte(255)
write_byte(0)
message_end()
} else {
static origin[3]
get_user_origin(id, origin)
message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
write_byte(TE_BEAMCYLINDER)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]-20)
write_coord(origin[0])
write_coord(origin[1])
write_coord(origin[2]+200)
write_short(BeaconSprite)
write_byte(0)
write_byte(1)
write_byte(6)
write_byte(2)
write_byte(1)
write_byte(255)
write_byte(0)
write_byte(0)
write_byte(255)
write_byte(0)
message_end()
}
set_task(1.0, "Beacon", id)
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Стоки...
Цветной чат
================================================================================
=*/
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!team", "^3")
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, SayText, _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Сообщение о смерти
================================================================================
=*/
stock DeathMsg(killer_id, victim_id, headshot, weaponname[])
{
message_begin(MSG_ALL, get_user_msgid("DeathMsg"))
write_byte(killer_id)
write_byte(victim_id)
write_byte(headshot)
write_string(weaponname)
message_end()
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Взять количество флагов
================================================================================
=*/
stock GetFlagsNum(pcvar)
{
new Duels = GetFlags(pcvar)
new DuelsNum = 0
for(new a = 0; a < DCOUNT; a++)
{
if(Duels & (1 << a))
{
DuelsNum++
}
}
return DuelsNum
}
/**==============================================================================
==
Взять флаги
================================================================================
=*/
stock GetFlags(pcvar)
{
new Flags[32]
get_pcvar_string(pcvar, Flags, 31)
return read_flags(Flags)
}
/**==============================================================================
==
Количество спецназа
================================================================================
=*/
stock GetCTsNum(alive)
{
new CTsNum = 0
for (new id = 1; id <= MaxPlayers; id++)
{
if(!is_user_connected(id))
{
continue
}
if(alive)
{
if(cs_get_user_team(id) == CS_TEAM_CT && is_user_alive(id))
{
CTsNum++
}
} else {
if(cs_get_user_team(id) == CS_TEAM_CT)
{
CTsNum++
}
}
}
return CTsNum
}
/**==============================================================================
==
Количество террористов
================================================================================
=*/
stock GetTsNum(alive)
{
new TsNum = 0
for (new id = 1; id <= MaxPlayers; id++)
{
if(!is_user_connected(id) || is_user_bot(id))
{
continue
}
if(alive)
{
if(cs_get_user_team(id) == CS_TEAM_T && is_user_alive(id))
{
TsNum++
}
} else {
if(cs_get_user_team(id) == CS_TEAM_T)
{
TsNum++
}
}
}
return TsNum
}
/**==============================================================================
==
Количество патронов в обойме
================================================================================
=*/
stock set_player_ammo(id, ammount)
{
if(!is_user_connected(id))
return PLUGIN_HANDLED;

static szWeaponName[32], idWeapon, IdCSW

IdCSW = get_user_weapon(id)
if(is_user_alive(id) && is_user_connected(id))
{
get_weaponname(IdCSW, szWeaponName, 31);
idWeapon = find_ent_by_owner(-1, szWeaponName, id);
if(idWeapon > 0)
cs_set_weapon_ammo(idWeapon, ammount);
}
return PLUGIN_CONTINUE;
}
/**==============================================================================
==
Убить игрока
================================================================================
=*/
stock Kill(id)
{
user_kill(id, 1)
return PLUGIN_CONTINUE
}
/**==============================================================================
==
ResetHUD
================================================================================
=*/
public newround_event(id) {

if (!g_round)
g_round = true

ESPduelON[ id ] = false;

return PLUGIN_CONTINUE
}
/**==============================================================================
==
Открытие меню ставок
================================================================================
=*/
public InitBettings()
{
if (!g_round) {
return
}
new const DEFAULTBET = get_cvar_num(CVAR_DEFAULTBET)
g_betting = true

for (new i = 1; i < 33; i++)
g_betperson[i] = 0

new bool:overridepreviousmenu, currentmenu, CsTeams:team, keys
if (get_cvar_num(OVERRIDEPREVIOUSMENU))
overridepreviousmenu = true
else
overridepreviousmenu = false

for (new i = 1; i <= MaxPlayers; i++)
{
if (!is_user_connected(i) || is_user_alive(i)) {
continue
}
if (!overridepreviousmenu)
{
get_user_menu(i, currentmenu, keys)
if (currentmenu > 0) {
continue
}
}
team = cs_get_user_team(i)
if (team != CS_TEAM_T && team != CS_TEAM_CT) {
continue
}

if (cs_get_user_money(i) < DEFAULTBET) {
ChatColor(i, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_NO_MONEY", DEFAULTBET)
continue
}

g_betamount[i] = 0

timer[i] = 12
set_task( 1.0, "BetMenu_Try", i + 41292, _, _, "a", timer[i] );
}
set_task(1.0, "displaybetshud", STABKUID, "", 0, "b")
}
public BetMenu_Try( id )
{
if ( id > 41292 )
id -= 41292

timer[id] -= 1;

if ( timer[id] < 1 )
{
if ( task_exists ( id + 41292 ) )
remove_task ( id + 41292 );

set_task ( 1.1, "closebetmenu", id + 41293 );

timers[id] = true
}
if(Duel)
{
startbet( id )
}
}
/**==============================================================================
==
Меню ставок
================================================================================
=*/
public startbet(id)
{
if (!is_user_connected(id))
return PLUGIN_HANDLED;

new flags
new str[512]
get_ending(timer[id], "секунд", "секунда", "секунды", sizeof str-1, str)
new const DEFAULTBET = get_cvar_num(CVAR_DEFAULTBET)
new pow = DEFAULTBET, pow2 = DEFAULTBET * 10
new money = cs_get_user_money(id)
new t_name[33], ct_name[33]
get_user_name(TerroristID, t_name, 31)
get_user_name(CounterID, ct_name, 31)

new len = formatex(MenuBody, 511, "\yМеню ставок^n")

len += formatex(MenuBody[len], 511 - len, "\dОсталось: \r%d\d %s^n^n", timer[id], str)
len += formatex(MenuBody[len], 511 - len, "\wДеньги: \r%d^n", money)
len += formatex(MenuBody[len], 511 - len, "\wСтавка: \r%d^n^n", g_betamount[id])

if(g_betamount[id] >= DEFAULTBET)
{
len += formatex(MenuBody[len], 511 - len, "\r1. \wПоставить на \yТ: \r%s^n", t_name)
flags |= MENUBUTTON1

len += formatex(MenuBody[len], 511 - len, "\r2. \wПоставить на \yСТ: \r%s^n", ct_name)
flags |= MENUBUTTON2
} else {
len += formatex(MenuBody[len], 511 - len, "\r1. \dПоставить на \yТ: \r%s^n", t_name)
len += formatex(MenuBody[len], 511 - len, "\r2. \dПоставить на \yСТ: \r%s^n", ct_name)
}

if(money >= g_betamount[id] + DEFAULTBET)
{
len += formatex(MenuBody[len], 511 - len, "\r3. \wПовысить ставку на \r%d^n", pow)
flags |= MENUBUTTON3
} else {
len += formatex(MenuBody[len], 511 - len, "\r3. \dПовысить ставку на \r%d^n", pow)
}
if(money >= g_betamount[id] + DEFAULTBET * 10)
{
len += formatex(MenuBody[len], 511 - len, "\r4. \wПовысить ставку на \r%d^n^n", pow2)
flags |= MENUBUTTON4
} else {
len += formatex(MenuBody[len], 511 - len, "\r4. \dПовысить ставку на \r%d^n^n", pow2)
}

if(g_betamount[id] < money)
{
len += formatex(MenuBody[len], 511 - len, "\r5. \wПоставить всё \y(\r%d\y)^n^n", money)
flags |= MENUBUTTON5
} else {
len += formatex(MenuBody[len], 511 - len, "\r5. \dПоставить всё \y(\r%d\y)^n^n", money)
}

if(g_betamount[id] - DEFAULTBET >= DEFAULTBET)
{
len += formatex(MenuBody[len], 511 - len, "\r6. \wПонизить ставку на \r%d^n", pow)
flags |= MENUBUTTON6
} else {
len += formatex(MenuBody[len], 511 - len, "\r6. \dПонизить ставку на \r%d^n", pow)
}
if(g_betamount[id] - DEFAULTBET * 10 >= DEFAULTBET)
{
len += formatex(MenuBody[len], 511 - len, "\r7. \wПонизить ставку на \r%d^n^n", pow2)
flags |= MENUBUTTON7
} else {
len += formatex(MenuBody[len], 511 - len, "\r7. \dПонизить ставку на \r%d^n^n", pow2)
}

len += formatex(MenuBody[len], 511 - len, "\r0. \wВыход")
flags |= MENUBUTTON0

set_pdata_int(id, OFFSET_CSMENUCODE, 0)
show_menu(id, flags, MenuBody)
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Действие меню ставок
================================================================================
=*/
public menu_fn(id, key)
{
if (!is_user_connected(id))
return PLUGIN_HANDLED;

new const DEFAULTBET = get_cvar_num(CVAR_DEFAULTBET)
new money = cs_get_user_money(id)
new CounterName[32], TerroristName[32], name[32]
get_user_name(id, name, 32)
get_user_name(CounterID, CounterName, 32)
get_user_name(TerroristID, TerroristName, 32)

switch (key)
{
case 0: // 1
{
if(Duel)
{
placebet(id, TEAM_T)
timers[id] = false
t_ctav_on[id] = true
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_PUT", name, g_betamount[id], TerroristName)
remove_task ( id + 41292 );
}
}
case 1: // 2
{
if(Duel)
{
placebet(id, TEAM_CT)
timers[id] = false
ct_ctav_on[id] = true
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_PUT", name, g_betamount[id], CounterName)
remove_task ( id + 41292 );
}
}
case 2: // 3
{
if(money >= g_betamount[id] + DEFAULTBET)
{
alterbet(id, DEFAULTBET)
startbet(id)
} else {
startbet(id)
}
}
case 3: // 4
{
if(money >= g_betamount[id] + DEFAULTBET * 10)
{
alterbet(id, DEFAULTBET * 10)
startbet(id)
} else {
startbet(id)
}
}
case 4: // 5
{
if(g_betamount[id] < cs_get_user_money(id))
{
new max_money = cs_get_user_money(id)
g_betamount[id] = max_money
startbet(id)
} else {
startbet(id)
}
}
case 5: // 6
{
if(g_betamount[id] - DEFAULTBET >= DEFAULTBET)
{
alterbet(id, -DEFAULTBET)
startbet(id)
} else {
startbet(id)
}
}
case 6: // 7
{
if(g_betamount[id] - DEFAULTBET * 10 >= DEFAULTBET)
{
alterbet(id, -DEFAULTBET * 10)
startbet(id)
} else {
startbet(id)
}
}
case 9: // 0
{
if(g_betting)
{
ChatColor(id, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_NO_BETS")
}
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_PLAYER_NO_BETS", name)
timers[id] = false
remove_task ( id + 41292 );
}
}
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Опоздание со ставкой..
================================================================================
=*/
placebet(id, choice)
{
if(!is_user_connected(id))
return

if(g_betting)
{
g_betperson[id] = choice
altermoney(id, -g_betamount[id])
new name[33]
get_user_name(id, name, 32)
} else {
client_print(id, print_center, "Ты опоздал со ставкой!")
}
}
alterbet(id, money) {
g_betamount[id] += money
}
altermoney(id, money) {
new newmoney = cs_get_user_money(id) + money

cs_set_user_money(id, newmoney)
}
roundendtasks(const TEAM)
{
if(!g_round)
return

g_round = false
if (g_betting) {
remove_task(TASKID_BETTIMER)
remove_task(TASKID_BETTIMERDISPLAY)
if (TEAM == TEAM_T || TEAM == TEAM_CT)
calculatebets(TEAM)
}
}
public roundend_t_event() {
roundendtasks(TEAM_T)
}
public roundend_ct_event() {
roundendtasks(TEAM_CT)
}
public roundend_draw_event() {
roundendtasks(0)
}
/**==============================================================================
==
Закрытие меню ставок
================================================================================
=*/
public closebetmenu()
{
new usermenu, userkeys
for (new i = 1; i <= MaxPlayers; i++)
{
if (!is_user_connected(i) || is_user_alive(i) || is_user_bot(i))
continue

timers[i] = false
remove_task ( i + 41292 );
get_user_menu(i, usermenu, userkeys)
if (usermenu == g_betmenu)
{
client_cmd(i, "slot10")
}
/*set_dhudmessage( 0, 255, 0, -1.0, -0.35, 1, 3.0, 3.0, 0.1, 1.5 )
show_dhudmessage(id, "Ставки сделаны!^n**Начнём мочилово!!**")*/
}
}
/**==============================================================================
==
Ставки... HUD сообщение
================================================================================
=*/
public displaybetshud()
{
new betamounts[2] = {0, 0}, betcount[2] = {0, 0}
new Message[512], id
Index--

for (id = 1; id <= MaxPlayers; id++)
{
if (!is_user_connected(id) || g_betperson[id] == 0)
continue

betamounts[g_betperson[id] - 1] += g_betamount[id]
betcount[g_betperson[id] - 1]++
}
for (id = 1; id <= MaxPlayers; id++)
{
new str[512], Len
get_ending(Index, "секунд", "секунда", "секунды", sizeof str-1, str)
Len = format(Message, 511, "До конца дуэли осталось %d %s!^n", Index, str)
if(Index > 60)
{
if(is_user_alive(id))
{
set_hudmessage(128, 128, 128, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^nЖизни Т: %d | Жизни CT: %d", get_user_health(TerroristID), get_user_health(CounterID))
} else if(t_ctav_on[id]) {
set_hudmessage(128, 128, 128, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d ", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на Т)", g_betamount[id])
} else if(ct_ctav_on[id]) {
set_hudmessage(128, 128, 128, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на CТ)", g_betamount[id])
} else {
set_hudmessage(128, 128, 128, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d ", betamounts[0], betamounts[1])
}
} else if(60 >= Index >= 31) {
if(is_user_alive(id))
{
set_hudmessage(128, 128, 128, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d ", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^nЖизни Т: %d | Жизни CT: %d", get_user_health(TerroristID), get_user_health(CounterID))
} else if(t_ctav_on[id]) {
set_hudmessage(128, 128, 128, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d ", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на Т)", g_betamount[id])
} else if(ct_ctav_on[id]) {
set_hudmessage(128, 128, 128, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на CТ)", g_betamount[id])
} else {
set_hudmessage(128, 128, 128, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d| CT: %d", betamounts[0], betamounts[1])
}
} else if(30 >= Index >= 16) {
if(is_user_alive(id))
{
set_hudmessage(255, 255, 0, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d $ | CT: %d $", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^nЖизни Т: %d | Жизни CT: %d", get_user_health(TerroristID), get_user_health(CounterID))
} else if(t_ctav_on[id]) {
set_hudmessage(255, 255, 0, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на Т)", g_betamount[id])
} else if(ct_ctav_on[id]) {
set_hudmessage(255, 255, 0, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на CТ)", g_betamount[id])
} else {
set_hudmessage(255, 255, 0, -1.0, 0.75, 0, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
}
} else if(Index <= 15) {
if(Index > 0)
{
if(is_user_alive(id))
{
set_hudmessage(255, 0, 0, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d| CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^nЖизни Т: %d | Жизни CT: %d", get_user_health(TerroristID), get_user_health(CounterID))
} else if(t_ctav_on[id]) {
set_hudmessage(255, 0, 0, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на Т)", g_betamount[id])
} else if(ct_ctav_on[id]) {
set_hudmessage(255, 0, 0, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
Len += format(Message[Len], 511 - Len, "^n^nВаша ставка: %d (на CТ)", g_betamount[id])
} else {
set_hudmessage(255, 0, 0, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^nСтавки:")
Len += format(Message[Len], 511 - Len, "^nТ: %d | CT: %d", betamounts[0], betamounts[1])
}
} else if(Index < 0) {
set_hudmessage(255, 0, 0, -1.0, 0.75, 1, 1.0, 1.0, _, _, 4)
Len += format(Message[Len], 511 - Len, "^n%L", LANG_PLAYER, "NO_WINNER")
roundendtasks(0)
Kill(CounterID)
Kill(TerroristID)
remove_task(STABKUID)
}
}
ShowSyncHudMsg(id, g_MsgHud3, "%s", Message)

if(!is_user_alive(CounterID))
{
remove_task(STABKUID)
roundendtasks(TEAM_T)
} else if(!is_user_alive(TerroristID)) {
remove_task(STABKUID)
roundendtasks(TEAM_CT)
}
}
return PLUGIN_CONTINUE
}
/**==============================================================================
==
Подсчёт выиграша!
================================================================================
=*/
calculatebets(result)
{
g_betting = false

new totalrightbets = 0, overallbets = 0
for (new i = 1; i < 33; i++) {
ct_ctav_on[i] = false
t_ctav_on[i] = false
if (g_betperson[i] == result)
totalrightbets += g_betamount[i]

if (g_betperson[i] == TEAM_T || g_betperson[i] == TEAM_CT)
overallbets += g_betamount[i]
}

if (overallbets == 0)
{
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_NO_BETS_ALL")
return
}
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_ALL_BETS", overallbets, totalrightbets)

new Float:wonmoney, name[33], Float:highestwonmoney = -1.0, nr_of_highestwinners = 0, highestwinners[32],CsTeams:team
for (new i = 1; i < 33; i++) {
if (i == g_t || i == g_ct || !is_user_connected(i) || is_user_bot(i))
continue

team = cs_get_user_team(i)
if (team != CS_TEAM_T && team != CS_TEAM_CT)
continue

get_user_name(i, name, 32)
if (totalrightbets > 0 && g_betperson[i] == result)
{
wonmoney = (float(g_betamount[i])) * 2
ChatColor(i, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_GIVE_MONEY", floatround(wonmoney) - g_betamount[i], g_betamount[i])
altermoney(i, floatround(wonmoney))
if (wonmoney - g_betamount[i] > highestwonmoney)
{
nr_of_highestwinners = 0
highestwinners[nr_of_highestwinners++] = i
highestwonmoney = wonmoney - g_betamount[i]
} else if (wonmoney - g_betamount[i] == highestwonmoney) {
highestwinners[nr_of_highestwinners++] = i
}
} else if (g_betperson[i] == 0) {
server_print("%s didn't place a bet this time...", name)
} else {
ChatColor(i, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_LOSE", g_betamount[i])
}
}

if (nr_of_highestwinners == 0)
{
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_LOSE_ALL", overallbets, g_pot += overallbets)
set_vaultpot(g_pot)
return
} else if (nr_of_highestwinners == 1) {
get_user_name(highestwinners[0], name, 32)
if (g_pot != 0)
{
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_PLAYER_JACK_POT", name, g_pot)
set_dhudmessage(255, 0, 255, -1.0, 0.40, 0, 6.0, 7.0, _, _, 4)
show_dhudmessage(0, "Игрок %s сорвал Jack Pot в размере: %d $", name, g_pot)
give_pot(nr_of_highestwinners, highestwinners)
} else {
if (highestwonmoney >= 1.0)
{
ChatColor(0, "%s %L", PREFIX_BETS, LANG_PLAYER, "BETS_PLAYER_KYH", name, floatround(highestwonmoney) + g_betamount[highestwinners[0]])
set_dhudmessage(0, 255, 0, -1.0, 0.40, 1, 6.0, 7.0, _, _, -1)
show_dhudmessage(0, "Игрок %s сорвал куш в размере: %d $", name, floatround(highestwonmoney) + g_betamount[highestwinners[0]])
}
}
} else {
new msg[128], len = 0
if (g_pot > 0)
{
len += format(msg[len], 127 - len, "Sharing the $%d pot: ", g_pot)
give_pot(nr_of_highestwinners, highestwinners)
} else
len += format(msg[len], 127 - len, "Best winners: ")

for (new i = 0; i < nr_of_highestwinners; i++)
{
get_user_name(highestwinners[i], name, 32)
len += format(msg[len], 127 - len, "%s ", name)
}
}
}

set_vaultpot(value)
{
new potstr[16]
num_to_str(value, potstr, 15)
set_vaultdata(VAULTKEY_POT, potstr)
}

/**==============================================================================
==
Выдать Джекпот
================================================================================
=*/

give_pot(nr_of_winners, winners[32])
{
new pot = g_pot
g_pot = 0
set_vaultpot(0)

if (nr_of_winners == 1)
{
altermoney(winners[0], pot)
return
}

if (nr_of_winners == 0) {
log_amx("%s: Error in script - division by zero error in give_pot! nr_of_winners: %d", nr_of_winners)
return
}
new share = pot/nr_of_winners
for (new i = 0; i < nr_of_winners; i++)
altermoney(winners[i], share)
}
#if FIGHTDISTANSION == 1
/**==============================================================================
==
Дистанция выстрела
================================================================================
=*/

public client_PreThink( id )
{
new origin[3]
get_user_origin(id, origin);

for(new i = 1; i <= MaxPlayers; ++i)
{
if(!is_user_alive(i) || !is_user_alive(id))
continue;

if(i != id && Duel && DuelNum != 1 && (i == CounterID || i == TerroristID) && (id == CounterID || id == TerroristID))
{
new Origin[3];

get_user_origin(i, Origin);

if(12 <= get_distance(origin, Origin) <= 300)
{
attacknodistanse[id] = true
attacknodistanse[i] = true
set_user_godmode(i, 1)
set_user_godmode(id, 1)
set_user_rendering(id, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 0)
set_user_rendering(i, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 0)
} else {
attacknodistanse[id] = false
attacknodistanse[i] = false
set_user_godmode(i, 0)
set_user_godmode(id, 0)
set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 0)
set_user_rendering(i, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 0)
}
}
}
}
#endif

/**==============================================================================
==
Получение Окончания
================================================================================
=*/
stock get_ending(num, const a[], const b[], const c[], lenght, output[])
{
new num100=num%100, num10=num%10;
if(num100>=5&&num100<=20||num10==0||num10>=5&&num10<=9) format(output, lenght, "%s", a);
else if(num10==1) format(output, lenght, "%s", b);
else if(num10>=2&&num10<=4) format(output, lenght, "%s", c);
}

/**==============================================================================
==
Спрайт дуели
================================================================================
=*/

public checkVisibility(id,pset){
if( !pev_valid( id ) ){
return FMRES_IGNORED;
}

new szClass[ 64 ];

pev( id , pev_classname , szClass , charsmax( szClass ) );

if( !equal( szClass , SPRITE_CLASSNAME ) ){
return FMRES_IGNORED;
}

forward_return(FMV_CELL,1)
return FMRES_SUPERCEDE
}

public addToFullPack( es_state, e, ENT, HOST, hostflags, player, set){
if( player || !is_user_alive( HOST ) ){
return FMRES_IGNORED;
}

if( !pev_valid( ENT ) ){
return FMRES_IGNORED;
}

new iOwner = pev( ENT , pev_owner );

if( !is_user_alive( iOwner ) || !ESPduelON[HOST] || temporarySprites[ pev( ENT , pev_owner ) ] != ENT || iOwner == HOST ){
return FMRES_IGNORED;
}

new Float: startPosition[ 3 ],
Float: endPosition[ 3 ],
Float: fEnd[ 3 ],
Float: fVector[ 3 ],
Float: fEndPosition[ 3 ],
Float: endVector[ 3 ],
Float: fLenNew,
Float: fLenOld;

calculateStartPosition( HOST , startPosition );
calculateEndPosition( iOwner , endPosition );
calculateVector( endPosition , startPosition , fVector );

traceLine( startPosition , endPosition , fEnd , HOST );

movePosition( fEnd , fVector , fEndPosition );

calculateEndVector( startPosition , fEndPosition , endVector );

fLenNew = xs_vec_len( endVector );
fLenOld = xs_vec_len( fVector );

set_es( es_state , ES_Origin , fEndPosition );
set_es( es_state , ES_ModelIndex , spriteIndex);
set_es( es_state , ES_Scale , fLenNew / fLenOld );

set_es( es_state, ES_RenderAmt , 255.0 );

return FMRES_HANDLED;
}

createSprite( iOwner ){
new iEnt = engfunc( EngFunc_CreateNamedEntity , engfunc( EngFunc_AllocString , "info_target" ) );

if( !pev_valid( iEnt ) ){
return 0;
}

set_pev( iEnt , pev_classname , SPRITE_CLASSNAME);

engfunc( EngFunc_SetSize , iEnt , Float:{ -1.0 , -1.0 , -1.0 } , Float:{ 1.0 , 1.0 , 1.0 } );
engfunc( EngFunc_SetOrigin , iEnt , Float:{ 306.0 , 2434.0 , -91.0 } );

engfunc( EngFunc_SetModel , iEnt , SPRITE_DUEL);

set_pev( iEnt, pev_renderfx, kRenderFxNone );
set_pev( iEnt, pev_rendercolor, Float:{ 255.0 , 255.0 , 255.0 } );
set_pev( iEnt, pev_rendermode, kRenderTransAdd );
set_pev( iEnt, pev_renderamt, 0.0 );

set_pev( iEnt , pev_solid , SOLID_NOT );
set_pev( iEnt , pev_movetype , MOVETYPE_NONE );

set_pev( iEnt, pev_owner , iOwner );

dllfunc(DLLFunc_Spawn, iEnt )

return iEnt;
}

calculateStartPosition( id , Float: startPosition[ 3 ] ){
new Float: fOrigin[ 3 ],
Float: fView[ 3 ];

pev( id , pev_origin , fOrigin );
pev( id , pev_view_ofs , fView );

xs_vec_add( fOrigin , fView , startPosition );
}

calculateEndPosition( id , Float: endPosition[ 3 ] ){
pev( id , pev_origin , endPosition );
endPosition[2]+=60.0
}

traceLine( Float:startPosition[ 3 ] , Float:endPosition[ 3 ] , Float:fEnd[ 3 ] , idSkip ){
new pTR = create_tr2();

engfunc( EngFunc_TraceLine , startPosition , endPosition , IGNORE_MONSTERS , idSkip , pTR );

get_tr2( pTR , TR_vecEndPos , fEnd );

free_tr2( pTR );
}

calculateVector( Float:startPosition[ 3 ] , Float:endPosition[ 3 ] , Float:fVector[ 3 ] ){
xs_vec_sub( endPosition , startPosition , fVector );
}

movePosition( Float: fPosition[ 3 ] , Float: fVector[ 3 ] , Float: fEndPosition[ 3 ] ){

new Float: fVectorCopy[ 3 ];

xs_vec_copy( fVector , fVectorCopy );

xs_vec_normalize( fVectorCopy , fVectorCopy );

xs_vec_mul_scalar( fVectorCopy , SPRITE_DISTANCE , fVectorCopy );

xs_vec_add( fPosition , fVectorCopy , fEndPosition );
}

calculateEndVector( Float: startPosition[ 3 ] , Float: fEnd[ 3 ] , Float: fEndVector[ 3 ] ){
xs_vec_sub( fEnd, startPosition , fEndVector );
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: