Русское сообщество по скриптингу

[AMXX] Run time error 10: native error (native "cs_set_weapo

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

[AMXX] Run time error 10: native error (native "cs_set_weapo

Сообщение Ice xD » 16 ноя 2011, 14:12

Помогите исправить ошибки.
Ошибки:
Код: Выделить всё
L 11/15/2011 - 00:42:31: Start of error session.
L 11/15/2011 - 00:42:31: Info (map "deathrun_onStyle_32") (file "addons/amxmodx/logs/error_20111115.log")
L 11/15/2011 - 00:42:31: [CSTRIKE] Non-player entity -1 out of range
L 11/15/2011 - 00:42:31: [AMXX] Displaying debug trace (plugin "deathrun_duels_5.amxx")
L 11/15/2011 - 00:42:31: [AMXX] Run time error 10: native error (native "cs_set_weapon_ammo")
L 11/15/2011 - 00:42:31: [AMXX]    [0] deathrun_duels_5.sma::StartGo (line 1265)
L 11/15/2011 - 07:01:39: Start of error session.
L 11/15/2011 - 07:01:39: Info (map "deathrun_laboratory") (file "addons/amxmodx/logs/error_20111115.log")
L 11/15/2011 - 07:01:39: [CSTRIKE] Non-player entity -1 out of range
L 11/15/2011 - 07:01:39: [AMXX] Displaying debug trace (plugin "deathrun_duels_5.amxx")
L 11/15/2011 - 07:01:39: [AMXX] Run time error 10: native error (native "cs_set_weapon_ammo")
L 11/15/2011 - 07:01:39: [AMXX]    [0] deathrun_duels_5.sma::StartGo (line 1265)

Плагин (sma)
Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
//#include <deathrun_manager>
/*================================================================================
    Данные о плагине
=================================================================================*/
#define PLUGIN "Дуель"
#define VERSION "2.5"
#define AUTHOR "No name"
#define PREFIX "!g[-=A.T.M=-]!y"

#define is_valid_player(%1) (1 <= %1 <= 32)
/*================================================================================
    Различные данные
=================================================================================*/
#define GODTID 100500
#define TIMERTID 100501
#define TIMER2TID 100502
#define INFORMERTID 100503
#define WAITTIMERTID 100504
#define MCOUNT 9
#define SCOUNT 20
#define DCOUNT 12
#define DAMMO 1
#define KWPN "world"
#define KHS 1
#define MENUBODY 1024
#define MAXORIGINS 2
#define MAXWORDS 100
/*================================================================================
    Константы
=================================================================================*/
new MaxPlayers
new ChoosedDuel
new DuelNum
new SayText
new BeaconSprite
new CounterID
new TerroristID
new MathAnswer
new RussianRouletteID
new RussianRouletteBullet
new Index
new Timer
new OriginsNum
new WordsNum

new g_MsgHud1
new g_MsgHud2
new g_MsgHud3

new PcvarDuels
new PcvarMusic
new PcvarTimer
new PcvarTimeLimit
new PcvarSpawnGod
new PcvarEffects
new PcvarInformer
new PcvarLastMenu
new PcvarWait
new PcvarMode
new PcvarTele

new MenuPosition[33]
new 
MenuTs[33]
new 
RussianRouletteName[64]
new 
MathTask[64]
new 
ConfigsDir[64]
new 
WordsFile[64]
new 
OriginsFile[128]
new 
WordAnswer[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:Math[33]
new 
bool:Word[33]
new 
bool:RussianRoulette[33]
new 
bool:Used[33]
new 
bool:Boom[33]
new 
bool:NotYou[33]
new 
bool:DoIt[33]
new 
bool:Start[33]
new 
bool:Spray[33]
new 
bool:Guntoss[33]
new 
bool:Famas[33]

new 
Origins[MAXORIGINS][128]
new 
Words[MAXWORDS][192]

new 
Music[MCOUNT][] = 
{
    
"media/Half-Life01.mp3",
    
"media/Half-Life02.mp3",
    
"media/Half-Life03.mp3",
    
"media/Half-Life08.mp3",
    
"media/Half-Life11.mp3",
    
"media/Half-Life12.mp3",
    
"media/Half-Life13.mp3",
    
"media/Half-Life16.mp3",
    
"media/Half-Life17.mp3"
}

new 
Sound[SCOUNT][] =
{
    
"fvox/one",
    
"fvox/two",
    
"fvox/three",
    
"fvox/four",
    
"fvox/five",
    
"fvox/six",
    
"fvox/seven",
    
"fvox/eight",
    
"fvox/nine",
    
"fvox/ten",
    
"fvox/eleven",
    
"fvox/twelve",
    
"fvox/thirteen",
    
"fvox/fourteen",
    
"fvox/fifteen",
    
"fvox/sixteen",
    
"fvox/seventeen",
    
"fvox/eighteen",
    
"fvox/nineteen",
    
"fvox/twenty"
}

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"
}
/*================================================================================
    Загрузка плагина
=================================================================================*/
public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_event("HLTV""RoundStart""a""1=0""2=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_Spawn"player""PlayerSpawn"1)
    
RegisterHam(Ham_Killed"player""PlayerKilled")
    
register_forward(FM_CmdStart,"CmdStart",1)
    
register_forward(FM_UpdateClientData"UpdateClientData"1)
    
register_clcmd("say /lr""CmdDuelsMenu")
    
register_clcmd("say /dd""CmdDuelsMenu")
    
register_clcmd("say_team /lr""CmdDuelsMenu")
    
register_clcmd("say_team /dd""CmdDuelsMenu")
    
register_clcmd("deathrun_duels""CmdDuelsMenu")
    
register_clcmd("say""hooksay")
    
register_clcmd("say_team""hooksay_team")
    
register_concmd("dd_origin_menu""CmdOriginsMenu"ADMIN_RCON)
    
PcvarDuels register_cvar("dd_duels""abcdefghijklm")
    
PcvarMusic register_cvar("dd_music""1")
    
PcvarTimer register_cvar("dd_timer""1")
    
PcvarTimeLimit register_cvar("dd_timelimit""120")
    
PcvarSpawnGod register_cvar("dd_spawngod""1")
    
PcvarEffects register_cvar("dd_effects""3")
    
PcvarWait register_cvar("dd_wait""5")
    
PcvarInformer register_cvar("dd_informer""0")
    
PcvarLastMenu register_cvar("dd_lastmenu""1")
    
PcvarTele register_cvar("dd_teleport""1")
    
PcvarMode register_cvar("deathrun_mode""BUTTONS"FCVAR_SERVER)
    
register_cvar("Deathrun Duels""!"FCVAR_SERVER|FCVAR_SPONLY)
    
register_menucmd(register_menuid("Duels Menu"), MENUBODY 1"ActionDuelsMenu")
    
register_menucmd(register_menuid("Enemy Menu"), MENUBODY 1"ActionEnemyMenu")
    
register_menucmd(register_menuid("Roulette Menu"), MENUBODY 1"ActionRussianRouletteMenu")
    
register_menucmd(register_menuid("Last Menu"), MENUBODY 1"ActionLastMenu")
    
register_menucmd(register_menuid("Origins Menu"), MENUBODY 1"ActionOriginsMenu")
    
SayText get_user_msgid("SayText")
    
MaxPlayers get_maxplayers()
    
g_MsgHud1 CreateHudSyncObj()
    
g_MsgHud2 CreateHudSyncObj()
    
g_MsgHud3 CreateHudSyncObj()
    
register_dictionary("deathrun_duels.txt")
    
set_task(1.0"Informer"INFORMERTID""0"b")
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Закачки плагина
=================================================================================*/
public plugin_precache() 
{    
    
BeaconSprite precache_model("sprites/shockwave.spr")
    
get_configsdir(ConfigsDircharsmax(ConfigsDir))
    
format(WordsFilecharsmax(WordsFile), "%s/deathrun_duels.ini"ConfigsDir)
    new 
cmap[32], Lendddir[128]
    
format(dddir127"%s/deathrun_duels"ConfigsDir)
    if(!
dir_exists(dddir))
    {
        
mkdir(dddir)
    }
    
get_mapname(cmap31)
    
format(OriginsFilecharsmax(OriginsFile), "%s/deathrun_duels/%s.ini"ConfigsDircmap)
    new 
0
    
if(file_exists(WordsFile))
    {
        while(
MAXWORDS && read_file(WordsFileWords[WordsNum], 191Len))
        {
            
i++
            if(
Words[WordsNum][0] == ';' || Len == 0)
            {
                continue
            }
            
WordsNum++
        }
    }
    
0
    
if(file_exists(OriginsFile))
    {
        while(
MAXORIGINS && read_file(OriginsFile,Origins[OriginsNum], 127Len))
        {
            
i++
            if(
Origins[OriginsNum][0] == ';' || Len == 0)
            {
                continue
            }
            
OriginsNum++
        }
    }
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Начало раунда
=================================================================================*/
public RoundStart()
{
    
Duel false
    Last 
false
    
if(get_pcvar_num(PcvarTimer))
    {
        
remove_task(TIMERTID)
    }
    
remove_task(TIMER2TID)
    
remove_task(WAITTIMERTID)
    
set_pcvar_string(PcvarMode"BUTTONS")
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Конец раунда
=================================================================================*/
public RoundEnd()
{
    if(
get_pcvar_num(PcvarMusic))
    {
        
client_cmd(0"cd fadeout")
    }
    if(
get_pcvar_num(PcvarTimer))
    {
        
remove_task(TIMERTID)
    }
    
remove_task(TIMER2TID)
    
remove_task(WAITTIMERTID)
    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(idpev_takedamage0)
        
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
    Math
[id] = false
    Word
[id] = false
    RussianRoulette
[id] = false
    Used
[id] = false
    NotYou
[id] = false
    DoIt
[id] = false
    Start
[id] = false
    Spray
[id] = false
    Guntoss
[id] = false
    InDuel
[id] = false
    Famas
[id] = false
    ChatColor
(id"%s %L"PREFIXLANG_PLAYER"SPAWN_MENU_INFO")
    if(
cs_get_user_team(id) == CS_TEAM_T && !is_user_bot(id))
    {
        
ChatColor(id"%s %L"PREFIXLANG_PLAYER"SPAWN_YOU_TER")
        
ChatColor(id"%s %L"PREFIXLANG_PLAYER"SPAWN_TER_MODES")
    }
    return 
PLUGIN_CONTINUE
}    
/*================================================================================
    Касание к оружию
=================================================================================*/
public TouchWeapon(weaponid)
{
    if(!
is_user_connected(id))
    {
        return 
HAM_IGNORED
    
}
    if(
TouchWeapons[id] || cs_get_user_team(id) == CS_TEAM_T)
    {
        return 
HAM_SUPERCEDE
    
}
    return 
HAM_IGNORED
}
/*================================================================================
    Использование комманд (отлов выстрела)
=================================================================================*/
public CmdStart(playeruc_handlerandom_seed)
{
    if(!
is_user_alive(player) || player || player 32)
    {
        return 
FMRES_IGNORED
    
}
    new 
Buttons get_uc(uc_handleUC_Buttons)
    if(
Buttons IN_ATTACK && Used[player])
    {
        if(
Famas[player] && get_user_weapon(player__) == CSW_FAMAS)
        {
            new 
wEnt fm_find_ent_by_owner(-1"weapon_famas"player);
            
cs_set_weapon_burst(wEnt1)
        }
        if(!
NotYou[player])
        {
            if(
player == RussianRouletteID && DoIt[player])
            {    
                new 
id player
                get_user_name
(idRussianRouletteName63)
                
set_hudmessage(02550, -1.00.301.02.00.50.52)
                
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"RRDOING"RussianRouletteName)
                
set_task(3.0"RussianRouletteStop"id)
                
DoIt[id] = false
                Start
[id] = true
            
}
            else if(
player == RussianRouletteID && Start[player])
            {
                
client_print(playerprint_center"%L"LANG_PLAYER"RRWAIT")
            }
            else
            {
                
client_print(playerprint_center"%L"LANG_PLAYER"RRNOTYOU")
            }
        }
        else if(
Boom[player])
        {
            
get_user_name(playerRussianRouletteName63)
            
set_hudmessage(0255255, -1.00.211.05.01.01.04)
            
ShowSyncHudMsg(0g_MsgHud3"%L"LANG_PLAYER"RRBOOM"RussianRouletteName)
            
client_cmd(0"spk weapons/deagle-1")
            
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            
DeathMsg(playerplayerKHSKWPN)
            
Kill(player)
            
Used[CounterID] = false
            Used
[TerroristID] = false
        
}
        else if(!
Boom[player])
        {
            if(
player == CounterID)
            {
                
get_user_name(TerroristIDRussianRouletteName63)
                
RussianRouletteMenu(TerroristID)
                
NotYou[player] = false
                DoIt
[TerroristID] = true
                RussianRouletteID 
TerroristID
            
}
            else if(
player == TerroristID)
            {
                
get_user_name(CounterIDRussianRouletteName63)
                
RussianRouletteMenu(CounterID)
                
NotYou[player] = false
                DoIt
[CounterID] = true
                RussianRouletteID 
CounterID
            
}
            
set_hudmessage(02550, -1.00.201.03.00.50.54)
            
ShowSyncHudMsg(0g_MsgHud3"%L"LANG_PLAYER"RRNOTBOOM"RussianRouletteName)
            
client_cmd(0"spk weapons/dryfire_pistol")
        }
        
Buttons &= ~IN_ATTACK
        set_uc
(uc_handleUC_ButtonsButtons)
    }
    if(
Deagle[player])
    {
        
cs_set_user_bpammo(playerCSW_DEAGLE1)
    }
    if(
Scout[player])
    {
        
cs_set_user_bpammo(playerCSW_SCOUT1)
    }
    if(
Drob[player])
    {
        
cs_set_user_bpammo(playerCSW_M31)
    }
    if(
Awp[player])
    {
        
cs_set_user_bpammo(playerCSW_AWP1)
    }
    if(
Famas[player] && get_user_weapon(player__) == CSW_FAMAS)
    {
        new 
wEnt fm_find_ent_by_owner(-1"weapon_famas"player)
        if(
wEnt)
        {
            
cs_set_weapon_burst(wEnt1)
            
cs_set_user_bpammo(playerCSW_FAMAS3)
        }
    }
    return 
FMRES_HANDLED
}
/*================================================================================
    Обновление данных о игроке
=================================================================================*/
public UpdateClientData(idsendweaponscd_handle)
{
    if(!
is_user_alive(id))
    {
        return 
FMRES_IGNORED
    
}
    if(
Used[id] && InDuel[id])
    {
        
set_cd(cd_handleCD_ID0)
    }
    return 
FMRES_HANDLED
}
/*================================================================================
    Смерть игрока
=================================================================================*/
public PlayerKilled(victimattackershouldgib)
{
    if(
victim <= || attacker <= || victim >= 33 || attacker >= 33)
    {
        return 
PLUGIN_HANDLED
    
}
    if(
Duel)
    {
        if(
cs_get_user_team(victim) == CS_TEAM_CT && InDuel[victim])
        {
            if(
RussianRoulette[victim] || Math[victim] || Word[victim])
            {
                if(
victim == CounterID)
                {
                    
attacker TerroristID
                
}
                else if(
victim == TerroristID)
                {
                    
attacker CounterID
                
}
                
TouchWeapons[attacker] = false
                Once
[attacker] = false
                Knife
[attacker] = false
                Deagle
[attacker] = false
                Grenade
[attacker] = false
                Scout
[attacker] = false
                Drob
[attacker] = false
                Awp
[attacker] = false
                Math
[attacker] = false
                Word
[attacker] = false
                RussianRoulette
[attacker] = false
                Used
[attacker] = false
                NotYou
[attacker] = false
                DoIt
[attacker] = false
                Start
[attacker] = false
                Spray
[attacker] = false
                Guntoss
[attacker] = false
                InDuel
[attacker] = false
                Famas
[attacker] = false
                Duel 
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 == && TsNum >= 1)
            {
                
DuelsMenu(idMenuPosition[id] = 0)
            }
            else if(
TsNum 1)
            {
                
ChatColor(id"%s %L"PREFIXLANG_PLAYER,"NOT_TS")
            }
            else if(
CTsNum 1)
            {
                
ChatColor(id"%s %L"PREFIXLANG_PLAYER,"ONLY_LAST")
            }
        }
        else
        {
            
ChatColor(id"%s %L"PREFIXLANG_PLAYER"ONLY_CTS")
        }
    }
    return 
PLUGIN_HANDLED
}

/*================================================================================
    Меню дуэлей
=================================================================================*/
public DuelsMenu(idposition)
{
    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
    
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(MenuBodyMENUBODY 1"\y%L^n^n"LANG_PLAYER"CHOOSE_DUEL")
    for(new 
MenuStartMenuEnda++)
    {
        if(
Flags & (<< a))
        {
            
Keys |= (<< b)
            
Len += format(MenuBody[Len], MENUBODY Len"\r%d. \w%L^n", ++bLANG_PLAYERDuels[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^n\y%s v%s by %s^n!"LANG_PLAYER"DD_MENU_MORE"LANG_PLAYERposition "DD_MENU_BACK" "DD_MENU_EXIT"PLUGINVERSIONAUTHOR)
    }
    else
    {
        
Len += format(MenuBody[Len], MENUBODY Len"^n\r0. \w%L^n^n\y%s v%s by %s^n!"LANG_PLAYERposition "DD_MENU_BACK" "DD_MENU_EXIT"PLUGINVERSIONAUTHOR)
    }
    
show_menu(idKeysMenuBody, -1"Duels Menu")
}
/*================================================================================
    Действие меню дуэлей
=================================================================================*/
public ActionDuelsMenu(idkey)
{
    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] * key
                EnemyMenu
(idMenuPosition[id] = 0)
            }
        }
    }    
}
/*================================================================================
    Меню выбора противника
=================================================================================*/
public EnemyMenu(idposition)
{
    if(
position 0)
    {
        return
    }
    new 
TsNum 0
    
for(new aid 1aid <= MaxPlayersaid++)
    {
        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 0
    
new Names[32]
    
Len format(MenuBodyMENUBODY 1"\y%L^n^n"LANG_PLAYER"CHOOSE_ENEMY")
    for(new 
MenuStartMenuEnda++)
    {
        
get_user_name(MenuTs[a], Names31)
        
Keys |= (<< b)
        
Len += format(MenuBody[Len], MENUBODY Len"\r%d. \w%s^n", ++bNames)
    }
    if(
MenuEnd != TsNum)
    {
        
Keys |= MENU_KEY_9
        Len 
+= format(MenuBody[Len], MENUBODY Len"^n\r9. \w%L^n\r0. \w%L^n^n\y%s v%s by %s^n!"LANG_PLAYER"DD_MENU_MORE"LANG_PLAYERposition "DD_MENU_BACK" "DD_MENU_EXIT"PLUGINVERSIONAUTHOR)
    }
    else
    {
        
Len += format(MenuBody[Len], MENUBODY Len"^n\r0. \w%L^n^n\y%s v%s by %s^n!"LANG_PLAYERposition "DD_MENU_BACK" "DD_MENU_EXIT"PLUGINVERSIONAUTHOR)
    }
    
show_menu(idKeysMenuBody, -1"Enemy Menu")
}
/*================================================================================
    Действие выбора противника
=================================================================================*/
public ActionEnemyMenu(idkey)
{
    switch(
key)
    {
        case 
8:
        {
            
EnemyMenu(id, ++MenuPosition[id])
        }
        case 
9:
        {
            
EnemyMenu(id, --MenuPosition[id])
        }
        default:
        {
            if(
GetTsNum(1) || GetCTsNum(1) == || is_user_alive(id))
            {
                new 
Choosed MenuPosition[id] * key
                
new Enemy MenuTs[Choosed]
                
StartDuel(idEnemy)
            }
        }
    }    
}

public 
CmdOriginsMenu(idlevelcid)
{
    if(!
cmd_access(idlevelcid1))
    {
        return 
PLUGIN_HANDLED
    
}
    else
    {
        
ShowOriginsMenu(id)
    }
    return 
PLUGIN_CONTINUE
}

public 
ShowOriginsMenu(id)
{
    new 
Keys MENU_KEY_0
    
new Len
    Len 
format(MenuBodyMENUBODY"\y%L^n^n"id"ORIGINS_TITLE")
    
Keys |= (<< 0)
    
Len += format(MenuBody[Len], MENUBODY Len"\r1. \w%L^n"id"SAVE_POSITION")
    
Keys |= (<< 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\y%s v%s by %s^n!"id"DD_MENU_EXIT"PLUGINVERSIONAUTHOR)
    
show_menu(idKeysMenuBody, -1"Origins Menu")
    return 
PLUGIN_CONTINUE
}

public 
ActionOriginsMenu(idkey)
{
    switch(
key)
    {
        case 
0:
        {
            new  
vec[3]
            
get_user_origin(idvec)
            
add_spawn(vec)
            
client_print(idprint_center"*** Saved ***")
            
ShowOriginsMenu(id)
        }
        case 
1:
        {
            if(
file_exists(OriginsFile))
            {
                
delete_file(OriginsFile)
                
client_print(idprint_center"*** Deleted ***")
                
ShowOriginsMenu(id)
            }
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
add_spawn(vecs[3])
{
    new 
Line[128]
    
format(Line127"%d %d %d",vecs[0], vecs[1], vecs[2])
    
write_file(OriginsFileLine)
    return 
PLUGIN_CONTINUE
}

public 
SetOrigins(ctidterid)
{
    if(!
file_exists(OriginsFile) || !get_pcvar_num(PcvarTele))
    {
        return 
PLUGIN_CONTINUE
    
}
    new 
pos[4][8]
    
parse(Origins[0], pos[1], 7pos[2], 7pos[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(ctidVec)
    
parse(Origins[1], pos[1], 7pos[2], 7pos[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(teridVec)
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Начало дуэли
=================================================================================*/
public StartDuel(idtempid)
{
    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
    
}
    new 
challenger[32], challenged[32]
    
get_user_name(idchallenger31)
    
get_user_name(tempidchallenged31)
    
strip_user_weapons(id)
    
strip_user_weapons(tempid)
    
set_user_health(id100)
    
set_user_health(tempid100)
    switch(
get_pcvar_num(PcvarEffects))
    {
        case 
1:
        {
            
set_user_rendering(idkRenderFxGlowShell00150kRenderNormal20)    
            
set_user_rendering(tempidkRenderFxGlowShell15000kRenderNormal20)
        }
        case 
2:
        {
            
set_task(1.0"Beacon"id)
            
set_task(1.0"Beacon"tempid)
        }
        case 
3:
        {
            
set_user_rendering(idkRenderFxGlowShell00150kRenderNormal20)    
            
set_task(1.0"Beacon"id)
            
set_user_rendering(tempidkRenderFxGlowShell15000kRenderNormal20)
            
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
    Timer 
get_pcvar_num(PcvarWait)
    
Index get_pcvar_num(PcvarTimeLimit) + 1
    set_pcvar_string
(PcvarMode"DUEL")
    new 
Flags GetFlags(PcvarDuels)
    
DuelNum 0
    
new DuelIndex
    
while(DuelIndex <= ChoosedDuel)
    {
        if(
Flags & (<< DuelNum))
        {
            
DuelIndex++
        }
        
DuelNum ++
    }
    
SetOrigins(idtempid)
    switch(
DuelNum)
    {
        case 
1:
        {
            
Knife[id] = true
            Knife
[tempid] = true
            Duel 
true
            ChatColor
(0"%s %L"PREFIXLANG_PLAYER,"KNIFE1",  challengerchallenged)     
            
set_task(0.0"StartWait"WAITTIMERTID)
            return 
PLUGIN_HANDLED
        
}
        case 
2:
        {
            
Deagle[id] = true
            Deagle
[tempid] = true
            Duel 
true
            ChatColor
(0"%s %L"PREFIXLANG_PLAYER,"DEAGLE1"challengerchallenged
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"DEAGLE2")
            
set_task(0.0"StartWait"WAITTIMERTID)
            return 
PLUGIN_HANDLED 
        
}
        case 
3:
        {
            
Grenade[id] = true
            Grenade
[tempid] = true
            Duel 
true
            ChatColor
(0"%s %L"PREFIXLANG_PLAYER,"GRENADE1"challengerchallenged
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"GRENADE2"
            
set_task(0.0"StartWait"WAITTIMERTID)
            return 
PLUGIN_HANDLED
        
}
        case 
4:
        {
            
Scout[id] = true
            Scout
[tempid] = true
            Duel 
true
            ChatColor
(0"%s %L"PREFIXLANG_PLAYER,"SCOUT1"challengerchallenged
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"SCOUT2"
            
set_task(0.0"StartWait"WAITTIMERTID)
            return 
PLUGIN_HANDLED
        
}
        case 
5:
        {
            
Drob[id] = true
            Drob
[tempid] = true
            Duel 
true
            ChatColor
(0"%s %L"PREFIXLANG_PLAYER,"DROB1"challengerchallenged
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"DROB2"
            
set_task(0.0"StartWait"WAITTIMERTID)
            return 
PLUGIN_HANDLED
        
}
        case 
6:
        {
            
Awp[id] = true
            Awp
[tempid] = true
            Duel 
true
            ChatColor
(0"%s %L"PREFIXLANG_PLAYER,"AWP1"challengerchallenged
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"AWP2"
            
set_task(0.0"StartWait"WAITTIMERTID)
            return 
PLUGIN_HANDLED
        
}
        case 
7:
        {
            
Famas[id] = true
            Famas
[tempid] = true
            Duel 
true
            ChatColor
(0"%s %L"PREFIXLANG_PLAYER"FAMAS1"challengerchallenged)
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER"FAMAS2")
            
set_task(0.0"StartWait"WAITTIMERTID)
            return 
PLUGIN_HANDLED
        
}
        case 
8:
        {
            
RussianRoulette[id] = true
            RussianRoulette
[tempid] = true
            Duel 
true
            RussianRouletteBullet 
random_num(13)
            
cs_set_weapon_ammo(give_item(id"weapon_deagle"), RussianRouletteBullet)
            
cs_set_weapon_ammo(give_item(tempid"weapon_deagle"), RussianRouletteBullet)
            
StartRussianRoulette(idtempid)
            if(
get_pcvar_num(PcvarMusic))
            {
                new 
musicnum random_num(0MCOUNT-1)
                
client_cmd(0"mp3volume 0.5")
                
client_cmd(0"mp3 play %s"Music[musicnum])
            }
            return 
PLUGIN_HANDLED
        
}
        case 
9:
        {
            
Math[id] = true
            Math
[tempid] = true
            Duel 
true
            StartMathDuel
(idtempid)
            return 
PLUGIN_HANDLED
        
}
        case 
10:
        {
            
Word[id] = true
            Word
[tempid] = true
            Duel 
true
            StartWordDuel
(idtempid)
            return 
PLUGIN_HANDLED
        
}
        case 
11:
        {
            
Spray[id] = true
            Spray
[tempid] = true
            Duel 
true
            give_item
(id"weapon_knife")    
            
give_item(tempid"weapon_knife")
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"SPRAY1"challengerchallenged
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"SPRAY2"
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"SPRAY3"challenger
        }
        case 
12:
        {
            
Guntoss[id] = true
            Guntoss
[tempid] = true
            Duel 
true
            give_item
(id"weapon_knife")    
            
give_item(tempid"weapon_knife")
            
cs_set_weapon_ammo(give_item(id"weapon_deagle"), 0)
            
cs_set_weapon_ammo(give_item(tempid"weapon_deagle"), 0)
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"GUNTOSS1"challengerchallenged
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"GUNTOSS2"
            
ChatColor(0"%s %L"PREFIXLANG_PLAYER,"GUNTOSS3"challenger
        }
    }
    if(
get_pcvar_num(PcvarMusic))
    {
        new 
musicnum random_num(0MCOUNT-1)
        
client_cmd(0"mp3volume 0.5")
        
client_cmd(0"mp3 play %s"Music[musicnum])
    }
    if(
get_pcvar_num(PcvarTimer))
    {
        
set_task(0.0"DuelTimer"TIMERTID)
    }
    
Duel true
    
return PLUGIN_HANDLED
}
/*================================================================================
    Таймер
=================================================================================*/
public DuelTimer()
{
    
Index--
    if(
Index 60)
    {
        
set_hudmessage(02550, -1.00.2501.01.0__2)
        if(
Math[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexMathTask)
        }
        else if(
Word[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexWordAnswer)
        }
        else 
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER"Index)
        }
        
set_task(1.0"DuelTimer"TIMERTID)
    }
    else if(
60 >= Index >= 46)
    {
        
set_hudmessage(02550, -1.00.2501.01.0__2)
        if(
Math[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexMathTask)
        }
        else if(
Word[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexWordAnswer)
        }
        else 
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER"Index)
        }
        
set_task(1.0"DuelTimer"TIMERTID)
    }
    else if(
45 >= Index >= 31)
    {
        
set_hudmessage(02550, -1.00.2501.01.0__2)
        if(
Math[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexMathTask)
        }
        else if(
Word[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexWordAnswer)
        }
        else 
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER"Index)
        }
        
set_task(1.0"DuelTimer"TIMERTID)
    }
    else if(
30 >= Index >= 16)
    {
        
set_hudmessage(0255255, -1.00.2501.01.0__2)
        if(
Math[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexMathTask)
        }
        else if(
Word[CounterID])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexWordAnswer)
        }
        else 
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER"Index)
        }
        
set_task(1.0"DuelTimer"TIMERTID)
    }
    else if(
Index <= 15)
    {
        
set_hudmessage(0255255, -1.00.2511.01.0__2)
        if(
Index 0)
        {
            if(
Math[CounterID])
            {
                
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexMathTask)
            }
            else if(
Word[CounterID])
            {
                
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER2"IndexWordAnswer)
            }
            else 
            {
                
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUEL_TIMER"Index)
            }
        }
        else if(
Index 0)
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"NO_WINNER")
            
Kill(CounterID)
            
Kill(TerroristID)
            
remove_task(TIMERTID)
            if(
get_pcvar_num(PcvarMusic))
            {
                
client_cmd(0"cd fadeout")
            }
        }
        
set_task(1.0"DuelTimer"TIMERTID)
    }
    if(!
is_user_alive(CounterID) || !is_user_alive(TerroristID))
    {
        
remove_task(TIMERTID)
        if(
get_pcvar_num(PcvarMusic))
        {
            
client_cmd(0"cd fadeout")
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
DuelTimer2()
{
    
set_hudmessage(02550, -1.00.2501.01.0__2)
    if(
Math[CounterID])
    {
        
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUELTASK"MathTask)
    }
    if(
Word[TerroristID])
    {
        
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"DUELTASK"WordAnswer)
    }
    
set_task(1.0"DuelTimer2"TIMER2TID)
    if(!
is_user_alive(CounterID) || !is_user_alive(TerroristID))
    {
        
remove_task(TIMER2TID)
        if(
get_pcvar_num(PcvarMusic))
        {
            
client_cmd(0"cd fadeout")
        }
    }
}
/*================================================================================
    Математическая дуэль
=================================================================================*/
public StartMathDuel(ctter)
{
    new 
num1,num2,num3,num4,modectname[64], tername[64]
    
mode random_num(06)
    
num1 random_num(1100)
    
num2 random_num(110)
    
num3 random_num(1100)
    
num4 random_num(110)
    
get_user_name(ctctname63)
    
get_user_name(tertername63)
    switch(
mode)
    {
        case 
0:
        {
            
format(MathTask63"%d + %d + %d + %d = ?"num1num2num3num4)
            
MathAnswer num1 num2 num3 num4
        
}
        case 
1:
        {
            
format(MathTask63"%d + %d + %d - %d = ?"num1,num2,num3,num4)
            
MathAnswer num1 num2 num3 num4
        
}
        case 
2:
        {
            
format(MathTask63"%d + %d - %d + %d = ?"num1num2num3num4)
            
MathAnswer num1 num2 num3 num4
        
}
        case 
3:
        {
            
format(MathTask63"%d - %d + %d + %d = ?"num1num2num3num4)
            
MathAnswer num1 num2 num3 num4
        
}
        case 
4:
        {
            
format(MathTask63"%d + %d - %d - %d = ?"num1num2num3num4)
            
MathAnswer num1 num2 num3 num4
        
}
        case 
5:
        {
            
format(MathTask63"%d - %d + %d - %d = ?"num1num2num3num4)
            
MathAnswer num1 num2 num3 num4
        
}
        case 
6:
        {
            
format(MathTask63"%d - %d - %d + %d = ?"num1num2num3num4)
            
MathAnswer num1 num2 num3 num4
        
}
    }
    
ChatColor(0"%s %L"PREFIXLANG_PLAYER"MATH1"ctnametername)
    
ChatColor(0"%s %L"PREFIXLANG_PLAYER"MATH2")
    
set_task(0.0"StartWait"WAITTIMERTID)
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Словесная дуэль
=================================================================================*/
public StartWordDuel(ctter)
{
    new 
ctname[64], tername[64]
    
format(WordAnswercharsmax(WordAnswer), "%s"Words[random_num(0WordsNum)])
    
get_user_name(ctctname63)
    
get_user_name(tertername63)
    
ChatColor(0"%s %L"PREFIXLANG_PLAYER"WORD1"ctnametername)
    
ChatColor(0"%s %L"PREFIXLANG_PLAYER"WORD2")
    
set_task(0.0"StartWait"WAITTIMERTID)
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Ожидание дуэли
=================================================================================*/
public StartWait()
{
    
set_hudmessage(02550, -1.00.2501.01.0__2)
    switch(
DuelNum)
    {
        case 
1:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"KNIFE_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
2:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"DEAGLE_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
3:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"GRENADE_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
4:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"SCOUT_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
5:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"DROB_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
6:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"AWP_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
7:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"FAMAS_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
9:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"MATH_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
        case 
10:
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L^n%L"LANG_PLAYER"WORD_WAIT"LANG_PLAYER"STARTAFTER"Timer)
        }
    }
    
Timer--
    
client_cmd(0"spk %s"Sound[Timer])
    if(
Timer <= 0)
    {
        
set_task(1.0"StartGo")
    }
    else
    {
        
        
set_task(1.0"StartWait"WAITTIMERTID)
    }
    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")    
        }
        case 
2:
        {
            
cs_set_weapon_ammo(give_item(CounterID"weapon_deagle"), DAMMO)
            
cs_set_weapon_ammo(give_item(TerroristID"weapon_deagle"), DAMMO)
        }
        case 
3:
        {
            
give_item(CounterID"weapon_hegrenade")
            
give_item(TerroristID"weapon_hegrenade")
            
cs_set_user_bpammo(CounterIDCSW_HEGRENADE100)        
            
cs_set_user_bpammo(TerroristIDCSW_HEGRENADE100)
        }
        case 
4:
        {
            
cs_set_weapon_ammo(give_item(CounterID"weapon_scout"), DAMMO)
            
cs_set_weapon_ammo(give_item(TerroristID"weapon_scout"), DAMMO)
        }
        case 
5:
        {
            
cs_set_weapon_ammo(give_item(CounterID"weapon_m3"), 8)
            
cs_set_weapon_ammo(give_item(TerroristID"weapon_m3"), 8)
        }
        case 
6:
        {
            
cs_set_weapon_ammo(give_item(CounterID"weapon_awp"), DAMMO)
            
cs_set_weapon_ammo(give_item(TerroristID"weapon_awp"), DAMMO)
        }
        case 
7:
        {
            
cs_set_weapon_ammo(give_item(CounterID"weapon_famas"), 3)
            new 
wEnt fm_find_ent_by_owner(-1"weapon_famas"CounterID)
            if(
wEnt)
            {
                
cs_set_weapon_burst(wEnt1)
            }
            
cs_set_weapon_ammo(give_item(TerroristID"weapon_famas"), 3)
            
wEnt fm_find_ent_by_owner(-1"weapon_famas"TerroristID)
            if(
wEnt)
            {
                
cs_set_weapon_burst(wEnt1)
            }
        }
    }
    if(
get_pcvar_num(PcvarMusic))
    {
        new 
musicnum random_num(0MCOUNT-1)
        
client_cmd(0"mp3volume 0.5")
        
client_cmd(0"mp3 play %s"Music[musicnum])
    }
    if(
get_pcvar_num(PcvarTimer))
    {
        
set_task(0.0"DuelTimer"TIMERTID)
    }
    else if(
Math[CounterID] || Word[CounterID])
    {
        
set_task(0.0"DuelTimer2"TIMER2TID)
    }
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Старт русской рулетки
=================================================================================*/
public StartRussianRoulette(ctter)
{
    new 
ctname[64], tername[64]
    
get_user_name(ctctname63)
    
get_user_name(tertername63)
    
ChatColor(0"%s %L"PREFIXLANG_PLAYER"RR1"ctnametername)
    
ChatColor(0"%s %L"PREFIXLANG_PLAYER"RR2")
    
ChatColor(0"%s %L"PREFIXLANG_PLAYER"RR3"ctname)
    
set_hudmessage(02550, -1.00.201.02.00.50.54)
    
ShowSyncHudMsg(0g_MsgHud3"%L"LANG_PLAYER"RRSTART"ctnameRussianRouletteBullet)
    
RussianRouletteMenu(ct)
    
Used[ct] = true
    Used
[ter] = true
    NotYou
[ct] = false
    NotYou
[ter] = false
    RussianRouletteID 
ct
    
return PLUGIN_CONTINUE
}
/*================================================================================
    Меню русской рулетки
=================================================================================*/
public RussianRouletteMenu(id)
{
    new 
Len
    
new Keys MENU_KEY_0
    Len 
format(MenuBodyMENUBODY 1"\y%L\w^n^n"LANG_PLAYER"RRTITLE")
    
Keys |= (<< 0)
    
Len += format(MenuBody[Len], MENUBODY Len"\r1. \w%L^n^n\y%s v%s by %s^n!"LANG_PLAYER"RRDO"PLUGINVERSIONAUTHOR)
    
DoIt[id] = true
    show_menu
(idKeysMenuBody, -1"Roulette Menu")
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Запуск барабана
=================================================================================*/
public ActionRussianRouletteMenu(idKey)
{
    if(!
DoIt[id])
    {
        return 
PLUGIN_HANDLED
    
}
    
get_user_name(idRussianRouletteName63)
    
set_hudmessage(02550, -1.00.301.02.00.50.52)
    
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"RRDOING"RussianRouletteName)
    
set_task(3.0"RussianRouletteStop"id)
    
DoIt[id] = false
    Start
[id] = true
    
return PLUGIN_HANDLED
}
/*================================================================================
    Остановка барабана
=================================================================================*/
public RussianRouletteStop(id)
{
    new 
RuletteRandom
    RuletteRandom 
random_num(17)
    
get_user_name(idRussianRouletteName63)
    if(
RussianRouletteBullet == && RuletteRandom == 1)
    {
        
Boom[id] = true
    
}
    else if(
RussianRouletteBullet == && RuletteRandom == 2)
    {
        
Boom[id] = true
    
}
    else if(
RussianRouletteBullet == && RuletteRandom == 3)
    {
        
Boom[id] = true
    
}
    else
    {
        
Boom[id] = false
    
}
    
NotYou[id] = true
    Start
[id] = false
    set_hudmessage
(02550, -1.00.301.02.00.50.52)
    
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"RRPRESS"RussianRouletteName)
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Проверка ответа в общем чате
=================================================================================*/
public hooksay(id)
{
    if(!
Math[id] && !Word[id])
    {
        return 
PLUGIN_CONTINUE
    
}
    new 
Msg[256], smanswer[32], wname[32]
    
read_args(Msg255)
    
remove_quotes(Msg)
    
num_to_str(MathAnswersmanswer31)
    if((
Math[id] && equal(Msgsmanswer)) || (Word[id] && equal(MsgWordAnswer)))
    {
        if(
get_pcvar_num(PcvarTimer))
        {
            
remove_task(TIMERTID)
        }
        if(
get_pcvar_num(PcvarMusic))
        {
            
client_cmd(0"cd fadeout")
        }
        
get_user_name(idwname31)
        
//set_user_lifes(id, 1)
        
set_hudmessage(02550, -1.00.201.010.01.01.02)
        if(
Math[id])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"MATH_WINNER"wnamesmanswer)
        }
        else if(
Word[id])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"WORD_WINNER"wname)
        }
        if(
id == CounterID)
        {
            
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            
DeathMsg(CounterIDTerroristID1KWPN)
            
Kill(TerroristID)
        }
        else if(
id == TerroristID)
        {
            
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            
DeathMsg(CounterIDTerroristID1KWPN)
            
Kill(CounterID)
        }
        
Math[CounterID] = false
        Math
[TerroristID] = false
        Word
[CounterID] = false
        Word
[TerroristID] = false
    
}
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Проверка ответа в командном чате
=================================================================================*/
public hooksay_team(id)
{
    if(!
Math[id] && !Word[id])
    {
        return 
PLUGIN_CONTINUE
    
}
    new 
Msg[256], smanswer[32], wname[32]
    
read_args(Msg255)
    
remove_quotes(Msg)
    
num_to_str(MathAnswersmanswer31)
    if((
Math[id] && equal(Msgsmanswer)) || (Word[id] && equal(MsgWordAnswer)))
    {
        if(
get_pcvar_num(PcvarTimer))
        {
            
remove_task(TIMERTID)
        }
        if(
get_pcvar_num(PcvarMusic))
        {
            
client_cmd(0"cd fadeout")
        }
        
get_user_name(idwname31)
        
//set_user_lifes(id, 1)
        
set_hudmessage(02550, -1.00.201.010.01.01.02)
        if(
Math[id])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"MATH_WINNER"wnamesmanswer)
        }
        else if(
Word[id])
        {
            
ShowSyncHudMsg(0g_MsgHud2"%L"LANG_PLAYER"WORD_WINNER"wname)
        }
        if(
id == CounterID)
        {
            
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            
DeathMsg(CounterIDTerroristID1KWPN)
            
Kill(TerroristID)
        }
        else if(
id == TerroristID)
        {
            
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_ONCE)
            
DeathMsg(CounterIDTerroristID1KWPN)
            
Kill(CounterID)
        }
        
Math[CounterID] = false
        Math
[TerroristID] = false
        Word
[CounterID] = false
        Word
[TerroristID] = false
    
}
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Игрок покинул сервер
=================================================================================*/
public client_disconnect(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
    Math
[id] = false
    Word
[id] = false
    RussianRoulette
[id] = false
    Used
[id] = false
    NotYou
[id] = false
    DoIt
[id] = false
    Start
[id] = false
    Spray
[id] = false
    Guntoss
[id] = false
    InDuel
[id] = false
    Famas
[id] = false
    
return PLUGIN_CONTINUE
}
/*================================================================================
    Выключение неуязвимости
=================================================================================*/
public GodOff(tskid)
{
    new 
id tskid GODTID
    set_pev
(idpev_takedamage1)
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Информер
=================================================================================*/
public Informer()
{
    if(!
get_pcvar_num(PcvarInformer))
    {
        
remove_task(INFORMERTID)
        return 
PLUGIN_HANDLED
    
}
    new 
idLastIDactsctsallCurrentTime[32], NextMap[32], Terrorist[32], names[33][32], Message[512]
    for(
id 1id <= MaxPlayersid++)
    {
        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
(idnames[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(idTerrorist63)
            
all++
        }
        else
        {
            
all++
        }
    }
    if(
acts == && !Last && get_pcvar_num(PcvarLastMenu))
    {
        
LastMenu(LastID)
        
Last true
    
}
    for(
id 1id <= MaxPlayersid++)
    {
        new 
LenMode[32]
        
get_pcvar_string(PcvarModeMode31)
        
Len format(Message511"%L: %L"LANG_PLAYER"CURRENTMODE"LANG_PLAYERMode)
        
get_time("%H:%M:%S"CurrentTime31)
        
Len += format(Message[Len], 511 Len"^n%L: %s"LANG_PLAYER"CURRENTTIME"CurrentTime)
        if(
get_cvar_float("mp_timelimit"))
        {
            new 
get_timeleft()
            
Len += format(Message[Len], 511 Len"^n%L: %d:%02d"LANG_PLAYER"TLEFT", (60), (60))
        }
        else
        {
            
Len += format(Message[Len], 511 Len"^n%L: %L"LANG_PLAYER"TLEFT"LANG_PLAYER"LASTR")
        }
        
get_cvar_string("amx_nextmap"NextMap31)
        
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"allMaxPlayers)
        if(
acts 3)
        {
            
set_hudmessage(1001001000.010.1801.01.0)
        }
        else if(
acts == 3)
        {
            
set_hudmessage(025500.010.1801.01.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(025500.010.1801.01.0)
            
Len += format(Message[Len], 511 Len"^n^n1. %s^n2. %s"names[1], names[2])
        }
        else
        {
            
set_hudmessage(02552550.010.1811.01.0__1)
            
Len += format(Message[Len], 511 Len"^n^n1. %s"names[1])
        }
        
ShowSyncHudMsg(idg_MsgHud1"%s"Message)    
    }
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Меню последнего КТ
=================================================================================*/
public LastMenu(id)
{
    new 
Len
    
new Keys MENU_KEY_0
    Len 
format(MenuBodyMENUBODY 1"\y%L\w^n^n"LANG_PLAYER"YOULAST")
    
Keys |= (<< 0)
    
Len += format(MenuBody[Len], MENUBODY Len"\r1. \w%L^n"LANG_PLAYER"LASTYES")
    
Keys |= (<< 1)
    
Len += format(MenuBody[Len], MENUBODY Len"\r2. \w%L^n^n\y%s v%s by %s^n!"LANG_PLAYER"LASTNO"PLUGINVERSIONAUTHOR)
    
show_menu(idKeysMenuBody, -1"Last Menu")
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Действие меню последнего КТ
=================================================================================*/
public ActionLastMenu(idkey)
{
    switch(
key)
    {
        case 
0:
        {
            
client_cmd(id"deathrun_duels")
        }
        case 
1:
        {
            
client_print(idprint_center"%L"LANG_PLAYER"FDUEL")
        }
    }
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Эффект волны
=================================================================================*/
public Beacon(id)
{
    if(
cs_get_user_team(id) == CS_TEAM_CT)
    {
        static 
origin[3]
        
get_user_origin(idorigin)
        
message_begin(MSG_BROADCASTSVC_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(idorigin)
        
message_begin(MSG_BROADCASTSVC_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 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
replace_all(msg190"!g""^4")
    
replace_all(msg190"!y""^1")
    
replace_all(msg190"!team""^3")
    if (
idplayers[0] = id
    
else get_players(playerscount"ch")
    for (new 
0counti++)
    {
        if (
is_user_connected(players[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLESayText_players[i])
            
write_byte(players[i])
            
write_string(msg)
            
message_end()
        }
    }
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Сообщение о смерти
=================================================================================*/
stock DeathMsg(killer_idvictim_idheadshotweaponname[])
{
    
message_begin(MSG_ALLget_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 0DCOUNTa++)
    {
        if(
Duels & (<< a))
        {
            
DuelsNum++
        }
    }
    return 
DuelsNum
}
/*================================================================================
    Взять флаги
=================================================================================*/
stock GetFlags(pcvar)
{
    new 
Flags[32]
    
get_pcvar_string(pcvarFlags31)
    return 
read_flags(Flags)
}
/*================================================================================
    Количество спецназа
=================================================================================*/
stock GetCTsNum(alive)
{
    new 
CTsNum 0
    
for (new id 1id <= MaxPlayersid++)
    {
        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 1id <= MaxPlayersid++)
    {
        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 Kill(id)
{
    
user_kill(id1)
    return 
PLUGIN_CONTINUE
}
/*================================================================================
    Copyright 2010 (c) NoName. Special for http://nowebsite and NoName.
=================================================================================*/ 

Тема перемещена в соответствующий ей раздел // EvilCoder
Аватара пользователя
Ice xD
 
Сообщения: 162
Зарегистрирован: 26 авг 2011, 15:50
Благодарил (а): 62 раз.
Поблагодарили: 2 раз.
Языки программирования: Counter-Strike 1.6

Re: [AMXX] Run time error 10: native error (native "cs_set_w

Сообщение DJ_WEST » 28 ноя 2011, 15:43

Здесь:
Код: Выделить всё
cs_set_weapon_ammo(give_item(TerroristID"weapon_deagle"), DAMMO

Довольно опасный участок кода, да и в других местах тоже. Вся суть сводится к тому, что give_item возвращает id того, что выдавалось, а уже по этому id функция cs_set_weapon_ammo выдает патроны. Но так как никаких проверок нет и give_item если не выдал оружие, то он и вернет -1, что видно по логам. А give_item в свою очередь может не сработать по той причине, что не смогу найти TerroristID.
Самый простой вариант - добавить проверки:
Код: Выделить всё
 
        
new i_Item
        
if ((i_Item give_item(TerroristID"weapon_deagle")) != -1)
           cs_set_weapon_ammo(i_Item DAMMO)
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2

Re: [AMXX] Run time error 10: native error (native "cs_set_w

Сообщение lenarsaitov » 28 ноя 2011, 18:02

Спасибо!!
Это я Ice xD, просто другой аккаунт .Пороль забыл :-[
Аватара пользователя
lenarsaitov
 
Сообщения: 424
Зарегистрирован: 22 ноя 2011, 18:16
Благодарил (а): 81 раз.
Поблагодарили: 79 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: [AMXX] Run time error 10: native error (native "cs_set_w

Сообщение DJ_WEST » 29 ноя 2011, 10:12

Это я Ice xD, просто другой аккаунт .Пороль забыл

Восстановление пароля, не?
Не пишите мне в ЛС: если вам нужна помощь на бесплатной основе. Любые вопросы на форум.
Аватара пользователя
DJ_WEST
Администратор
 
Сообщения: 3641
Зарегистрирован: 22 авг 2009, 00:38
Благодарил (а): 48 раз.
Поблагодарили: 2209 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Left 4 Dead
Left 4 Dead 2


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7