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

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

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

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

Добавить отсчет времени

Статус пользователя starter
сообщение 3.4.2015, 16:21
Сообщение #1
Стаж: 11 лет

Сообщений: 43
Благодарностей: 6
Полезность: 7

Всем привет! Помогите, пожалуйста, добавить отсчет времени в этот плагин!
Когда остается 10 секунд, то у игроков проигрывался звук: 10, 9, 8... в зависимости от того, сколько времени осталось. Искал сам - ничего не нашел.
Вот плагин:

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta_util>
#include <dhudmessage>

#define PLUGIN "Restart"
#define VERSION "3.0"
#define AUTHOR "kyroaku"

#define SPRAWDZ 3431
#define prefix " "

new Odliczanie[33]
new rr_czas
new bool:noze = false

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("TextMsg","nozowka","a","2&#Game_C")
rr_czas = register_cvar("rr_czas","60")
register_event("CurWeapon","switchweapon","be","1=1","2!29")
register_event("DeathMsg","death_msg","a")
}

public nozowka(id)
{
set_task(1.0, "Start")
}

public Start(id)
{
switchweapon(id)
noze = true
Odliczanie[id] = get_pcvar_num(rr_czas);
server_cmd("sv_gravity 450")
if(task_exists(id + SPRAWDZ))
{
remove_task( id + SPRAWDZ )
}
set_task( 1.0, "Koniec", id + SPRAWDZ, _, _, "b" )
return PLUGIN_CONTINUE
}

public Koniec(task_id)
{
new id = task_id - SPRAWDZ
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.25, 0, 0.0, 1.1, 0.0, 0.0)
show_dhudmessage( id, "%s Авторестарт через %d секунд!", prefix, Odliczanie[id] )
Odliczanie[id] -= 1
if(Odliczanie[id] <= 0)
{
if( task_exists(task_id) )
{
remove_task( task_id )
}
set_cvar_num("sv_restart", 2);
server_cmd("sv_gravity 800")
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.85, 1, 6.0, 2.0, 0.1, 0.1)
show_dhudmessage( id, "%s Всем удачной игры ^nи хорошего настроения:)!", prefix);
noze = false
}
}

public switchweapon(id)
{
if (!noze)
return PLUGIN_CONTINUE
engclient_cmd(id,"weapon_knife")
return PLUGIN_CONTINUE
}

public death_msg()
{
if(!noze)
return
new id = read_data(2)
set_task(1.0,"respawn_player",id)
}

public respawn_player(id)
{
if(is_user_connected(id))
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя starter
сообщение 3.4.2015, 16:58
Сообщение #2
Стаж: 11 лет

Сообщений: 43
Благодарностей: 6
Полезность: 7

...
Попробовал сделать сам. Ничего не вышло. Исправьте, пожалуйста. Пытался сделать голосовой отсчет, пример взял из этого плагина

Код:
/* Plugin generated by AMXX-Studio */


#include <amxmodx>

#define PLUGIN "Auto Restart vl"
#define VERSION "1.4"
#define AUTHOR "vato loco [GE-S]"

#define TIMER_TASK 123456
#define RESTART_TASK 789123

new g_counter

new g_autorestart
new g_autoenabled
new g_autocds
new g_autocount_color
new g_autostart_color
new g_auto_xypos

new g_SyncGameStart
new g_SyncRestartTimer

new bool:g_bRoundStart

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

register_logevent("RoundStart", 2, "1=Round_Start")
register_event("TextMsg","RestartTask","a","2&#Game_C")

register_dictionary("auto_restart_vl.txt")

g_autoenabled = register_cvar("amx_autorr_enable","1")
g_autocds = register_cvar("amx_autorr_cds","1")
g_autorestart = register_cvar("amx_autorr_time","40")
g_autocount_color = register_cvar("amx_autorr_count_color","0 255 0")
g_autostart_color = register_cvar("amx_autorr_start_color","0 255 255")
g_auto_xypos = register_cvar("amx_autorr_xypos","-1.0 0.25")

g_SyncGameStart = CreateHudSyncObj()
g_SyncRestartTimer = CreateHudSyncObj()
}

