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

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

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

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

> Правила форума

Раздел для общения на любые темы, для которых не нашлось места в остальных разделах. Если Вашу тему можно отнести по смыслу к другому разделу, лучше создайте её там, иначе Вас накажут.

В данном форуме немного понижены требования к Общим правилам форума, а именно:
1. Информативность темы
2. Отходить от первоначального смысла темы

!
В разделе запрещено создавать темы связанные с раскруткой игровых серверов

Помощь timelimitvote

Статус пользователя Avrora
сообщение 22.10.2016, 23:56
Сообщение #1


Стаж: 13 лет
Город: Санкт-Петербург


Сообщений: 806
Благодарностей: 171
Полезность: 95

Не могу понять в чем дело.
Помогите кому не сложно.
Cкрытый текст

Прикрепленный файл  timelimitvote.sma ( 8,14 килобайт ) Кол-во скачиваний: 3
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Avrora
сообщение 23.10.2016, 15:07
Сообщение #2


Стаж: 13 лет
Город: Санкт-Петербург


Сообщений: 806
Благодарностей: 171
Полезность: 95

Подкину копейку за помощь.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя winzh1
сообщение 23.10.2016, 15:12
Сообщение #3


Стаж: 14 лет

Сообщений: 1414
Благодарностей: 600
Полезность: 838

Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>

#define VOTE_DELAY 40.0
#define VOTE_STARTDELAY 5
#define VOTE_DURATION 17
#define MAX_RESULTS 3

#define UNIT_SECOND (1<<12)
#define FFADE_IN 0x0000
#define FFADE_OUT 0x0001
#define FFADE_STAYOUT 0x0004
#define TASK_SF 324512

new g_iVoted[33]
new HamHook:g_fwHamSpawn
new Float:g_fTimelimit
new g_msgScreenFade, g_msgSayText
new g_iTimelimitMin[MAX_RESULTS]
new g_iVoteTimeDelay = VOTE_STARTDELAY
new g_iVoteTime = VOTE_DURATION
new b

public plugin_init ()
{
register_plugin ( "Timelimit Vote", "1.0", "QooQa" )

register_menu ( "Menu_Vote", -1, "MenuAction_Vote" )

g_msgScreenFade = get_user_msgid ( "ScreenFade" )
g_msgSayText = get_user_msgid ( "SayText" )

set_task ( VOTE_DELAY, "PreStartVote" )
}

public plugin_precache ()
{
precache_sound ( "csdm/vote_start.wav" )
precache_sound ( "csdm/vote_end.wav" )
}

public client_disconnected ( id )
{
remove_task ( id+TASK_SF )
g_iVoted[id] = 0
}

public PreStartVote ()
{
g_fwHamSpawn = RegisterHam ( Ham_Spawn, "player", "fw_PlayerSpawn", 1 )

for ( new i, iMin = 40; i < MAX_RESULTS; i++, iMin += 10 )
g_iTimelimitMin[i] = iMin

new iNum, i, iPlayers[32]
get_players ( iPlayers, iNum, "ch" )
for ( new b; b < iNum; b++ )
{
i = iPlayers[b]
create_screen_fade ( i, 1, 1, FFADE_OUT, 0, 0, 0, 255 )
set_task ( 1.0, "ScreenFadeStayout", i+TASK_SF )

if ( !is_user_alive ( i ) )
continue

set_pev ( i, pev_velocity, Float:{0.0, 0.0, 0.0} )
set_pev ( i, pev_flags, pev ( i, pev_flags ) | FL_FROZEN )
set_pev ( i, pev_takedamage, DAMAGE_NO )
engclient_cmd ( i, "weapon_knife" )
}
VoteDelayTimer ()
}

public ScreenFadeStayout ( id )
{
id -= TASK_SF
create_screen_fade ( id, 0, g_iVoteTimeDelay + g_iVoteTime, FFADE_STAYOUT, 0, 0, 0, 255 )
}

public VoteDelayTimer ()
{
if ( --g_iVoteTimeDelay > 0 )
{
new sWordEnd[3]
get_ending ( g_iVoteTimeDelay, "а", "ы", "", sWordEnd, charsmax ( sWordEnd ) )
set_hudmessage ( 255, 255, 255, -1.0, 0.3, 0, 0.0, 1.1, 0.0, 0.0, 2 )
show_hudmessage ( 0, "До голосования осталось %i секунд%s", g_iVoteTimeDelay, sWordEnd )
set_task ( 1.0, "VoteDelayTimer" )
}
else
{
client_cmd ( 0,"spk sound/csdm/vote_start" )
VoteTimer ()
}
}

public VoteTimer ()
{
if ( --g_iVoteTime > 0 )
{
new iNum, iPlayers[32]
get_players ( iPlayers, iNum, "ch" )
for ( new b; b < iNum; b++ )
MenuDisplay_Vote ( iPlayers[b] )

set_task ( 1.0, "VoteTimer" )
}
else
{
DisableHamForward ( g_fwHamSpawn )
g_fTimelimit = get_cvar_float ( "mp_timelimit" )

new iTempVotes[MAX_RESULTS]
new iNum, i, iPlayers[32]
get_players ( iPlayers, iNum, "ch" )
for ( new b; b < iNum; b++ )
{
i = iPlayers[b]

if ( g_iVoted[i] ) iTempVotes[g_iVoted[i] - 1]++

create_screen_fade ( i, 1, 0, FFADE_IN, 0, 0, 0, 255 )
client_cmd ( i, "spk sound/csdm/vote_end" )
show_menu ( i, 0, "^n", 1 )

if ( !is_user_alive ( i ) )
continue

if ( pev ( i, pev_flags ) & FL_FROZEN )
set_pev ( i, pev_flags, pev ( i, pev_flags ) & ~FL_FROZEN )

if ( pev ( i, pev_takedamage ) != DAMAGE_AIM )
set_pev ( i, pev_takedamage, DAMAGE_AIM )
}

new iBestVotes, iLeader
for ( new i; i < MAX_RESULTS; i++ )
{
if ( iTempVotes[i] > iBestVotes )
{
iBestVotes = iTempVotes[i]
iLeader = i
}
}

ChatColor ( 0, "^4[CSDM]^1 Голосование за время карты завершено, карта смениться через ^4%d минут", g_iTimelimitMin[iLeader] )
set_cvar_num ( "mp_timelimit", g_iTimelimitMin[iLeader] )
}
}

MenuDisplay_Vote ( id )
{
new sMenu[512], iKeys, iPerc
new iLen = formatex ( sMenu, charsmax ( sMenu ), "\yВыберете время карты:^n^n" )

for ( new b; b < MAX_RESULTS; b++ )
{
iPerc = CalculatePercent ( b )
if ( g_iVoted[id] == b + 1 )
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "\r%i. \d%i минут \w[\r%i%%\w]^n", b + 1, g_iTimelimitMin[b], iPerc )
else
{
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "\r%i. \w%i \rминут \w[\d%i%%\w]^n", b + 1, g_iTimelimitMin[b], iPerc )
iKeys |= ( 1 << b )
}
}
iPerc = CalculatePercent ( b )

if ( g_iVoted[id] == b + 1 )
{
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "^n" )
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "\dПроголосовало: \w(\r%i/%i\w)^n", CountVoted (), get_playersnum () )
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "\dОсталось \r%i\d секунд", g_iVoteTime )
}
else
{
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "^n" )
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "\wПроголосовало: \w(\r%i/%i\w)^n", CountVoted (), get_playersnum () )
iLen += formatex ( sMenu[iLen], charsmax ( sMenu ) - iLen, "\wОсталось \r%i\w секунд", g_iVoteTime )
}
show_menu ( id, iKeys, sMenu, -1, "Menu_Vote" )
}

public MenuAction_Vote ( id, key )
{
g_iVoted[id] = key + 1
client_cmd ( id, "" )

new iNum, iPlayers[32]
get_players ( iPlayers, iNum, "ch" )
for ( new b; b < iNum; b++ )
MenuDisplay_Vote ( iPlayers[b] )

return PLUGIN_HANDLED
}

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

create_screen_fade ( id, 0, g_iVoteTimeDelay + g_iVoteTime, FFADE_STAYOUT, 0, 0, 0, 255 )
set_pev ( id, pev_velocity, Float:{0.0,0.0,0.0} )
set_pev ( id, pev_flags, pev ( id, pev_flags ) | FL_FROZEN )
set_pev ( id, pev_takedamage, DAMAGE_NO )
engclient_cmd ( id, "weapon_knife" )
}

public plugin_end () { set_cvar_float ( "mp_timelimit", g_fTimelimit ); }

CalculatePercent ( const item )
{
new iTemp = CountVoted ()
if ( !iTemp )
return 0

new Float:fRet = 100.0 * CountVoted ( item ) / iTemp
return floatround ( fRet )
}

CountVoted ( const item = -1 )
{
/*
Если item == -1 значит плагин хочет посчитать сколько
людей вообще проголосовало
*/
new iRet, iNum, i, iPlayers[32]
get_players ( iPlayers, iNum, "ch" )
for ( new b; b < iNum; b++ )
{
i = iPlayers[b]

if ( g_iVoted[i] )
{
if ( item != -1 )
{
if ( item == g_iVoted[i] - 1 )
iRet++
}
else
iRet++
}
}
return iRet
}

stock get_ending ( num, const a[], const b[], const c[], output[], output_len )
{
new iNum100 = num%100, iNum10 = num%10
if ( iNum100 >= 5 && iNum100 <= 20 || iNum10 == 0 || iNum10 >= 5 && iNum10 <= 9 ) formatex ( output, output_len, "%s", c )
else if ( iNum10 == 1 ) formatex ( output, output_len, "%s", a )
else if ( iNum10 >= 2 && iNum10 <= 4 ) formatex ( output, output_len, "%s", b )
}

stock create_screen_fade ( id, duration, holdtime, fade_type, red, green, blue, alpha )
{
message_begin ( MSG_ONE_UNRELIABLE, g_msgScreenFade, .player = id )
write_short ( UNIT_SECOND*duration ) // Duration
write_short ( UNIT_SECOND*holdtime ) // Hold time
write_short ( fade_type ) // Fade type
write_byte ( red ) // Red
write_byte ( green ) // Green
write_byte ( blue ) // Blue
write_byte ( alpha ) // Alpha
message_end ()
}

stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)

replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color

if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}


Установлю и настрою FreshBans, DopBan.
Писать в ЛС.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Avrora
сообщение 23.10.2016, 15:22
Сообщение #4


Стаж: 13 лет
Город: Санкт-Петербург


Сообщений: 806
Благодарностей: 171
Полезность: 95

winzh1,
Спасибо большое, лс напиши
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Danjkeee^
сообщение 23.10.2016, 15:28
Сообщение #5
Стаж: 14 лет
Город: Волгоград

Сообщений: 628
Благодарностей: 215
Полезность: 508

Цитата(Avrora @ 23.10.2016, 16:07) *
Подкину копейку за помощь.

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