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

Разминка на ножах (Knife warmup)

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

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

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

Re: Разминка на ножах (Knife warmup)

Сообщение Subb98 » 23 дек 2016, 19:16

proland, ну так и используйте тот, в котором код не "уг", в чём сложность? :-)
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Разминка на ножах (Knife warmup)

Сообщение Sant1 » 21 янв 2017, 11:06

Отключите разминку на определенных картах На карте 35hp_2 просто так убивает игроков !
Аватара пользователя
Sant1
 
Сообщения: 4
Зарегистрирован: 23 сен 2014, 16:45
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Разминка на ножах (Knife warmup)

Сообщение Subb98 » 21 янв 2017, 11:43

Sant1, для этого есть средства AMX Mod X: Вы должны зарегистрироваться, чтобы видеть ссылки.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Разминка на ножах (Knife warmup)

Сообщение BoJl4aRAAA » 06 фев 2017, 10:17

Дратути :-D :-D
вот проблема,после обновления Rehlds/amx mod 1.8.2 перестали работать половина плагинов,в т.ч и knife_warnup.amxx,подскажите что не так? Скачал исходник от вас,перекомпилировал,закинул через filezillla в plugins он вот что пишет:
unknown unknown unknown knife_wapnup.am bad load
Load fails: Plugin file open error (plugin "")

Добавлено спустя 2 минуты 31 секунду:
Код: Выделить всё
/* ===============================================================================
 * Knife warmup 0.1 [28.03.2016]
 * Благодарности:
 * - s1lent: реализация и возможность использования 'Regamedll_CS', 'RoundControl'
 * - Safety1st: способы реализации некоторых функций из 'Uncommon Knife Warmup'
 * ============================================================================ */

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
//#include <roundcontrol> // раскомментируйте эту строку, если на сервере не используется Regamedll_CS

#pragma semicolon 1

#define bit_set(%0,%1) (%1 |= (1<<%0))
#define bit_clear(%0,%1) (%1 &= ~(1<<%0))
#define bit_valid(%0,%1) (%1 & (1<<%0))
//#define USE_PAUSE // раскомментируйте эту строку, если желаете, чтобы плагин прекратил работу после выполнения задачи

const MAX_PLAYERS 28// максимальное кол-во игроков на сервере, заменить своим (по умолчанию 32)
const WARMUP_TIME 55// кол-во времени в секундах, отведённое на разминку (по умолчанию 90)
const Float:RESPAWN_DELAY 0.75// кол-во времени в секундах, отведённое на задержку перед респауном (по умолчанию 0.75)
const Float:SHOW_MSG_DELAY 0.5// кол-во времени в секундах, отведённое на задержку перед отправкой HUD-сообщения (по умолчанию 0.5)
const Float:WARMUP_HEALTH 35.0// кол-во ед. здоровья, устанавливаемое игроку при спауне во время разминки (по умолчанию 35.0)
const HW_CROSS_AMMO_WPNLIST = (1<<0);
const 
HW_TIMER = (1<<4);
const 
HW_MONEY = (1<<5);

new const 
KILL_SOUNDS[][] = {
    
"misc/sheep.wav""misc/killChicken.wav""misc/cow.wav"
};

enum {
    
WS_WAITING 1,
    
WS_BEGIN,
    
WS_IN_PROGRESS,
    
WS_ENDED
}

new 
HamHook:g_pHamSpawnHamHook:g_pHamAddPlayerItemHamHook:g_pHamGiveAmmoHamHook:g_pHamUseHamHook:g_pHamKilled;

#if defined _roundcontrol_included
new RoundControlHook:g_pCheckWinHook;
#else
new g_pRoundInfiniteg_szRoundInfinite[10];
#endif

new g_pRestartRoundg_pHideWeaponMsgIdg_pStatusIconMsgIdg_pHudSyncObj1g_pHudSyncObj2g_pThinkEntg_iConnectedBitsumg_iAliveBitsumg_iMessageBitsumg_iFrags[MAX_PLAYERS 1],
    
g_iWarmupState WS_WAITINGg_pHideWeapong_iTimerCount;

public 
plugin_precache() {
    for(new 
isizeof KILL_SOUNDSi++) {
        
precache_sound(KILL_SOUNDS[i]);
    }
}

public 
plugin_init() {
    
register_plugin("Knife warmup""0.1""Subb98");
    
register_clcmd("joinclass""CmdJoinClass");
    const 
JOIN_CLASS_MENU_KEYS MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5;
    
register_menucmd(register_menuid("Terrorist_Select"), JOIN_CLASS_MENU_KEYS"CmdJoinClass");
    
register_menucmd(register_menuid("CT_Select"), JOIN_CLASS_MENU_KEYS"CmdJoinClass");
    
register_event("HLTV""EventHLTV""a""1=0""2=0");
    
register_logevent("EventGameCommencing"2"1=Game_Commencing");
    
register_logevent("EventRoundStart"2"1=Round_Start");
    
register_logevent("EventRoundEnd"2"1=Round_End");
    new const 
ENT_CLASSNAME[] = "player";
    
DisableHamForward(g_pHamSpawn RegisterHam(Ham_SpawnENT_CLASSNAME"HamSpawnPlayerPost"1));
    
DisableHamForward(g_pHamAddPlayerItem RegisterHam(Ham_AddPlayerItemENT_CLASSNAME"HamAddPlayerItemPre"));
    
DisableHamForward(g_pHamGiveAmmo RegisterHam(Ham_GiveAmmoENT_CLASSNAME"HamGiveAmmoPre"));
    
DisableHamForward(g_pHamUse RegisterHam(Ham_Use"hostage_entity""HamUseHostagePre"));
    
DisableHamForward(g_pHamKilled RegisterHam(Ham_KilledENT_CLASSNAME"HamKilledPlayerPost"1));
    
#if !defined _roundcontrol_included
    
g_pRoundInfinite get_cvar_pointer("mp_round_infinite");
    
#endif
    
g_pRestartRound get_cvar_pointer("sv_restartround");
    
g_pHideWeaponMsgId get_user_msgid("HideWeapon");
    
g_pStatusIconMsgId get_user_msgid("StatusIcon");
    
g_pHudSyncObj1 CreateHudSyncObj();
    
g_pHudSyncObj2 CreateHudSyncObj();
    
CreateThinkEntity();
}

#if !defined _roundcontrol_included
public plugin_cfg() {
    if(
g_pRoundInfinite) {
        
get_pcvar_string(g_pRoundInfiniteg_szRoundInfinitecharsmax(g_szRoundInfinite));
    }
}
#endif

public client_putinserver(id) {
    
ResetValues(id);
    if(!
is_user_bot(id) && !is_user_hltv(id)) {
        
bit_set(idg_iConnectedBitsum);
    }
}

public 
client_disconnect(id) {
    
ResetValues(id);
    
remove_task(id);
}

public 
CmdJoinClass(const id) {
    if(
g_iWarmupState == WS_IN_PROGRESS) {
        
set_task(RESPAWN_DELAY"TaskRespawn"id);
    }
}

public 
EventHLTV() {
    switch(
g_iWarmupState) {
        case 
WS_BEGIN: {
            
g_iWarmupState WS_IN_PROGRESS;
            
g_iMessageBitsum 0;
            
EnableHamForward(g_pHamSpawn);
            
EnableHamForward(g_pHamAddPlayerItem);
            
EnableHamForward(g_pHamGiveAmmo);
            
EnableHamForward(g_pHamUse);
            
EnableHamForward(g_pHamKilled);
            
g_pHideWeapon register_message(g_pHideWeaponMsgId"MessageHideWeapon");
            
#if defined _roundcontrol_included
            
g_pCheckWinHook SetBlockControl(RC_CheckWinConditions);
            
#else
            
if(g_pRoundInfinite) {
                
set_pcvar_num(g_pRoundInfinite1);
            }
            
#endif
            
set_msg_block(g_pStatusIconMsgIdBLOCK_SET);
        }
        case 
WS_ENDED: {
            
entity_set_float(g_pThinkEntEV_FL_nextthinkget_gametime() + SHOW_MSG_DELAY);
        }
    }
}

public 
EventGameCommencing() {
    if(
g_iWarmupState == WS_WAITING) {
        
g_iWarmupState WS_BEGIN;
    }
}

public 
EventRoundStart() {
    if(
g_iWarmupState == WS_IN_PROGRESS) {
        
entity_set_float(g_pThinkEntEV_FL_nextthinkget_gametime() + 1.0);
    }
}

public 
EventRoundEnd() {
    if(
g_iWarmupState == WS_IN_PROGRESS) {
        
g_iWarmupState WS_ENDED;
        
DisableHamForward(g_pHamSpawn);
        
DisableHamForward(g_pHamAddPlayerItem);
        
DisableHamForward(g_pHamGiveAmmo);
        
DisableHamForward(g_pHamUse);
        
DisableHamForward(g_pHamKilled);
        
unregister_message(g_pHideWeaponMsgIdg_pHideWeapon);
        
#if defined _roundcontrol_included
        
RemoveBlockControl(RC_CheckWinConditionsg_pCheckWinHook);
        
#else
        
if(g_pRoundInfinite) {
            
set_pcvar_string(g_pRoundInfiniteg_szRoundInfinite);
        }
        
#endif
        
set_msg_block(g_pStatusIconMsgIdBLOCK_NOT);
        
set_pcvar_float(g_pRestartRound1.0);
    }
}

public 
MessageHideWeapon() {
    const 
ARG_FLAGS 1;
    
set_msg_arg_int(ARG_FLAGSARG_BYTEget_msg_arg_int(ARG_FLAGS) | HW_CROSS_AMMO_WPNLIST HW_TIMER HW_MONEY);
}

public 
HamSpawnPlayerPost(const id) {
    if(
is_user_alive(id)) {
        
bit_set(idg_iAliveBitsum);
        if(!
bit_valid(idg_iMessageBitsum)) {
            
set_task(SHOW_MSG_DELAY"TaskWarmupStartMsg"id);
        }
        
entity_set_float(idEV_FL_healthWARMUP_HEALTH);
        
engclient_cmd(id"weapon_knife");
        
message_begin(MSG_ONEg_pHideWeaponMsgId_id);
        
write_byte(HW_CROSS_AMMO_WPNLIST HW_TIMER HW_MONEY);
        
message_end();
    }
}

public 
HamAddPlayerItemPre(const id, const pEnt) {
    if(
cs_get_weapon_id(pEnt) != CSW_KNIFE) {
        
entity_set_int(pEntEV_INT_flagsentity_get_int(pEntEV_INT_flags ) | FL_KILLME);
        
SetHamReturnInteger(0);
        return 
HAM_SUPERCEDE;
    }
    return 
HAM_IGNORED;
}

public 
HamGiveAmmoPre() {
    const 
NO_AMMO_STOP_PROCESSING = -1;
    
SetHamReturnInteger(NO_AMMO_STOP_PROCESSING);
    return 
HAM_SUPERCEDE;
}

public 
HamUseHostagePre() {
    return 
HAM_SUPERCEDE;
}

public 
HamKilledPlayerPost(const id, const pKiller) {
    
bit_clear(idg_iAliveBitsum);
    if(
bit_valid(pKillerg_iAliveBitsum)) {
        if(
g_iFrags[pKiller] == sizeof KILL_SOUNDS) {
            
g_iFrags[pKiller] = 0;
        }
        
emit_sound(pKillerCHAN_VOICEKILL_SOUNDS[g_iFrags[pKiller]], VOL_NORMATTN_NORM0PITCH_NORM);
        
g_iFrags[pKiller]++;
    }
    
set_task(RESPAWN_DELAY"TaskRespawn"id);
}

public 
FwdThink(const pEnt) {
    switch(
g_iWarmupState) {
        case 
WS_IN_PROGRESS: {
            static 
iDiffiMin;
            
iDiff WARMUP_TIME g_iTimerCount++, iMin 0;
            
GetMinutes(iDiffiMin);
            
set_hudmessage(12864__0.96__1.00.00.01, -1);
            
ShowSyncHudMsg(0g_pHudSyncObj1"До конца разминки: %d:%d"iMiniDiff);
            if(
iDiff || iMin) {
                
entity_set_float(pEntEV_FL_nextthinkget_gametime() + 1.0);
            } else {
                
EventRoundEnd();
            }
        }
        case 
WS_ENDED: {
            
g_iWarmupState WS_WAITING;
            
g_iTimerCount 0;
            
set_hudmessage(0255__0.25__5.0__, -1);
            
ShowSyncHudMsg(0g_pHudSyncObj2"Приготовьтесь к бою!^nИгра началась!");
            
#if defined USE_PAUSE
            
pause("d");
            
#endif
        
}
    }
}

public 
TaskRespawn(const id) {
    if(
bit_valid(idg_iConnectedBitsum) && !bit_valid(idg_iAliveBitsum) && cs_get_user_team(id) != CS_TEAM_SPECTATOR) {
        
ExecuteHamB(Ham_CS_RoundRespawnid);
    }
}

public 
TaskWarmupStartMsg(const id) {
    if(
bit_valid(idg_iAliveBitsum)) {
        
set_hudmessage(2550__0.25__5.0__, -1);
        
ShowSyncHudMsg(idg_pHudSyncObj2"Приготовьтесь к бойне!^nРазминка на ножах началась!");
        
bit_set(idg_iMessageBitsum);
    }
}

CreateThinkEntity() {
    new const 
ENT_CLASSNAME[] = "_warmup_think_ent";
    if((
g_pThinkEnt create_entity("info_target"))) {
        
entity_set_string(g_pThinkEntEV_SZ_classnameENT_CLASSNAME);
        
register_think(ENT_CLASSNAME"FwdThink");
    } else {
        
set_fail_state("Failed to create think entity");
    }
}

ResetValues(const id) {
    
log_amx("id = %d"id);
    
bit_clear(idg_iConnectedBitsum);
    
bit_clear(idg_iAliveBitsum);
    
bit_clear(idg_iMessageBitsum);
    
g_iFrags[id] = 0;
}

GetMinutes(&iSec, &iMin) {
    const 
SECONDS_IN_MINUTE 60;
    
iMin iSec SECONDS_IN_MINUTEiSec %= SECONDS_IN_MINUTE;
}  
Аватара пользователя
BoJl4aRAAA
 
Сообщения: 3
Зарегистрирован: 05 фев 2017, 21:51
Откуда: дмд
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Разминка на ножах (Knife warmup)

Сообщение Subb98 » 06 фев 2017, 10:23

BoJl4aRAAA, добрый день. Предоставьте также лог из консоли сервера + список загруженных модулей (amxx modules).
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Разминка на ножах (Knife warmup)

Сообщение BoJl4aRAAA » 06 фев 2017, 10:54

Subb98 писал(а):BoJl4aRAAA, добрый день. Предоставьте также лог из консоли сервера + список загруженных модулей (amxx modules).

Работает,но есть некоторые недочеты,которые я хочу исправить: 1.е Hud сообщение "Разминка на ножах" "отсчет времени" отображались в вверху экрана по центру! 2.е Hud сообщение "Разминка закончилась! Всем Удачи! Внизу экрана,по центру после окончания раунда на ножах. 3.е Убрать броню,сейчас у всех 100 . Помогите это сделать :dance4:
Код: Выделить всё
/* ===============================================================================
 * Knife warmup 0.1 [28.03.2016]
 * Благодарности:
 * - s1lent: реализация и возможность использования 'Regamedll_CS', 'RoundControl'
 * - Safety1st: способы реализации некоторых функций из 'Uncommon Knife Warmup'
 * ============================================================================ */

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
//#include <roundcontrol> // раскомментируйте эту строку, если на сервере не используется Regamedll_CS

#pragma semicolon 1

#define bit_set(%0,%1) (%1 |= (1<<%0))
#define bit_clear(%0,%1) (%1 &= ~(1<<%0))
#define bit_valid(%0,%1) (%1 & (1<<%0))
#define USE_PAUSE // раскомментируйте эту строку, если желаете, чтобы плагин прекратил работу после выполнения задачи

const MAX_PLAYERS 28// максимальное кол-во игроков на сервере, заменить своим (по умолчанию 32)
const WARMUP_TIME 55// кол-во времени в секундах, отведённое на разминку (по умолчанию 90)
const Float:RESPAWN_DELAY 0.75// кол-во времени в секундах, отведённое на задержку перед респауном (по умолчанию 0.75)
const Float:SHOW_MSG_DELAY 0.5// кол-во времени в секундах, отведённое на задержку перед отправкой HUD-сообщения (по умолчанию 0.5)
const Float:WARMUP_HEALTH 35.0// кол-во ед. здоровья, устанавливаемое игроку при спауне во время разминки (по умолчанию 35.0)
const HW_CROSS_AMMO_WPNLIST = (1<<0);
const 
HW_TIMER = (1<<4);
const 
HW_MONEY = (1<<5);

new const 
KILL_SOUNDS[][] = {
    
"misc/sheep.wav""misc/killChicken.wav""misc/cow.wav"
};

enum {
    
WS_WAITING 1,
    
WS_BEGIN,
    
WS_IN_PROGRESS,
    
WS_ENDED
}

new 
HamHook:g_pHamSpawnHamHook:g_pHamAddPlayerItemHamHook:g_pHamGiveAmmoHamHook:g_pHamUseHamHook:g_pHamKilled;

#if defined _roundcontrol_included
new RoundControlHook:g_pCheckWinHook;
#else
new g_pRoundInfiniteg_szRoundInfinite[10];
#endif

new g_pRestartRoundg_pHideWeaponMsgIdg_pStatusIconMsgIdg_pHudSyncObj1g_pHudSyncObj2g_pThinkEntg_iConnectedBitsumg_iAliveBitsumg_iMessageBitsumg_iFrags[MAX_PLAYERS 1],
    
g_iWarmupState WS_WAITINGg_pHideWeapong_iTimerCount;

public 
plugin_precache() {
    for(new 
isizeof KILL_SOUNDSi++) {
        
precache_sound(KILL_SOUNDS[i]);
    }
}

public 
plugin_init() {
    
register_plugin("Knife warmup""0.1""Subb98");
    
register_clcmd("joinclass""CmdJoinClass");
    const 
JOIN_CLASS_MENU_KEYS MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5;
    
register_menucmd(register_menuid("Terrorist_Select"), JOIN_CLASS_MENU_KEYS"CmdJoinClass");
    
register_menucmd(register_menuid("CT_Select"), JOIN_CLASS_MENU_KEYS"CmdJoinClass");
    
register_event("HLTV""EventHLTV""a""1=0""2=0");
    
register_logevent("EventGameCommencing"2"1=Game_Commencing");
    
register_logevent("EventRoundStart"2"1=Round_Start");
    
register_logevent("EventRoundEnd"2"1=Round_End");
    new const 
ENT_CLASSNAME[] = "player";
    
DisableHamForward(g_pHamSpawn RegisterHam(Ham_SpawnENT_CLASSNAME"HamSpawnPlayerPost"1));
    
DisableHamForward(g_pHamAddPlayerItem RegisterHam(Ham_AddPlayerItemENT_CLASSNAME"HamAddPlayerItemPre"));
    
DisableHamForward(g_pHamGiveAmmo RegisterHam(Ham_GiveAmmoENT_CLASSNAME"HamGiveAmmoPre"));
    
DisableHamForward(g_pHamUse RegisterHam(Ham_Use"hostage_entity""HamUseHostagePre"));
    
DisableHamForward(g_pHamKilled RegisterHam(Ham_KilledENT_CLASSNAME"HamKilledPlayerPost"1));
    
#if !defined _roundcontrol_included
    
g_pRoundInfinite get_cvar_pointer("mp_round_infinite");
    
#endif
    
g_pRestartRound get_cvar_pointer("sv_restartround");
    
g_pHideWeaponMsgId get_user_msgid("HideWeapon");
    
g_pStatusIconMsgId get_user_msgid("StatusIcon");
    
g_pHudSyncObj1 CreateHudSyncObj();
    
g_pHudSyncObj2 CreateHudSyncObj();
    
CreateThinkEntity();
}

#if !defined _roundcontrol_included
public plugin_cfg() {
    if(
g_pRoundInfinite) {
        
get_pcvar_string(g_pRoundInfiniteg_szRoundInfinitecharsmax(g_szRoundInfinite));
    }
}
#endif

public client_putinserver(id) {
    
ResetValues(id);
    if(!
is_user_bot(id) && !is_user_hltv(id)) {
        
bit_set(idg_iConnectedBitsum);
    }
}

public 
client_disconnect(id) {
    
ResetValues(id);
    
remove_task(id);
}

public 
CmdJoinClass(const id) {
    if(
g_iWarmupState == WS_IN_PROGRESS) {
        
set_task(RESPAWN_DELAY"TaskRespawn"id);
    }
}

public 
EventHLTV() {
    switch(
g_iWarmupState) {
        case 
WS_BEGIN: {
            
g_iWarmupState WS_IN_PROGRESS;
            
g_iMessageBitsum 0;
            
EnableHamForward(g_pHamSpawn);
            
EnableHamForward(g_pHamAddPlayerItem);
            
EnableHamForward(g_pHamGiveAmmo);
            
EnableHamForward(g_pHamUse);
            
EnableHamForward(g_pHamKilled);
            
g_pHideWeapon register_message(g_pHideWeaponMsgId"MessageHideWeapon");
            
#if defined _roundcontrol_included
            
g_pCheckWinHook SetBlockControl(RC_CheckWinConditions);
            
#else
            
if(g_pRoundInfinite) {
                
set_pcvar_num(g_pRoundInfinite1);
            }
            
#endif
            
set_msg_block(g_pStatusIconMsgIdBLOCK_SET);
        }
        case 
WS_ENDED: {
            
entity_set_float(g_pThinkEntEV_FL_nextthinkget_gametime() + SHOW_MSG_DELAY);
        }
    }
}

public 
EventGameCommencing() {
    if(
g_iWarmupState == WS_WAITING) {
        
g_iWarmupState WS_BEGIN;
    }
}

public 
EventRoundStart() {
    if(
g_iWarmupState == WS_IN_PROGRESS) {
        
entity_set_float(g_pThinkEntEV_FL_nextthinkget_gametime() + 1.0);
    }
}

public 
EventRoundEnd() {
    if(
g_iWarmupState == WS_IN_PROGRESS) {
        
g_iWarmupState WS_ENDED;
        
DisableHamForward(g_pHamSpawn);
        
DisableHamForward(g_pHamAddPlayerItem);
        
DisableHamForward(g_pHamGiveAmmo);
        
DisableHamForward(g_pHamUse);
        
DisableHamForward(g_pHamKilled);
        
unregister_message(g_pHideWeaponMsgIdg_pHideWeapon);
        
#if defined _roundcontrol_included
        
RemoveBlockControl(RC_CheckWinConditionsg_pCheckWinHook);
        
#else
        
if(g_pRoundInfinite) {
            
set_pcvar_string(g_pRoundInfiniteg_szRoundInfinite);
        }
        
#endif
        
set_msg_block(g_pStatusIconMsgIdBLOCK_NOT);
        
set_pcvar_float(g_pRestartRound1.0);
    }
}

public 
MessageHideWeapon() {
    const 
ARG_FLAGS 1;
    
set_msg_arg_int(ARG_FLAGSARG_BYTEget_msg_arg_int(ARG_FLAGS) | HW_CROSS_AMMO_WPNLIST HW_TIMER HW_MONEY);
}

public 
HamSpawnPlayerPost(const id) {
    if(
is_user_alive(id)) {
        
bit_set(idg_iAliveBitsum);
        if(!
bit_valid(idg_iMessageBitsum)) {
            
set_task(SHOW_MSG_DELAY"TaskWarmupStartMsg"id);
        }
        
entity_set_float(idEV_FL_healthWARMUP_HEALTH);
        
engclient_cmd(id"weapon_knife");
        
message_begin(MSG_ONEg_pHideWeaponMsgId_id);
        
write_byte(HW_CROSS_AMMO_WPNLIST HW_TIMER HW_MONEY);
        
message_end();
    }
}

public 
HamAddPlayerItemPre(const id, const pEnt) {
    if(
cs_get_weapon_id(pEnt) != CSW_KNIFE) {
        
entity_set_int(pEntEV_INT_flagsentity_get_int(pEntEV_INT_flags ) | FL_KILLME);
        
SetHamReturnInteger(0);
        return 
HAM_SUPERCEDE;
    }
    return 
HAM_IGNORED;
}

public 
HamGiveAmmoPre() {
    const 
NO_AMMO_STOP_PROCESSING = -1;
    
SetHamReturnInteger(NO_AMMO_STOP_PROCESSING);
    return 
HAM_SUPERCEDE;
}

public 
HamUseHostagePre() {
    return 
HAM_SUPERCEDE;
}

public 
HamKilledPlayerPost(const id, const pKiller) {
    
bit_clear(idg_iAliveBitsum);
    if(
bit_valid(pKillerg_iAliveBitsum)) {
        if(
g_iFrags[pKiller] == sizeof KILL_SOUNDS) {
            
g_iFrags[pKiller] = 0;
        }
        
emit_sound(pKillerCHAN_VOICEKILL_SOUNDS[g_iFrags[pKiller]], VOL_NORMATTN_NORM0PITCH_NORM);
        
g_iFrags[pKiller]++;
    }
    
set_task(RESPAWN_DELAY"TaskRespawn"id);
}

public 
FwdThink(const pEnt) {
    switch(
g_iWarmupState) {
        case 
WS_IN_PROGRESS: {
            static 
iDiffiMin;
            
iDiff WARMUP_TIME g_iTimerCount++, iMin 0;
            
GetMinutes(iDiffiMin);
            
set_hudmessage(12864__0.96__1.00.00.01, -1);
            
ShowSyncHudMsg(0g_pHudSyncObj1"До конца разминки: %d:%d"iMiniDiff);
            if(
iDiff || iMin) {
                
entity_set_float(pEntEV_FL_nextthinkget_gametime() + 1.0);
            } else {
                
EventRoundEnd();
            }
        }
        case 
WS_ENDED: {
            
g_iWarmupState WS_WAITING;
            
g_iTimerCount 0;
            
set_hudmessage(0255__0.25__5.0__, -1);
            
ShowSyncHudMsg(0g_pHudSyncObj2"Разминка закончилась!^nВсем Удачи!");
            
#if defined USE_PAUSE
            
pause("d");
            
#endif
        
}
    }
}

public 
TaskRespawn(const id) {
    if(
bit_valid(idg_iConnectedBitsum) && !bit_valid(idg_iAliveBitsum) && cs_get_user_team(id) != CS_TEAM_SPECTATOR) {
        
ExecuteHamB(Ham_CS_RoundRespawnid);
    }
}

public 
TaskWarmupStartMsg(const id) {
    if(
bit_valid(idg_iAliveBitsum)) {
        
set_hudmessage(2550__0.25__5.0__, -1);
        
ShowSyncHudMsg(idg_pHudSyncObj2"nРазминка на ножах началась!");
        
bit_set(idg_iMessageBitsum);
    }
}

CreateThinkEntity() {
    new const 
ENT_CLASSNAME[] = "_warmup_think_ent";
    if((
g_pThinkEnt create_entity("info_target"))) {
        
entity_set_string(g_pThinkEntEV_SZ_classnameENT_CLASSNAME);
        
register_think(ENT_CLASSNAME"FwdThink");
    } else {
        
set_fail_state("Failed to create think entity");
    }
}

ResetValues(const id) {
    
log_amx("id = %d"id);
    
bit_clear(idg_iConnectedBitsum);
    
bit_clear(idg_iAliveBitsum);
    
bit_clear(idg_iMessageBitsum);
    
g_iFrags[id] = 0;
}

GetMinutes(&iSec, &iMin) {
    const 
SECONDS_IN_MINUTE 60;
    
iMin iSec SECONDS_IN_MINUTEiSec %= SECONDS_IN_MINUTE;
}  
Аватара пользователя
BoJl4aRAAA
 
Сообщения: 3
Зарегистрирован: 05 фев 2017, 21:51
Откуда: дмд
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Разминка на ножах (Knife warmup)

Сообщение Subb98 » 06 фев 2017, 10:59

BoJl4aRAAA, прочтите эту статью: Вы должны зарегистрироваться, чтобы видеть ссылки.. Касаемо брони - её нужно обнулять при респауне, Вы должны зарегистрироваться, чтобы видеть ссылки..
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Разминка на ножах (Knife warmup)

Сообщение BoJl4aRAAA » 06 фев 2017, 11:11

Subb98 писал(а):BoJl4aRAAA, прочтите эту статью: Вы должны зарегистрироваться, чтобы видеть ссылки.. Касаемо брони - её нужно обнулять при респауне, Вы должны зарегистрироваться, чтобы видеть ссылки..

Помогли так помогли :acute: :acute:

Добавлено спустя 7 минут 45 секунд:
с остальными не поможете? :thumbs_up :

Код: Выделить всё
Currently loaded plugins:
name                    version     author            file             status
[  1] Skill ELO               15.07.22    SKAJIbnEJIb       skill_elo.amxx   running
[  2] CsStats MySQL           15.07.15    SKAJIbnEJIb       csstats_mysql.a  running
[  3] StatsX RBS              15.07.24    SKAJIbnEJIb & AM  statsx_rbs.amxx  running
[  4] Stats Configuration     15.07.15    SKAJIbnEJIb & AM  statscfg_rbs.am  running
[  5] Army Ranks Ultimate     15.07.24    SKAJIbnEJIb       army_ranks_ulti  running
[  6] AR Bets                 15.07.15    SKAJIbnEJIb       ar_bets.amxx     running
[  7] unknown                 unknown     unknown           top_awards_wopo  bad load
[  8] DopBan                  2.8.2b      kanagava          dop_ban2.amxx    running
[  9] fb_forwards             0.1.4       Kanagava & Realu  fb_forwards.amx  running
[ 10] ScreenMaker             1.1         neygomon          screen_maker.am  running
[ 11] Admin Loader            2.5.2       neygomon          admin_loader_fo  running
[ 12] FreshBan                1.0.5b      kanagava          fresh_bans.amxx  running
[ 13] AIM detector            0.9.2cs     kanagava          aim_detector.am  running
[ 14] Lite Kill Assist        1.17        neygomon          lite_kill_assis  running
[ 15] unknown                 unknown     unknown           knifeduel_impro  bad load
[ 16] Ultimate Gag            15.07.15    SKAJIbnEJIb       ultimate_gag.am  running
[ 17] VIP RBS                 15.07.18    SKAJIbnEJIb       vip_rbs.amxx     running
[ 18] Ultimate Weapons        15.07.15    SKAJIbnEJIb       ultimate_weapon  running
[ 19] Maps Menu               1.8.2       AMXX Dev Team     mapsmenu.amxx    running
[ 20] Map Manager             2.5.60      Mistrick          mapmanager.amxx  running
[ 21] Chat Manager            1.0.0       Mistrick          chatmanager.amx  running
[ 22] LBZ                     1.0         ill               lbz.amxx         running
[ 23] unknown                 unknown     unknown           lbzMOTD.amxx     running
[ 24] Admin Chat              1.8.2       AMXX Dev Team     adminchat.amxx   running
[ 25] Admin Commands          1.8.2       AMXX Dev Team     admincmd.amxx    running
[ 26] Anti Flood              1.8.2       AMXX Dev Team     antiflood.amxx   running
[ 27] Commands Menu           1.8.2       AMXX Dev Team     cmdmenu.amxx     running
[ 28] Info. Messages          1.8.2       AMXX Dev Team     imessage.amxx    running
[ 29] Players Menu            1.8.2       AMXX Dev Team     plmenu.amxx      running
[ 30] Plugin Menu             1.8.2       AMXX Dev Team     pluginmenu.amxx  running
[ 31] Restrict Weapons        1.8.2       AMXX Dev Team     restmenu.amxx    running
[ 32] Scrolling Message       1.8.2       AMXX Dev Team     scrollmsg.amxx   running
[ 33] Admin Votes             1.8.2       AMXX Dev Team     adminvote.amxx   running
[ 34] CS Misc. Stats          1.8.2       AMXX Dev Team     miscstats.amxx   running
[ 35] CS Stats Logging        1.8.2       AMXX Dev Team     stats_logging.a  running
[ 36] unknown                 unknown     unknown           KickSpamer.amxx  bad load
[ 37] unknown                 unknown     unknown           proxy_detector.  bad load
[ 38] WeaponSparks            1.0         CSPlugin          weaponsparks.am  running
[ 39] Admin ESP Mini          1.5         KoST              admin_esp_mini.  running
[ 40] C4 CD Voice             1.1         TTuCTOH           c4cdvoice_femal  running
[ 41] Lite Vampire            1.2         neygomon          lite_vampire.am  running
[ 42] StatsX                  1.8.2       AMXX Dev Team     statsx.amxx      stopped
[ 43] Demo Recorder RBS       15.07.15    SKAJIbnEJIb       demorecorder_rb  running
[ 44] Autoresponder/Advertis  0.5         MaximusBrood      reklama_in_chat  running
[ 45] unknown                 unknown     unknown           reapi_slayloose  bad load
[ 46] SpecList                1.2a        FatalisDK         speclist.amxx    running
[ 47] Admin Nick Guard        1.0         SKAJIbnEJIb       admin_nick_guar  running
[ 48] Block Spawn For Reconn  0.1         Bos93             block_spawn_for  running
[ 49] Block Change Name       1.0         DJ_WEST           block_change_na  running
[ 50] LogsRemove              1.0         melo4             logsremove.amxx  running
[ 51] Rock to Ban             1.52f       Safety1st         rock_to_ban.amx  running
[ 52] Show Admins Online      1.1         vato loco [GE-S]  show_admins_onl  running
[ 53] High Ping Kicker        1.6         UFPS.Team         high_ping_kicke  running
[ 54] Map Spawns Editor RBS   14.08       iG_os & SKAJIbnE  mapspawnseditor  running
[ 55] Afk Control             0.5.1       neygomon          afk_control.amx  running
[ 56] unknown                 unknown     unknown           dhud_message_de  bad load
[ 57] unknown                 unknown     unknown           gamename_change  bad load
[ 58] unknown                 unknown     unknown           custom_models2.  bad load
[ 59] unknown                 unknown     unknown           awp_limit.amxx   bad load
[ 60] unknown                 unknown     unknown           admin_slots.amx  bad load
[ 61] unknown                 unknown     unknown           gungame_changer  bad load
[ 62] cAh VIP System          Core 0.0.5  Notepad++         vip_system.amxx  running
[ 63] Menus Front-End         15.07.15    AMXX Dev Team &   amxmodmenu_rbs.  running
[ 64] Parachute               15.07.15    KRoT@L/JTP10181   parachute_rbs.a  running
[ 65] Reset Score             1.4         by24              reset_score.amx  running
[ 66] Round Balancer          1.0 build   neygomon          round_balancer.  running
[ 67] SlayNoobs               1.0         neygomon          slaynoobs.amxx   running
[ 68] Lite MapChooser         2.6         neygomon          lite_mapchooser  running
[ 69] Proxy Detetor           1.0         _xvi              proxy_detetor.a  running
[ 70] Block grande info soun  1.0         neygomon          block_granade_i  running
[ 71] Knife warmup            0.1         Subb98            knife_warnup.am  running
[ 72] Admins are VIP's + gre  1.0         Eg@r4$il{         admin_vgk.amxx   running
[ 73] cAh VIP System          Golden AWP  AlejandroSk/Note  cahvipsystem_aw  running
[ 74] cAh VIP System          Golden Dea  AlejandroSk/Note  cahvipsystem_de  running
[ 75] cAh VIP System          Golden AK-  AlejandroSk/Note  cahvipsystem_go  running
[ 76] cAh VIP System          Golden FAM  AlejandroSk/Note  cahvipsystem_go  running
[ 77] cAh VIP System          Golden M4A  AlejandroSk/Note  cahvipsystem_go  running
[ 78] cAh VIP System          Golden M24  AlejandroSk/Note  cahvipsystem_go  running
(  7) Load fails: Plugin file open error (plugin "top_awards_wopox.amxx")
( 15) Load fails: Load error 17 (invalid file format or version) (plugin "knifeduel_improved.amxx")
( 36) Load fails: Load error 17 (invalid file format or version) (plugin "KickSpamer.amxx")
( 37) Load fails: Load error 17 (invalid file format or version) (plugin "proxy_detector.amxx")
( 45) Load fails: Load error 17 (invalid file format or version) (plugin "reapi_slayloosers.amxx")
( 56) Load fails: Load error 17 (invalid file format or version) (plugin "dhud_message_dead.amxx")
( 57) Load fails: Plugin file open error (plugin "")
( 58) Load fails: Load error 17 (invalid file format or version) (plugin "custom_models2.amxx")
( 59) Load fails: Load error 17 (invalid file format or version) (plugin "awp_limit.amxx")
( 60) Load fails: Load error 17 (invalid file format or version) (plugin "admin_slots.amxx")
( 61) Load fails: Load error 17 (invalid file format or version) (plugin "gungame_changer.amxx")

Код: Выделить всё
Currently loaded plugins:
description      stat pend  file              vers      src   load  unlod
[ 1] AMX Mod X        RUN   -    amxmodx.so        v1.8.2    ini   Start ANY
[ 2] Rechecker        RUN   -    rechecker.so      v2.3      ini   ANY
[ 3] WHBlocker        RUN   -    whblocker.so      v1.5.672  ini   ANY
[ 4] SafeNameAndChat  RUN   -    SafeNameAndChat.  v1.0      ini   ANY
[ 5] Reunion          RUN   -    reunion.so        v0.1.75   ini   Start Never
[ 6] Revoice          RUN   -    revoice.so        v0.1.26   ini   Start Never
[ 7] ReSemiclip       RUN   -    resemiclip.so     v2.3.8    ini   ANY
[ 8] ReAuthCheck      RUN   -    reauthcheck.so    v0.1.5    ini   Start Never
[ 9] ReAPI            RUN   -    reapi_amxx_i386.  v0.1.80   pl1   ANY   Never
[10] CStrike          RUN   -    cstrike_amxx_i38  v1.8.2    pl1   ANY
[11] CSX              RUN   -    csx_amxx_i386.so  v1.8.2    pl1   ANY
[12] Fun              RUN   -    fun_amxx_i386.so  v1.8.2    pl1   ANY
[13] Engine           RUN   -    engine_amxx_i386  v1.8.2    pl1   ANY
[14] FakeMeta         RUN   -    fakemeta_amxx_i3  v1.8.2    pl1   ANY
[15] Ham Sandwich     RUN   -    hamsandwich_amxx  v1.8.2    pl1   ANY
[16] MySQL            RUN   -    mysql_amxx_i386.  v1.8.2    pl1   ANY
16 plugins, 16 running
Аватара пользователя
BoJl4aRAAA
 
Сообщения: 3
Зарегистрирован: 05 фев 2017, 21:51
Откуда: дмд
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Разминка на ножах (Knife warmup)

Сообщение Subb98 » 06 фев 2017, 11:16

BoJl4aRAAA, это уже отдельная тема, к плагину не относится. :-)
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Разминка на ножах (Knife warmup)

Сообщение Капитан » 10 мар 2017, 20:44

Добрый вечер.
Не поможете с ошибкой, при компиляции.

Код: Выделить всё
/* ===============================================================================
 * Knife warmup 0.1 [28.03.2016]
 * Благодарности:
 * - Sanlerus: реализация отлова выбора класса
 * - s1lent: реализация и возможность использования 'Regamedll_CS', 'RoundControl'
 * - Safety1st: способы реализации некоторых функций из 'Uncommon Knife Warmup'
 * ============================================================================ */

#include <amxmodx>
#include <cstrike>
#include <engine>
#include <hamsandwich>
//#include <roundcontrol> // раскомментируйте эту строку, если на сервере не используется Regamedll_CS

#pragma semicolon 1

#define bit_set(%0,%1) (%1 |= (1<<%0))
#define bit_clear(%0,%1) (%1 &= ~(1<<%0))
#define bit_valid(%0,%1) (%1 & (1<<%0))
#define USE_PAUSE // раскомментируйте эту строку, если желаете, чтобы плагин прекратил работу после выполнения задачи

const MAX_PLAYERS = 20; // максимальное кол-во игроков на сервере, заменить своим (по умолчанию 32)
const WARMUP_TIME = 90; // кол-во времени в секундах, отведённое на разминку (по умолчанию 90)
const Float:RESPAWN_DELAY = 0.75; // кол-во времени в секундах, отведённое на задержку перед респауном (по умолчанию 0.75)
const Float:SHOW_MSG_DELAY = 0.8; // кол-во времени в секундах, отведённое на задержку перед отправкой HUD-сообщения (по умолчанию 0.5)
const Float:WARMUP_HEALTH = 35.0; // кол-во ед. здоровья, устанавливаемое игроку при спауне во время разминки (по умолчанию 35.0)
const HW_CROSS_AMMO_WPNLIST = (1<<0);
const HW_TIMER = (1<<4);
const HW_MONEY = (1<<5);

new const KILL_SOUNDS[][] = {
    "misc/sheep.wav", "misc/killChicken.wav", "misc/cow.wav"
};

enum {
    WS_WAITING = 1,
    WS_BEGIN,
    WS_IN_PROGRESS,
    WS_ENDED
}

new HamHook:g_pHamSpawn, HamHook:g_pHamAddPlayerItem, HamHook:g_pHamGiveAmmo, HamHook:g_pHamUse, HamHook:g_pHamKilled;

#if defined _roundcontrol_included
new RoundControlHook:g_pCheckWinHook;
#else
new g_pRoundInfinite, g_szRoundInfinite[10];
#endif

new g_pRestartRound, g_pHideWeaponMsgId, g_pStatusIconMsgId, g_pHudSyncObj1, g_pHudSyncObj2, g_pThinkEnt, g_iConnectedBitsum, g_iAliveBitsum, g_iMessageBitsum, g_iFrags[MAX_PLAYERS + 1],
    g_iWarmupState = WS_WAITING, g_pHideWeapon, g_iTimerCount;

public plugin_precache() {
    for(new i; i < sizeof KILL_SOUNDS; i++) {
        precache_sound(KILL_SOUNDS[i]);
    }
}

public plugin_init() {
    register_plugin("Knife warmup", "0.1", "Subb98");
    register_clcmd("joinclass", "CmdJoinClass");
    const JOIN_CLASS_MENU_KEYS = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5;
    register_menucmd(register_menuid("Terrorist_Select"), JOIN_CLASS_MENU_KEYS, "CmdJoinClass");
    register_menucmd(register_menuid("CT_Select"), JOIN_CLASS_MENU_KEYS, "CmdJoinClass");
    register_event("HLTV", "EventHLTV", "a", "1=0", "2=0");
    register_logevent("EventGameCommencing", 2, "1=Game_Commencing");
    register_logevent("EventRoundStart", 2, "1=Round_Start");
    register_logevent("EventRoundEnd", 2, "1=Round_End");
    new const ENT_CLASSNAME[] = "player";
    DisableHamForward(g_pHamSpawn = RegisterHam(Ham_Spawn, ENT_CLASSNAME, "HamSpawnPlayerPost", 1));
    DisableHamForward(g_pHamAddPlayerItem = RegisterHam(Ham_AddPlayerItem, ENT_CLASSNAME, "HamAddPlayerItemPre"));
    DisableHamForward(g_pHamGiveAmmo = RegisterHam(Ham_GiveAmmo, ENT_CLASSNAME, "HamGiveAmmoPre"));
    DisableHamForward(g_pHamUse = RegisterHam(Ham_Use, "hostage_entity", "HamUseHostagePre"));
    DisableHamForward(g_pHamKilled = RegisterHam(Ham_Killed, ENT_CLASSNAME, "HamKilledPlayerPost", 1));
    #if !defined _roundcontrol_included
    g_pRoundInfinite = get_cvar_pointer("mp_round_infinite");
    #endif
    g_pRestartRound = get_cvar_pointer("sv_restartround");
    g_pHideWeaponMsgId = get_user_msgid("HideWeapon");
    g_pStatusIconMsgId = get_user_msgid("StatusIcon");
    g_pHudSyncObj1 = CreateHudSyncObj();
    g_pHudSyncObj2 = CreateHudSyncObj();
    CreateThinkEntity();
}

#if !defined _roundcontrol_included
public plugin_cfg() {
    if(g_pRoundInfinite) {
        get_pcvar_string(g_pRoundInfinite, g_szRoundInfinite, charsmax(g_szRoundInfinite));
    }
}
#endif

public client_putinserver(id) {
    ResetValues(id);
    if(!is_user_bot(id) && !is_user_hltv(id)) {
        bit_set(id, g_iConnectedBitsum);
    }
}

public client_disconnected(id) {
    ResetValues(id);
    remove_task(id);
}

public CmdJoinClass(const id) {
    if(g_iWarmupState == WS_IN_PROGRESS) {
        set_task(RESPAWN_DELAY, "TaskRespawn", id);
    }
}

public EventHLTV() {
    switch(g_iWarmupState) {
        case WS_BEGIN: {
            g_iWarmupState = WS_IN_PROGRESS;
            g_iMessageBitsum = 0;
            EnableHamForward(g_pHamSpawn);
            EnableHamForward(g_pHamAddPlayerItem);
            EnableHamForward(g_pHamGiveAmmo);
            EnableHamForward(g_pHamUse);
            EnableHamForward(g_pHamKilled);
            g_pHideWeapon = register_message(g_pHideWeaponMsgId, "MessageHideWeapon");
            #if defined _roundcontrol_included
            g_pCheckWinHook = SetBlockControl(RC_CheckWinConditions);
            #else
            if(g_pRoundInfinite) {
                set_pcvar_num(g_pRoundInfinite, 1);
            }
            #endif
            set_msg_block(g_pStatusIconMsgId, BLOCK_SET);
        }
        case WS_ENDED: {
            entity_set_float(g_pThinkEnt, EV_FL_nextthink, get_gametime() + SHOW_MSG_DELAY);
        }
    }
}

public EventGameCommencing() {
    if(g_iWarmupState == WS_WAITING) {
        g_iWarmupState = WS_BEGIN;
    }
}

public EventRoundStart() {
    if(g_iWarmupState == WS_IN_PROGRESS) {
        entity_set_float(g_pThinkEnt, EV_FL_nextthink, get_gametime() + 1.0);
    }
}

public EventRoundEnd() {
    if(g_iWarmupState == WS_IN_PROGRESS) {
        g_iWarmupState = WS_ENDED;
        DisableHamForward(g_pHamSpawn);
        DisableHamForward(g_pHamAddPlayerItem);
        DisableHamForward(g_pHamGiveAmmo);
        DisableHamForward(g_pHamUse);
        DisableHamForward(g_pHamKilled);
        unregister_message(g_pHideWeaponMsgId, g_pHideWeapon);
        #if defined _roundcontrol_included
        RemoveBlockControl(RC_CheckWinConditions, g_pCheckWinHook);
        #else
        if(g_pRoundInfinite) {
            set_pcvar_string(g_pRoundInfinite, g_szRoundInfinite);
        }
        #endif
        set_msg_block(g_pStatusIconMsgId, BLOCK_NOT);
        set_pcvar_float(g_pRestartRound, 1.0);
    }
}

public MessageHideWeapon() {
    const ARG_FLAGS = 1;
    set_msg_arg_int(ARG_FLAGS, ARG_BYTE, get_msg_arg_int(ARG_FLAGS) | HW_CROSS_AMMO_WPNLIST | HW_TIMER | HW_MONEY);
}

public HamSpawnPlayerPost(const id) {
    if(is_user_alive(id)) {
        bit_set(id, g_iAliveBitsum);
        if(!bit_valid(id, g_iMessageBitsum)) {
            set_task(SHOW_MSG_DELAY, "TaskWarmupStartMsg", id);
        }
        entity_set_float(id, EV_FL_health, WARMUP_HEALTH);
        engclient_cmd(id, "weapon_knife");
        message_begin(MSG_ONE, g_pHideWeaponMsgId, _, id);
        write_byte(HW_CROSS_AMMO_WPNLIST | HW_TIMER | HW_MONEY);
        message_end();
    }
}

public HamAddPlayerItemPre(const id, const pEnt) {
    if(cs_get_weapon_id(pEnt) != CSW_KNIFE) {
        entity_set_int(pEnt, EV_INT_flags, entity_get_int(pEnt, EV_INT_flags ) | FL_KILLME);
        SetHamReturnInteger(0);
        return HAM_SUPERCEDE;
    }
    return HAM_IGNORED;
}

public HamGiveAmmoPre() {
    const NO_AMMO_STOP_PROCESSING = -1;
    SetHamReturnInteger(NO_AMMO_STOP_PROCESSING);
    return HAM_SUPERCEDE;
}

public HamUseHostagePre() {
    return HAM_SUPERCEDE;
}

public HamKilledPlayerPost(const id, const pKiller) {
    bit_clear(id, g_iAliveBitsum);
    if(bit_valid(pKiller, g_iAliveBitsum)) {
        if(g_iFrags[pKiller] == sizeof KILL_SOUNDS) {
            g_iFrags[pKiller] = 0;
        }
        emit_sound(pKiller, CHAN_VOICE, KILL_SOUNDS[g_iFrags[pKiller]], VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
        g_iFrags[pKiller]++;
    }
    set_task(RESPAWN_DELAY, "TaskRespawn", id);
}

public FwdThink(const pEnt) {
    switch(g_iWarmupState) {
        case WS_IN_PROGRESS: {
            static iDiff, iMin;
            iDiff = WARMUP_TIME - g_iTimerCount++, iMin = 0;
            GetMinutes(iDiff, iMin);
            set_hudmessage(255, 255, 255, _, 0.96, _, _, 1.0, 0.0, 0.01, -1);
            ShowSyncHudMsg(0, g_pHudSyncObj1, "До конца разминки: %d:%d", iMin, iDiff);
            if(iDiff || iMin) {
                entity_set_float(pEnt, EV_FL_nextthink, get_gametime() + 1.0);
            } else {
                EventRoundEnd();
            }
        }
        case WS_ENDED: {
            g_iWarmupState = WS_WAITING;
            g_iTimerCount = 0;
            set_hudmessage(255, 255, 255, _, 0.25, _, _, 5.0, _, _, -1);
            ShowSyncHudMsg(0, g_pHudSyncObj2, "Приготовьтесь к бою!^nИгра началась!");
            #if defined USE_PAUSE
            pause("d");
            #endif
        }
    }
}

public TaskRespawn(const id) {
    if(bit_valid(id, g_iConnectedBitsum) && !bit_valid(id, g_iAliveBitsum) && cs_get_user_team(id) != CS_TEAM_SPECTATOR) {
        ExecuteHamB(Ham_CS_RoundRespawn, id);
    }
}

public TaskWarmupStartMsg(const id) {
    if(bit_valid(id, g_iAliveBitsum)) {
        set_hudmessage(255, 255, 255, _, 0.25, _, _, 5.0, _, _, -1);
        ShowSyncHudMsg(id, g_pHudSyncObj2, "Приготовьтесь к бойне!^nРазминка на ножах началась!");
        bit_set(id, g_iMessageBitsum);
    }
}

CreateThinkEntity() {
    new const ENT_CLASSNAME[] = "_warmup_think_ent";
    if((g_pThinkEnt = create_entity("info_target"))) {
        entity_set_string(g_pThinkEnt, EV_SZ_classname, ENT_CLASSNAME);
        register_think(ENT_CLASSNAME, "FwdThink");
    } else {
        set_fail_state("Failed to create think entity");
    }
}

ResetValues(const id) {
    bit_clear(id, g_iConnectedBitsum);
    bit_clear(id, g_iAliveBitsum);
    bit_clear(id, g_iMessageBitsum);
    g_iFrags[id] = 0;
}

GetMinutes(&iSec, &iMin) {
    const SECONDS_IN_MINUTE = 60;
    iMin = iSec / SECONDS_IN_MINUTE, iSec %= SECONDS_IN_MINUTE;

Компилятор 1.8.3 - Re.
Раньше все работало, решил поменять к-во слотов и ошибка.
Аватара пользователя
Капитан
 
Сообщения: 12
Зарегистрирован: 06 мар 2016, 21:05
Благодарил (а): 14 раз.
Поблагодарили: 0 раз.

Пред.След.

Вернуться в Утвержденные плагины

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

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