public RoundStart()
{
if(!get_pcvar_num(g_autoenabled))
return PLUGIN_HANDLED

if(g_bRoundStart)
{
static r, g, b, Float:x, Float:y
HudMsgPos(x,y)
HudMsgColor(g_autostart_color, r, g, b)

set_hudmessage( r, g, b, x, y, 1, 5.0, 8.0, 0.0, 0.0, -1)
ShowSyncHudMsg( 0, g_SyncGameStart, "%L",LANG_PLAYER, "GAME_STARTED")
}
g_bRoundStart = false

return PLUGIN_CONTINUE
}

public RestartTask()
{
if(!get_pcvar_num(g_autoenabled))
return PLUGIN_HANDLED

set_task(1.0,"TimeCounter",TIMER_TASK,_,_,"a",get_pcvar_num(g_autorestart))
set_task(get_pcvar_float(g_autorestart),"RestartRound",RESTART_TASK)

return PLUGIN_CONTINUE
}

public TimeCounter()
{
g_counter++

new Float:iRestartTime = get_pcvar_float(g_autorestart) - g_counter
new Float:fSec
fSec = iRestartTime

static r, g, b, Float:x, Float:y
HudMsgPos(x,y)
HudMsgColor(g_autocount_color, r, g, b)

set_hudmessage( r, g, b, x, y, 0, 0.0, 1.0, 0.0, 0.0, -1)
ShowSyncHudMsg( 0, g_SyncRestartTimer, "%L",LANG_PLAYER, "AUTO_RESTART", floatround(fSec))

if(get_pcvar_num(g_autocds) && get_pcvar_num(g_autorestart) - g_counter < 11 && get_pcvar_num(g_autorestart) - g_counter !=0)
{
static szNum[32]
num_to_word(get_pcvar_num(g_autorestart) - g_counter, szNum, 31)
client_cmd(0,"speak ^"vox/%s^"", szNum)
}
if(g_counter == get_pcvar_num(g_autorestart))
{
g_bRoundStart = true
g_counter = 0
}
}

public RestartRound()
{
server_cmd("sv_restartround 1")
}

public HudMsgColor(cvar, &r, &g, &b)
{
static color[16], piece[5]
get_pcvar_string(cvar, color, 15)

strbreak( color, piece, 4, color, 15)
r = str_to_num(piece)

strbreak( color, piece, 4, color, 15)
g = str_to_num(piece)
b = str_to_num(color)
}

public HudMsgPos(&Float:x, &Float:y)
{
static coords[16], piece[10]
get_pcvar_string(g_auto_xypos , coords, 15)

strbreak(coords, piece, 9, coords, 15)
x = str_to_float(piece)
y = str_to_float(coords)
}





У меня получилось вот что:

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta_util>
#include <dhudmessage>

#define PLUGIN "Restart"
#define VERSION "3.0"
#define AUTHOR "kyroaku"

#define SPRAWDZ 3431
#define prefix " "

new Odliczanie[33]
new rr_czas
new bool:noze = false
new g_autocds
new g_counter

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("TextMsg","nozowka","a","2&#Game_C")
rr_czas = register_cvar("rr_czas","60")
register_event("CurWeapon","switchweapon","be","1=1","2!29")
register_event("DeathMsg","death_msg","a")
g_autocds = register_cvar("amx_autorr_cds","1")
}

public nozowka(id)
{
set_task(1.0, "Start")
}

public Start(id)
{
switchweapon(id)
noze = true
Odliczanie[id] = get_pcvar_num(rr_czas);
server_cmd("sv_gravity 450")
if(task_exists(id + SPRAWDZ))
{
remove_task( id + SPRAWDZ )
}
set_task( 1.0, "Koniec", id + SPRAWDZ, _, _, "b" )
return PLUGIN_CONTINUE
}

public Koniec(task_id)
{
new id = task_id - SPRAWDZ
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.25, 0, 0.0, 1.1, 0.0, 0.0)
show_dhudmessage( id, "%s Авторестарт через %d секунд!", prefix, Odliczanie[id] )
Odliczanie[id] -= 1
if(Odliczanie[id] <= 0)
{
if( task_exists(task_id) )
{
remove_task( task_id )
}
set_cvar_num("sv_restart", 2);
server_cmd("sv_gravity 800")
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.85, 1, 6.0, 2.0, 0.1, 0.1)
show_dhudmessage( id, "%s Всем удачной игры ^nи хорошего настроения:)!", prefix);
noze = false

if(get_pcvar_num(g_autocds) && get_pcvar_num(rr_czas) - g_counter < 11 && get_pcvar_num(rr_czas) - g_counter !=0)
{
static szNum[32]
num_to_word(get_pcvar_num(rr_czas) - g_counter, szNum, 31)
client_cmd(0,"speak ^"vox/%s^"", szNum)
}
if(g_counter == get_pcvar_num(rr_czas))
{
noze = true
g_counter = 0
}
}
}


public switchweapon(id)
{
if (!noze)
return PLUGIN_CONTINUE
engclient_cmd(id,"weapon_knife")
return PLUGIN_CONTINUE
}

public death_msg()
{
if(!noze)
return
new id = read_data(2)
set_task(1.0,"respawn_player",id)
}

public respawn_player(id)
{
if(is_user_connected(id))
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя starter
сообщение 3.4.2015, 17:16
Сообщение #3
Стаж: 11 лет

Сообщений: 43
Благодарностей: 6
Полезность: 7

Поможет кто-нибудь...?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 3.4.2015, 17:22
Сообщение #4
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

Протестировано.

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta_util>
#include <dhudmessage>

#define PLUGIN "Restart"
#define VERSION "3.0"
#define AUTHOR "kyroaku"

#define SPRAWDZ 3431
#define prefix " "

new Odliczanie[33]
new rr_czas
new bool:noze = false

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("TextMsg","nozowka","a","2&#Game_C")
rr_czas = register_cvar("rr_czas","60")
register_event("CurWeapon","switchweapon","be","1=1","2!29")
register_event("DeathMsg","death_msg","a")
}

public nozowka(id)
{
set_task(1.0, "Start")
}

public Start(id)
{
switchweapon(id)
noze = true
Odliczanie[id] = get_pcvar_num(rr_czas);
server_cmd("sv_gravity 450")
if(task_exists(id + SPRAWDZ))
{
remove_task( id + SPRAWDZ )
}
set_task( 1.0, "Koniec", id + SPRAWDZ, _, _, "b" )
return PLUGIN_CONTINUE
}

public Koniec(task_id)
{
static buffer[32];

new id = task_id - SPRAWDZ
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.25, 0, 0.0, 1.1, 0.0, 0.0)
show_dhudmessage( id, "%s Авторестарт через %d секунд!", prefix, Odliczanie[id] )

if (1 <= Odliczanie[id] <= 10) {
num_to_word(Odliczanie[id], buffer, charsmax(buffer));
client_cmd(id, "spk ^"vox/%s^"", buffer);
}

Odliczanie[id] -= 1
if(Odliczanie[id] <= 0)
{
if( task_exists(task_id) )
{
remove_task( task_id )
}
set_cvar_num("sv_restart", 2);
server_cmd("sv_gravity 800")
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.85, 1, 6.0, 2.0, 0.1, 0.1)
show_dhudmessage( id, "%s Всем удачной игры ^nи хорошего настроения:)!", prefix);
noze = false
}
}

public switchweapon(id)
{
if (!noze)
return PLUGIN_CONTINUE
engclient_cmd(id,"weapon_knife")
return PLUGIN_CONTINUE
}

public death_msg()
{
if(!noze)
return
new id = read_data(2)
set_task(1.0,"respawn_player",id)
}

public respawn_player(id)
{
if(is_user_connected(id))
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя starter
сообщение 3.4.2015, 17:29
Сообщение #5
Стаж: 11 лет

Сообщений: 43
Благодарностей: 6
Полезность: 7

Radius, Спасибки пока не могу ставить, но спасибо. А как сделать, чтобы загруженные были звуки?
Через

Код:
public plugin_precache()
{
precache_sound("rr/1.wav")
precache_sound("rr/2.wav")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 3.4.2015, 17:39
Сообщение #6
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

Не тестировалось. Имена звуковых файлов указываются в строке 17.

Код:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta_util>
#include <dhudmessage>

#define PLUGIN "Restart"
#define VERSION "3.0"
#define AUTHOR "kyroaku"

#define SPRAWDZ 3431
#define prefix " "

new Odliczanie[33]
new rr_czas
new bool:noze = false

new const timer_sound[][] = { // звуки
"rr/0.wav",
"rr/1.wav",
"rr/2.wav",
"rr/3.wav",
"rr/4.wav",
"rr/5.wav",
"rr/6.wav",
"rr/7.wav",
"rr/8.wav",
"rr/9.wav",
"rr/10.wav"
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("TextMsg","nozowka","a","2&#Game_C")
rr_czas = register_cvar("rr_czas","60")
register_event("CurWeapon","switchweapon","be","1=1","2!29")
register_event("DeathMsg","death_msg","a")
}

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

public nozowka(id)
{
set_task(1.0, "Start")
}

public Start(id)
{
switchweapon(id)
noze = true
Odliczanie[id] = get_pcvar_num(rr_czas);
server_cmd("sv_gravity 450")
if(task_exists(id + SPRAWDZ))
{
remove_task( id + SPRAWDZ )
}
set_task( 1.0, "Koniec", id + SPRAWDZ, _, _, "b" )
return PLUGIN_CONTINUE
}

public Koniec(task_id)
{
new id = task_id - SPRAWDZ
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.25, 0, 0.0, 1.1, 0.0, 0.0)
show_dhudmessage( id, "%s Авторестарт через %d секунд!", prefix, Odliczanie[id] )

if (1 <= Odliczanie[id] <= 10) {
//static buffer[32];
//num_to_word(Odliczanie[id], buffer, charsmax(buffer));
//client_cmd(id, "spk ^"vox/%s^"", buffer);
client_cmd(id, "spk ^"%s^"", timer_sound[Odliczanie[id]]);
}

Odliczanie[id] -= 1
if(Odliczanie[id] <= 0)
{
if( task_exists(task_id) )
{
remove_task( task_id )
}
set_cvar_num("sv_restart", 2);
server_cmd("sv_gravity 800")
set_dhudmessage(random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.85, 1, 6.0, 2.0, 0.1, 0.1)
show_dhudmessage( id, "%s Всем удачной игры ^nи хорошего настроения:)!", prefix);
noze = false
}
}

public switchweapon(id)
{
if (!noze)
return PLUGIN_CONTINUE
engclient_cmd(id,"weapon_knife")
return PLUGIN_CONTINUE
}

public death_msg()
{
if(!noze)
return
new id = read_data(2)
set_task(1.0,"respawn_player",id)
}

public respawn_player(id)
{
if(is_user_connected(id))
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя starter
сообщение 3.4.2015, 17:52
Сообщение #7
Стаж: 11 лет

Сообщений: 43
Благодарностей: 6
Полезность: 7

Спасибо большое, все работает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 3.4.2015, 22:33
Сообщение #8


Иконка группы

Стаж: 13 лет

Сообщений: 2294
Благодарностей: 1187
Полезность: 890

i
Уведомление:
Тему почистил. Если будут еще посты, которые не относятся к топику --> буду выдавать %
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: