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

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

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

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

Выключить WarmUP во время Nightmode

Статус пользователя firante
сообщение 29.7.2014, 12:11
Сообщение #1


Стаж: 12 лет

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

Привет есть WarmUP от Сафетиста и есть Nighmode от trallface нужно сделать так что-бы WarmUP во время Nighmode не работал! Писал trallface у него дела занят пока не занимается плагинами! Вообщем как можно это устроить ? (знаю что какие-то нативы надо на оба плагина вшить но как не знаю) вообщем нужна помощь!
Nighmode.sma
Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define VERSION "3.6"
// #define DBG // Дебаг сообщение в plugin_end
#define CSDM // Включает CSDM режим
#define AUTORR // Включить или выключить автоматические рестарты карты [По дефолту включены]
#define AUTORR_ROUNDS 30 // Количество раундов, после которых последует рестарт карты
#define NM_MAP "de_dust2" // Карта во время ночного времени
#define NM_TIME "03:00 09:00" // Время ночного времени 23 - час 10 - час | Промежуток с 23:00 до 10:00

#if defined CSDM
#include <hamsandwich>
#if AMXX_VERSION_NUM < 183
#include <dhudmessage>
#endif
new pcv_mp_roundtime, pcv_mp_buytime, g_iOldBuytime;
#endif

new g_szCurrentMap[32];
new pcv_time, pcv_mp_timelimit;
new g_iOldTimelimit;
new bool:g_bNightMode, bool:g_bNeedChange, bool:g_bParseFromTo;
#if defined AUTORR
new bool:isFirstRound = true;
new g_roundCount;
#endif

new szParse[4][3], szParseFromH, szParseToH, szTime[12], iTo, iFrom;

public plugin_natives()
{
register_library("night_mode");
register_native("is_night_mode", "CheckNightMode");
}

public plugin_init()
{
register_plugin("Map on Time", VERSION, "Flash | neygomon");

register_event("DeathMsg", "DeathMessg", "a");
register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");
#if defined AUTORR
register_event("TextMsg","eventRoundRestart","a","2&#Game_w");
register_event("TextMsg","eventCommencingRestart","a","2&#Game_C");
#endif
#if defined CSDM
register_clcmd("joinclass", "Spawn");
register_clcmd("say /respawn", "Spawn");
register_clcmd("say /spawn", "Spawn");

RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn_Post", 1);
#endif

// Cvars
pcv_time = register_cvar("mot_time", NM_TIME);
pcv_mp_timelimit = get_cvar_pointer("mp_timelimit");
#if defined CSDM
pcv_mp_buytime = get_cvar_pointer("mp_buytime");
pcv_mp_roundtime = get_cvar_pointer("mp_roundtime");
#endif
}

public plugin_cfg()
{
get_mapname(g_szCurrentMap, 31);
get_pcvar_string(pcv_time, szTime, 11);
replace_all(szTime, 11, ":", " ");
if(parse(szTime, szParse[0], 2, szParse[1], 2, szParse[2], 2, szParse[3], 2) != 4)
{
set_fail_state("Invalid time in cvar");
return;
}
szParseFromH = str_to_num(szParse[0]); szParseToH = str_to_num(szParse[2]);

iFrom = szParseFromH * 60 * 60 + str_to_num(szParse[1]) * 60;
iTo = szParseToH * 60 * 60 + str_to_num(szParse[3]) * 60;

if(szParseFromH > szParseToH) g_bParseFromTo = true;
}

public client_authorized(id)
{
if(g_bNightMode)
remove_user_flags(id, ADMIN_MAP|ADMIN_VOTE);
}
#if defined CSDM
public DeathMessg()
{
if(g_bNightMode)
set_task(1.0, "fw_PlayerSpawn", read_data(2));
}

public Spawn(id)
{
if(g_bNightMode)
set_task(3.0, "fw_PlayerSpawn", id);
}

public fwd_PlayerSpawn_Post(id)
{
if(g_bNightMode)
{
if(!is_user_alive(id)) return;
// remove bmb
if(get_user_team(id) == 1)
{
strip_user_weapons(id);
give_item(id, "weapon_knife");
give_item(id, "weapon_glock18");
cs_set_user_bpammo(id, CSW_GLOCK18, 40);
}
// end remove bmb
cs_set_user_money(id, 16000);
set_user_godmode(id, 1);
set_task(2.0, "OffProtection", id);
}
}

public OffProtection(id)
{
if(!is_user_connected(id)) return;
set_user_godmode(id, 0);
}

public fw_PlayerSpawn(id)
{
if(is_user_alive(id)) return;

switch(get_user_team(id))
{
case 1, 2: ExecuteHamB(Ham_CS_RoundRespawn, id);
}
}
#endif
public TaskCheckTime()
{
new iHour, iMin; time(iHour, iMin);
new iCurTime = iHour * 60 * 60 + iMin * 60;

if((iFrom <= iCurTime && g_bParseFromTo) || iCurTime < iTo)
{
if(!equal(g_szCurrentMap, NM_MAP))
{
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.23, 0, 5.0, 15.04, 0.0, 0.5);
show_dhudmessage(0, "Последний раунд^nПодготовка к ночному режиму!");
g_bNeedChange = true;
return;
}
if(!g_bNightMode)
{
g_iOldTimelimit = get_pcvar_num(pcv_mp_timelimit);
#if defined CSDM
g_iOldBuytime = get_pcvar_num(pcv_mp_buytime);
set_pcvar_float(pcv_mp_buytime, get_pcvar_float(pcv_mp_roundtime));
#endif
set_pcvar_num(pcv_mp_timelimit, 0);
server_cmd("hostname ^"[NightMode] ProStrike Public ©^"");
RemovePlayersFlags();
g_bNightMode = true;
}
}
else if(g_bNightMode)
{
g_bNightMode = false;
set_pcvar_num(pcv_mp_timelimit, 5 + floatround(get_gametime()) / 60);
server_cmd("hostname ^"ProStrike Public ©^"");
}
#if defined DBG
log_to_file("_dbg_nm.log", "CurTime: %d | From: %d | To: %d || NightMode %s", iHour, szParseFromH, szParseToH, g_bNightMode ? "Actived" : "Not active")
#endif
}

#if defined AUTORR
public eventCommencingRestart() isFirstRound = true;

public eventRoundRestart() g_roundCount = 0;
#endif
public EventRoundStart()
{
if(g_bNeedChange)
{
message_begin(MSG_BROADCAST, SVC_INTERMISSION);
message_end();
set_task(3.0, "DelayChangeMap");
}
TaskCheckTime();
if(g_bNightMode)
{
#if defined AUTORR
if(isFirstRound)
{
isFirstRound = false;
g_roundCount = 0;
}
g_roundCount++;
new round = AUTORR_ROUNDS - g_roundCount;
if(round > 0)
client_print_color(0, 0, "^4[^3NightMode^4] До авторестарта карты осталось ^3%d ^4раундов ^4[Тек. раунд: ^3%d ^4| Всего: ^3%d^4]", round, g_roundCount, AUTORR_ROUNDS);
else
server_cmd("restart");
#endif
#if defined CSDM
set_task(1.0, "hud_message");
#endif
}
}

public DelayChangeMap()
server_cmd("changelevel %s", NM_MAP);

public plugin_end()
{
if(g_iOldTimelimit)
{
set_pcvar_num(pcv_mp_timelimit, g_iOldTimelimit);
#if defined CSDM
set_pcvar_num(pcv_mp_buytime, g_iOldBuytime);
#endif
#if defined DBG
log_to_file("_dbg_nm.log", "[plugin_end] g_iOldTimelimit: %d | timelimit: %d", g_iOldTimelimit, get_pcvar_num(pcv_mp_timelimit));
#endif
}
}

RemovePlayersFlags()
{
new players[32], pcount
get_players(players, pcount, "ch")
for(new i; i < pcount; i++)
remove_user_flags(players[i], ADMIN_MAP|ADMIN_VOTE);
}
#if defined CSDM
public hud_message()
{
#if AMXX_VERSION_NUM < 183
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.23, 0, 3.0, 3.0, 0.0, 0.0, false);
#else
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.23, 0, 3.0, 3.0, 0.0, 0.0);
#endif
show_dhudmessage(0, "C 0%d:00 до 0%d:00 ночной режим!^nМод CSDM | Карта: %s", szParseFromH, szParseToH, NM_MAP);
}
#endif

public CheckNightMode()
return g_bNightMode;

WarmUP.sma
Код:
/* last update: 2/25/2014
*
* Attention: setting hp during knife round (if enabled) to bots are NOT supported!
*
* Credits:
* - Subb98 for the idea & prototype
* - ConnorMcLeod for code that forces spawning of newly connected players
* https://forums.alliedmods.net/showthread.ph...862#post1820862
*
* Thanks to eX-test from CS Support Community https://c-s.net.ua/ for testing
*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Simple WarmUp"
#define VERSION "0.51 deprecated"
#define AUTHOR "Safety1st"

/*---------------EDIT ME------------------*/
#define RESTART_AFTER // comment to disable restart round after warmup end
#define ARMOR_FOR_PISTOL_ROUND // uncomment to give armour during pistol round
/*----------------------------------------*/

#define TT 1
#define CT 2

new giRoundCounter
new gMsgStatusIconReg, gMsgStatusIcon, gMsgCurWeapon
new HamHook:g_iHhCBasePlayerSpawn, HamHook:g_iHhCBasePlayerPreThink
new bool:gbWarmupActive

#if defined RESTART_AFTER
new bool:gbIgnoreRestart
#endif

// offsets
#define m_fClientMapZone 235
#define MAPZONE_BUYZONE ( 1<<0 )

enum {
ROUND_NONE,
ROUND_KNIFE,
ROUND_PISTOL
}

const m_iJoinedState = 121
const m_iMenu = 205

const MENU_CHOOSEAPPEARANCE = 3
const STATE_PICKINGCLASS = 4

#if AMXX_VERSION_NUM < 183
// Attention! This will correctly work only for AMXX 1.8.3-dev git3790 and above.
#include <dhudmessage>
#endif

#define MESSAGE_TASK_ID 1337
#define HUD_WARMUP 220, 160, 0, -1.0, 0.8, 0, 0.0, 1.1, 0.0, 0.0
#define HUD_END 100, 200, 0, -1.0, 0.8, 0, 0.0, 4.0, 0.0, 1.0

enum _:Messages {
WARMUP_PROCESS,
WARMUP_END
}
new gszMessage[Messages][] = {
"Разминочный раунд!",
"LIVE! LIVE! LIVE! ^nУдачи и приятной игры!"
}

new bool:gbShowEnd

public plugin_init() {
register_plugin( PLUGIN, VERSION, AUTHOR )

register_event( "TextMsg", "EventNewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
register_event( "HLTV", "EventNewRound", "a", "1=0", "2=0" )
register_event( "CurWeapon", "EventCurWeapon", "be", "1=1", "2!29" ) // specified, call if is send to alive player only

register_logevent( "EventRoundStart", 2, "0=World triggered", "1=Round_Start" )
register_logevent( "EventRoundEnd", 2, "1=Round_End" )

gMsgStatusIcon = get_user_msgid( "StatusIcon" )
gMsgCurWeapon = get_user_msgid( "CurWeapon" )

DisableHamForward( g_iHhCBasePlayerSpawn = RegisterHam( Ham_Spawn, "player", "OnCBasePlayer_Spawn_Post", 1 ) )

DisableHamForward( g_iHhCBasePlayerPreThink = RegisterHam( Ham_Player_PreThink, "player", "OnCBasePlayer_PreThink_Post", 1 ) )

register_clcmd( "menuselect", "ClCmd_MenuSelect_JoinClass" )
register_clcmd( "joinclass", "ClCmd_MenuSelect_JoinClass" )
}

public EventNewGame() {
#if defined RESTART_AFTER
if( gbIgnoreRestart ) {
// it is planned
gbIgnoreRestart = false
return
}
#endif

if( !gbWarmupActive ) {
// we don't have active 'hooks' for now
gMsgStatusIconReg = register_message( gMsgStatusIcon, "MessageStatusIcon" )
EnableHamForward( g_iHhCBasePlayerSpawn )
set_task( 1.0, "ShowMessage", MESSAGE_TASK_ID, .flags = "b" )
gbWarmupActive = true
}

gbShowEnd = false
giRoundCounter = ROUND_NONE
}

public EventNewRound() {
if( !gbWarmupActive )
return

giRoundCounter += 2 // fast fix to avoid knife round ;)
}

public OnCBasePlayer_Spawn_Post(id) {
if( !is_user_alive(id) )
return

switch( giRoundCounter ) {
case ROUND_PISTOL: {
switch( get_user_team(id) ) {
case TT: cs_set_user_bpammo( id, CSW_GLOCK18, 120 )
case CT: cs_set_user_bpammo( id, CSW_USP, 100 )
}
#if defined ARMOR_FOR_PISTOL_ROUND
// remember: only TT/CT players could be spawned
cs_set_user_armor( id, 100, CS_ARMOR_VESTHELM )
#endif
}
}
}

public EventCurWeapon(id) {
if( !gbWarmupActive )
return

switch( giRoundCounter ) {
case ROUND_KNIFE : {
if( read_data(2) /* weapon id */ != CSW_C4 )
SetKnife(id)
}
case ROUND_PISTOL: {
switch( read_data(2) ) {
case CSW_GLOCK18, CSW_USP, CSW_C4 : return
}
SetKnife(id)
}
}
}

SetKnife(id) {
engclient_cmd( id, "weapon_knife" )

// update info about weapon
emessage_begin( MSG_ONE, gMsgCurWeapon, _, id )
ewrite_byte(1) // active
ewrite_byte(CSW_KNIFE) // weapon
ewrite_byte(-1) // clip
emessage_end()
}

public MessageStatusIcon( msgid, dest, receiver ) { // Exolent[jNr]'s code
// check if status is to be shown
if( get_msg_arg_int(1) ) {
static const buyzone[] = "buyzone"

// grab what icon is being shown
new icon[ sizeof( buyzone ) + 1 ]
get_msg_arg_string( 2, icon, charsmax(icon) )

// check if buyzone icon
if( !strcmp( icon, buyzone ) ) {
// remove player's buyzone bit for the map zones
set_pdata_int( receiver, m_fClientMapZone, get_pdata_int( receiver, m_fClientMapZone ) &~ MAPZONE_BUYZONE )
// block buyzone icon
return PLUGIN_HANDLED
}
}

return PLUGIN_CONTINUE
}

public EventRoundEnd() {
if( !gbWarmupActive )
return

// remember: Round_End is fired right after Game_Commencing too
switch( giRoundCounter ) {
case ROUND_NONE: return
case ROUND_KNIFE : return
}

gbWarmupActive = false
unregister_message( gMsgStatusIcon, gMsgStatusIconReg )
DisableHamForward( g_iHhCBasePlayerSpawn )
remove_task( MESSAGE_TASK_ID )
gbShowEnd = true

#if defined RESTART_AFTER
gbIgnoreRestart = true
set_cvar_num( "sv_restart", 5 )
#endif
}

public ClCmd_MenuSelect_JoinClass(id) {
if( !gbWarmupActive )
return

if( get_pdata_int(id, m_iMenu) == MENU_CHOOSEAPPEARANCE && get_pdata_int(id, m_iJoinedState) == STATE_PICKINGCLASS )
EnableHamForward( g_iHhCBasePlayerPreThink )
}

public OnCBasePlayer_PreThink_Post(id) {
DisableHamForward( g_iHhCBasePlayerPreThink )
if( !is_user_alive(id) )
ExecuteHam( Ham_Spawn, id )
}

public ShowMessage() {
set_dhudmessage( HUD_WARMUP )
show_dhudmessage( 0, gszMessage[ WARMUP_PROCESS ] )
}

public EventRoundStart() {
if( gbShowEnd ) {
set_dhudmessage( HUD_END )
show_dhudmessage( 0, gszMessage[ WARMUP_END ] )
gbShowEnd = false
}
}


Отредактировал: firante, - 29.7.2014, 12:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя default1k
сообщение 29.7.2014, 12:49
Сообщение #2
Стаж: 12 лет

Сообщений: 718
Благодарностей: 180
Полезность: 153

Зачем? Сервер из за этого падает?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя firante
сообщение 29.7.2014, 12:58
Сообщение #3


Стаж: 12 лет

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

default1k,
Ничего не падает просто надо что-бы во время Ночного режима разминочный раунд отключался
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Pauk93
сообщение 28.10.2014, 21:07
Сообщение #4
Стаж: 11 лет

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

Цитата(firante @ 29.7.2014, 12:11) *
Привет есть WarmUP от Сафетиста и есть Nighmode от trallface нужно сделать так что-бы WarmUP во время Nighmode не работал! Писал trallface у него дела занят пока не занимается плагинами! Вообщем как можно это устроить ? (знаю что какие-то нативы надо на оба плагина вшить но как не знаю) вообщем нужна помощь!
Nighmode.sma
Код:
#include <amxmodx>
#include <cstrike>
#include <fun>
#if AMXX_VERSION_NUM < 183
#include <colorchat>
#endif

#define VERSION "3.6"
// #define DBG // Дебаг сообщение в plugin_end
#define CSDM // Включает CSDM режим
#define AUTORR // Включить или выключить автоматические рестарты карты [По дефолту включены]
#define AUTORR_ROUNDS 30 // Количество раундов, после которых последует рестарт карты
#define NM_MAP "de_dust2" // Карта во время ночного времени
#define NM_TIME "03:00 09:00" // Время ночного времени 23 - час 10 - час | Промежуток с 23:00 до 10:00

#if defined CSDM
#include <hamsandwich>
#if AMXX_VERSION_NUM < 183
#include <dhudmessage>
#endif
new pcv_mp_roundtime, pcv_mp_buytime, g_iOldBuytime;
#endif

new g_szCurrentMap[32];
new pcv_time, pcv_mp_timelimit;
new g_iOldTimelimit;
new bool:g_bNightMode, bool:g_bNeedChange, bool:g_bParseFromTo;
#if defined AUTORR
new bool:isFirstRound = true;
new g_roundCount;
#endif

new szParse[4][3], szParseFromH, szParseToH, szTime[12], iTo, iFrom;

public plugin_natives()
{
register_library("night_mode");
register_native("is_night_mode", "CheckNightMode");
}

public plugin_init()
{
register_plugin("Map on Time", VERSION, "Flash | neygomon");

register_event("DeathMsg", "DeathMessg", "a");
register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");
#if defined AUTORR
register_event("TextMsg","eventRoundRestart","a","2&#Game_w");
register_event("TextMsg","eventCommencingRestart","a","2&#Game_C");
#endif
#if defined CSDM
register_clcmd("joinclass", "Spawn");
register_clcmd("say /respawn", "Spawn");
register_clcmd("say /spawn", "Spawn");

RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawn_Post", 1);
#endif

// Cvars
pcv_time = register_cvar("mot_time", NM_TIME);
pcv_mp_timelimit = get_cvar_pointer("mp_timelimit");
#if defined CSDM
pcv_mp_buytime = get_cvar_pointer("mp_buytime");
pcv_mp_roundtime = get_cvar_pointer("mp_roundtime");
#endif
}

public plugin_cfg()
{
get_mapname(g_szCurrentMap, 31);
get_pcvar_string(pcv_time, szTime, 11);
replace_all(szTime, 11, ":", " ");
if(parse(szTime, szParse[0], 2, szParse[1], 2, szParse[2], 2, szParse[3], 2) != 4)
{
set_fail_state("Invalid time in cvar");
return;
}
szParseFromH = str_to_num(szParse[0]); szParseToH = str_to_num(szParse[2]);

iFrom = szParseFromH * 60 * 60 + str_to_num(szParse[1]) * 60;
iTo = szParseToH * 60 * 60 + str_to_num(szParse[3]) * 60;

if(szParseFromH > szParseToH) g_bParseFromTo = true;
}

public client_authorized(id)
{
if(g_bNightMode)
remove_user_flags(id, ADMIN_MAP|ADMIN_VOTE);
}
#if defined CSDM
public DeathMessg()
{
if(g_bNightMode)
set_task(1.0, "fw_PlayerSpawn", read_data(2));
}

public Spawn(id)
{
if(g_bNightMode)
set_task(3.0, "fw_PlayerSpawn", id);
}

public fwd_PlayerSpawn_Post(id)
{
if(g_bNightMode)
{
if(!is_user_alive(id)) return;
// remove bmb
if(get_user_team(id) == 1)
{
strip_user_weapons(id);
give_item(id, "weapon_knife");
give_item(id, "weapon_glock18");
cs_set_user_bpammo(id, CSW_GLOCK18, 40);
}
// end remove bmb
cs_set_user_money(id, 16000);
set_user_godmode(id, 1);
set_task(2.0, "OffProtection", id);
}
}

public OffProtection(id)
{
if(!is_user_connected(id)) return;
set_user_godmode(id, 0);
}

public fw_PlayerSpawn(id)
{
if(is_user_alive(id)) return;

switch(get_user_team(id))
{
case 1, 2: ExecuteHamB(Ham_CS_RoundRespawn, id);
}
}
#endif
public TaskCheckTime()
{
new iHour, iMin; time(iHour, iMin);
new iCurTime = iHour * 60 * 60 + iMin * 60;

if((iFrom <= iCurTime && g_bParseFromTo) || iCurTime < iTo)
{
if(!equal(g_szCurrentMap, NM_MAP))
{
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.23, 0, 5.0, 15.04, 0.0, 0.5);
show_dhudmessage(0, "Последний раунд^nПодготовка к ночному режиму!");
g_bNeedChange = true;
return;
}
if(!g_bNightMode)
{
g_iOldTimelimit = get_pcvar_num(pcv_mp_timelimit);
#if defined CSDM
g_iOldBuytime = get_pcvar_num(pcv_mp_buytime);
set_pcvar_float(pcv_mp_buytime, get_pcvar_float(pcv_mp_roundtime));
#endif
set_pcvar_num(pcv_mp_timelimit, 0);
server_cmd("hostname ^"[NightMode] ProStrike Public ©^"");
RemovePlayersFlags();
g_bNightMode = true;
}
}
else if(g_bNightMode)
{
g_bNightMode = false;
set_pcvar_num(pcv_mp_timelimit, 5 + floatround(get_gametime()) / 60);
server_cmd("hostname ^"ProStrike Public ©^"");
}
#if defined DBG
log_to_file("_dbg_nm.log", "CurTime: %d | From: %d | To: %d || NightMode %s", iHour, szParseFromH, szParseToH, g_bNightMode ? "Actived" : "Not active")
#endif
}

#if defined AUTORR
public eventCommencingRestart() isFirstRound = true;

public eventRoundRestart() g_roundCount = 0;
#endif
public EventRoundStart()
{
if(g_bNeedChange)
{
message_begin(MSG_BROADCAST, SVC_INTERMISSION);
message_end();
set_task(3.0, "DelayChangeMap");
}
TaskCheckTime();
if(g_bNightMode)
{
#if defined AUTORR
if(isFirstRound)
{
isFirstRound = false;
g_roundCount = 0;
}
g_roundCount++;
new round = AUTORR_ROUNDS - g_roundCount;
if(round > 0)
client_print_color(0, 0, "^4[^3NightMode^4] До авторестарта карты осталось ^3%d ^4раундов ^4[Тек. раунд: ^3%d ^4| Всего: ^3%d^4]", round, g_roundCount, AUTORR_ROUNDS);
else
server_cmd("restart");
#endif
#if defined CSDM
set_task(1.0, "hud_message");
#endif
}
}

public DelayChangeMap()
server_cmd("changelevel %s", NM_MAP);

public plugin_end()
{
if(g_iOldTimelimit)
{
set_pcvar_num(pcv_mp_timelimit, g_iOldTimelimit);
#if defined CSDM
set_pcvar_num(pcv_mp_buytime, g_iOldBuytime);
#endif
#if defined DBG
log_to_file("_dbg_nm.log", "[plugin_end] g_iOldTimelimit: %d | timelimit: %d", g_iOldTimelimit, get_pcvar_num(pcv_mp_timelimit));
#endif
}
}

RemovePlayersFlags()
{
new players[32], pcount
get_players(players, pcount, "ch")
for(new i; i < pcount; i++)
remove_user_flags(players[i], ADMIN_MAP|ADMIN_VOTE);
}
#if defined CSDM
public hud_message()
{
#if AMXX_VERSION_NUM < 183
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.23, 0, 3.0, 3.0, 0.0, 0.0, false);
#else
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.23, 0, 3.0, 3.0, 0.0, 0.0);
#endif
show_dhudmessage(0, "C 0%d:00 до 0%d:00 ночной режим!^nМод CSDM | Карта: %s", szParseFromH, szParseToH, NM_MAP);
}
#endif

public CheckNightMode()
return g_bNightMode;

WarmUP.sma
Код:
/* last update: 2/25/2014
*
* Attention: setting hp during knife round (if enabled) to bots are NOT supported!
*
* Credits:
* - Subb98 for the idea & prototype
* - ConnorMcLeod for code that forces spawning of newly connected players
* https://forums.alliedmods.net/showthread.ph...862#post1820862
*
* Thanks to eX-test from CS Support Community https://c-s.net.ua/ for testing
*/

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Simple WarmUp"
#define VERSION "0.51 deprecated"
#define AUTHOR "Safety1st"

/*---------------EDIT ME------------------*/
#define RESTART_AFTER // comment to disable restart round after warmup end
#define ARMOR_FOR_PISTOL_ROUND // uncomment to give armour during pistol round
/*----------------------------------------*/

#define TT 1
#define CT 2

new giRoundCounter
new gMsgStatusIconReg, gMsgStatusIcon, gMsgCurWeapon
new HamHook:g_iHhCBasePlayerSpawn, HamHook:g_iHhCBasePlayerPreThink
new bool:gbWarmupActive

#if defined RESTART_AFTER
new bool:gbIgnoreRestart
#endif

// offsets
#define m_fClientMapZone 235
#define MAPZONE_BUYZONE ( 1<<0 )

enum {
ROUND_NONE,
ROUND_KNIFE,
ROUND_PISTOL
}

const m_iJoinedState = 121
const m_iMenu = 205

const MENU_CHOOSEAPPEARANCE = 3
const STATE_PICKINGCLASS = 4

#if AMXX_VERSION_NUM < 183
// Attention! This will correctly work only for AMXX 1.8.3-dev git3790 and above.
#include <dhudmessage>
#endif

#define MESSAGE_TASK_ID 1337
#define HUD_WARMUP 220, 160, 0, -1.0, 0.8, 0, 0.0, 1.1, 0.0, 0.0
#define HUD_END 100, 200, 0, -1.0, 0.8, 0, 0.0, 4.0, 0.0, 1.0

enum _:Messages {
WARMUP_PROCESS,
WARMUP_END
}
new gszMessage[Messages][] = {
"Разминочный раунд!",
"LIVE! LIVE! LIVE! ^nУдачи и приятной игры!"
}

new bool:gbShowEnd

public plugin_init() {
register_plugin( PLUGIN, VERSION, AUTHOR )

register_event( "TextMsg", "EventNewGame", "a", "2=#Game_will_restart_in", "2=#Game_Commencing" )
register_event( "HLTV", "EventNewRound", "a", "1=0", "2=0" )
register_event( "CurWeapon", "EventCurWeapon", "be", "1=1", "2!29" ) // specified, call if is send to alive player only

register_logevent( "EventRoundStart", 2, "0=World triggered", "1=Round_Start" )
register_logevent( "EventRoundEnd", 2, "1=Round_End" )

gMsgStatusIcon = get_user_msgid( "StatusIcon" )
gMsgCurWeapon = get_user_msgid( "CurWeapon" )

DisableHamForward( g_iHhCBasePlayerSpawn = RegisterHam( Ham_Spawn, "player", "OnCBasePlayer_Spawn_Post", 1 ) )

DisableHamForward( g_iHhCBasePlayerPreThink = RegisterHam( Ham_Player_PreThink, "player", "OnCBasePlayer_PreThink_Post", 1 ) )

register_clcmd( "menuselect", "ClCmd_MenuSelect_JoinClass" )
register_clcmd( "joinclass", "ClCmd_MenuSelect_JoinClass" )
}

public EventNewGame() {
#if defined RESTART_AFTER
if( gbIgnoreRestart ) {
// it is planned
gbIgnoreRestart = false
return
}
#endif

if( !gbWarmupActive ) {
// we don't have active 'hooks' for now
gMsgStatusIconReg = register_message( gMsgStatusIcon, "MessageStatusIcon" )
EnableHamForward( g_iHhCBasePlayerSpawn )
set_task( 1.0, "ShowMessage", MESSAGE_TASK_ID, .flags = "b" )
gbWarmupActive = true
}

gbShowEnd = false
giRoundCounter = ROUND_NONE
}

public EventNewRound() {
if( !gbWarmupActive )
return

giRoundCounter += 2 // fast fix to avoid knife round ;)
}

public OnCBasePlayer_Spawn_Post(id) {
if( !is_user_alive(id) )
return

switch( giRoundCounter ) {
case ROUND_PISTOL: {
switch( get_user_team(id) ) {
case TT: cs_set_user_bpammo( id, CSW_GLOCK18, 120 )
case CT: cs_set_user_bpammo( id, CSW_USP, 100 )
}
#if defined ARMOR_FOR_PISTOL_ROUND
// remember: only TT/CT players could be spawned
cs_set_user_armor( id, 100, CS_ARMOR_VESTHELM )
#endif
}
}
}

public EventCurWeapon(id) {
if( !gbWarmupActive )
return

switch( giRoundCounter ) {
case ROUND_KNIFE : {
if( read_data(2) /* weapon id */ != CSW_C4 )
SetKnife(id)
}
case ROUND_PISTOL: {
switch( read_data(2) ) {
case CSW_GLOCK18, CSW_USP, CSW_C4 : return
}
SetKnife(id)
}
}
}

SetKnife(id) {
engclient_cmd( id, "weapon_knife" )

// update info about weapon
emessage_begin( MSG_ONE, gMsgCurWeapon, _, id )
ewrite_byte(1) // active
ewrite_byte(CSW_KNIFE) // weapon
ewrite_byte(-1) // clip
emessage_end()
}

public MessageStatusIcon( msgid, dest, receiver ) { // Exolent[jNr]'s code
// check if status is to be shown
if( get_msg_arg_int(1) ) {
static const buyzone[] = "buyzone"

// grab what icon is being shown
new icon[ sizeof( buyzone ) + 1 ]
get_msg_arg_string( 2, icon, charsmax(icon) )

// check if buyzone icon
if( !strcmp( icon, buyzone ) ) {
// remove player's buyzone bit for the map zones
set_pdata_int( receiver, m_fClientMapZone, get_pdata_int( receiver, m_fClientMapZone ) &~ MAPZONE_BUYZONE )
// block buyzone icon
return PLUGIN_HANDLED
}
}

return PLUGIN_CONTINUE
}

public EventRoundEnd() {
if( !gbWarmupActive )
return

// remember: Round_End is fired right after Game_Commencing too
switch( giRoundCounter ) {
case ROUND_NONE: return
case ROUND_KNIFE : return
}

gbWarmupActive = false
unregister_message( gMsgStatusIcon, gMsgStatusIconReg )
DisableHamForward( g_iHhCBasePlayerSpawn )
remove_task( MESSAGE_TASK_ID )
gbShowEnd = true

#if defined RESTART_AFTER
gbIgnoreRestart = true
set_cvar_num( "sv_restart", 5 )
#endif
}

public ClCmd_MenuSelect_JoinClass(id) {
if( !gbWarmupActive )
return

if( get_pdata_int(id, m_iMenu) == MENU_CHOOSEAPPEARANCE && get_pdata_int(id, m_iJoinedState) == STATE_PICKINGCLASS )
EnableHamForward( g_iHhCBasePlayerPreThink )
}

public OnCBasePlayer_PreThink_Post(id) {
DisableHamForward( g_iHhCBasePlayerPreThink )
if( !is_user_alive(id) )
ExecuteHam( Ham_Spawn, id )
}

public ShowMessage() {
set_dhudmessage( HUD_WARMUP )
show_dhudmessage( 0, gszMessage[ WARMUP_PROCESS ] )
}

public EventRoundStart() {
if( gbShowEnd ) {
set_dhudmessage( HUD_END )
show_dhudmessage( 0, gszMessage[ WARMUP_END ] )
gbShowEnd = false
}
}

скиньте пожалуйста этот плагин
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 28.10.2014, 21:12
Сообщение #5


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Pauk93, оба плагина под спойлерами
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Pauk93
сообщение 28.10.2014, 21:16
Сообщение #6
Стаж: 11 лет

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

Цитата(Bloo @ 28.10.2014, 21:12) *
Pauk93, оба плагина под спойлерами

не компилируеться 1.гугл этот плагин не находит
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 28.10.2014, 21:35
Сообщение #7
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

1. Nighmode.sma

В самый низ плагина:

Код:
public plugin_natives() register_native("is_night", "native_is_night", 1)
public native_is_night() return g_bNightMode


2. WarmUP.sma

После new bool:gbShowEnd добавить
Код:
native is_night()


После public EventNewGame() { добавить
Код:
if(is_night()) return


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: