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

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

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

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

Round Message w/ VOX v1.3

, Сообщения в чат каждый раунд о раунде, игроках и карте
Статус пользователя noob1985
сообщение 19.6.2015, 19:08
Сообщение #1
Стаж: 11 лет

Сообщений: 69
Благодарностей: 1
Полезность: 15

Всем снова Здравствуйте!

Плагин нашёл на форуме alliedmods
Ошибка следующего содержания. Настроил сервер.cfg и плагин на 30 раундов. Параллельно работает warmup плагин только первый раунд.

1. Дело в том, что "Round Message w/ VOX v1.3" объявляет 1 из 30 раундов и стартует Warmup раунд, а по окончании раунда, снова объявляется 1 из 30. На этом дело не заканчивается.
2. По окончанию 30 раунда, не начиная 31, "Round Message w/ VOX v1.3" объявляет в чат 31 из 30 раундов и карта уходит на рестарт. Ума не приложу как исправить это дело.

Моя идея такова, чтобы в плагине Warmup ставить на паузу плагин "Round Message w/ VOX v1.3" при его первом старте и вконце работы снимать с паузы плагин.
Но таким образом, если и можно решить проблему, то только первую. Как решить вторую проблему понятия не имею...

Прошу знающих людей помощи в редактировании.
Выкладываю код обоих плагинов.

Round Message w/ VOX v1.3
Код:
#include <amxmodx>
#include <amxmisc>

#define VERSION "1.3"


new rounds_elapsed;
new play_sound;
new chat_message;
new g_maxplayers;
new g_map[32]
new say_text;

public plugin_init()
{
/* Register plugin and author */
register_plugin("Vox Round Say", VERSION, "God@Dorin")


/* Register plugin version by cvar */
register_cvar("round_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
set_cvar_string("round_version", VERSION);

/* Register new round events */
register_event("HLTV", "new_round", "a", "1=0", "2=0");
register_event("TextMsg", "restart_round", "a", "2=#Game_will_restart_in");

/* Register language file */
register_dictionary("round_message.txt");

/* Register plugin cvars */
play_sound = register_cvar("amx_playsound","1");
chat_message = register_cvar("amx_chatmessage","1");
g_maxplayers = get_maxplayers();
get_mapname(g_map, 31)

say_text = get_user_msgid("SayText");
}
public new_round()
{
rounds_elapsed += 1;

new p_playernum;
p_playernum = get_playersnum(1);

if(get_pcvar_num(chat_message) == 1)
{
client_printc(0, "%L", 0, "RND_MSG", rounds_elapsed, g_map, p_playernum, g_maxplayers);
}
if(get_pcvar_num(play_sound) == 1)
{
new rndctstr[21]
num_to_word(rounds_elapsed, rndctstr, 30);
client_cmd(0, "spk ^"vox/round %s^"",rndctstr)
}
return PLUGIN_CONTINUE;
}
public restart_round()
{
rounds_elapsed = 0;
}
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1;
vformat(msg, sizeof msg - 1, string, 3);

replace_all(msg,190,"!g","^4");
replace_all(msg,190,"!y","^1");
replace_all(msg,190,"!t","^3");

if(id)
players[0] = id;
else
get_players(players,count,"ch");

new index;
for (new i = 0 ; i < count ; i++)
{
index = players[i];
message_begin(MSG_ONE_UNRELIABLE, say_text,_, index);
write_byte(index);
write_string(msg);
message_end();
}

}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par }
*/

Warmup
Код:
#include <amxmodx>
#include <amxmisc>
#include <dhudmessage>
#include <hamsandwich>
#include <fun>

new Timer, SecondsCvar
new bool:g_knife = true

public plugin_init()
{
register_plugin( "Auto rr" , "1.0", "ill" )

register_event("DeathMsg", "on_death", "a")
register_event( "CurWeapon", "EventCurWeapon", "be", "2!29" )

RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1)

SecondsCvar = register_cvar("auto_rr_time","105")

Timer = get_pcvar_num(SecondsCvar)
set_task(1.0, "start_rr_timer", _, _, _, "a", Timer)
}

public plugin_precache()
{
precache_sound("misc/empty.mp3")
}

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

if(g_knife)
set_user_health(id, 35)
}

public on_death()
{
new victim
victim = read_data(2)

if(g_knife)
set_task(1.0, "fnRevivePlayer", victim)
}

public client_putinserver(id)
{
if(g_knife)
set_task(3.0, "Start_sound", id)
}

public Start_sound(id)
{
if(g_knife)
{
client_cmd(id, "mp3 play sound/misc/empty.mp3")
if(!is_user_alive(id) && (get_user_team(id) == 1 || get_user_team(id) == 2) )
ExecuteHamB(Ham_CS_RoundRespawn, id)
}
}

public fnRevivePlayer(id)
{
if(!is_user_alive(id))
ExecuteHamB(Ham_CS_RoundRespawn, id)
}

public EventCurWeapon(id)
{
if(g_knife)
engclient_cmd(id, "weapon_knife")
}

public start_rr_timer()
{
Timer--

set_dhudmessage(135, 206, 235, -1.0, 0.08, 0, 0.0, 0.01)
show_dhudmessage(0, "WarmUp!^nRestart after %d seconds", Timer)

if(Timer < 1)
{
server_cmd("sv_restartround 1")
set_task(3.0, "rr_end")
client_cmd(0, "mp3 stop");
g_knife = false
}
}

public rr_end()
{
set_dhudmessage( random_num(0, 255), random_num(0, 255), random_num(0, 255), -1.0, 0.78, 2, 6.0, 3.0, 0.1, 1.5, false )
show_dhudmessage(0, "LIVE! LIVE! LIVE!")
}


Добавлю так же что мне нужна Веб морда CSBANS+FRESHBANS, человек который установит и настроит. А так же нужен человек который сможет сделать мне авто ВИП топ 10 игроков со статистикой GameMe. CS 1.6! Ну и не знаю почему, но AntiTeamFlash при первой установке работал, а потом перестал, пинаю на несовместимость плагинов, но в логах всё чисто, поэтому кому-то следует этим заняться. Разумеется не бесплатно. Готов рассчитываться за работу через PayPal или Skrill. Ну и немножечко ещё хотелось бы иметь на сервере хороших плагинов, оптимизировать, совместить, но это после первоочерёдных работ. По этой теме писать только в Skype c пометкой "GameMe".

Отредактировал: noob1985, - 19.6.2015, 19:20
Прикрепленные файлы:
Прикрепленный файл  round_chat_msg.sma ( 2,12 килобайт ) Кол-во скачиваний: 13
Прикрепленный файл  round_message.txt ( 1,26 килобайт ) Кол-во скачиваний: 17
Прикрепленный файл  warmup.sma ( 1,98 килобайт ) Кол-во скачиваний: 7
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя hv5dl3yu
сообщение 19.6.2015, 19:28
Сообщение #2


Стаж: 13 лет

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

1 удалить:
Код:

register_event("TextMsg", "restart_round", "a", "2=#Game_will_restart_in");
public restart_round()
{
   rounds_elapsed = 0;  
}

2 не знаю(а так ты сам настроил на 30)

Отредактировал: hv5dl3yu, - 19.6.2015, 19:37


Цитата(proffi666 @ 9.8.2016, 9:06) [snapback]936063[/snapback]
Зачем мне деньги я купил плагин чтоб он работал! А не для того чтоб он работал, работал, а потом мне деньги возвращали
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя noob1985
сообщение 19.6.2015, 19:45
Сообщение #3
Стаж: 11 лет

Сообщений: 69
Благодарностей: 1
Полезность: 15

Цитата(hv5dl3yu @ 19.6.2015, 19:28) *
1 удалить:
Код:

register_event("TextMsg", "restart_round", "a", "2=#Game_will_restart_in");
public restart_round()
{
   rounds_elapsed = 0;  
}

2 не знаю(а так ты сам настроил на 30)


Простите, так же забыл добавть, что когда раунд проходит без игроков, он так же их считает, но не рестартит через 30 раундов, а когда заходишь и начинается игра, то считаются раунды не с первого, а например с 27 по 57 и потом рестарт.

За первое спасибо, но хотелось бы исправить и второе )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя hv5dl3yu
сообщение 19.6.2015, 20:07
Сообщение #4


Стаж: 13 лет

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

Цитата(noob1985 @ 19.6.2015, 20:45) *
Простите, так же забыл добавть, что когда раунд проходит без игроков, он так же их считает, но не рестартит через 30 раундов, а когда заходишь и начинается игра, то считаются раунды не с первого, а например с 27 по 57 и потом рестарт.

За первое спасибо, но хотелось бы исправить и второе )

Код:
register_logevent("EventGameCommencing", 2, "1=Game_Commencing")
public EventGameCommencing()
{
rounds_elapsed = 1; //мб тут 0
}

Скрытый текст
возможно я тебя не понимаю)))


Цитата(proffi666 @ 9.8.2016, 9:06) [snapback]936063[/snapback]
Зачем мне деньги я купил плагин чтоб он работал! А не для того чтоб он работал, работал, а потом мне деньги возвращали
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя noob1985
сообщение 19.6.2015, 21:17
Сообщение #5
Стаж: 11 лет

Сообщений: 69
Благодарностей: 1
Полезность: 15

register_logevent("EventGameCommencing", 2, "1=Game_Commencing")
public EventGameCommencing()

Вот этого в коде нет... Можете подробней объяснить - мне добавить или изменить? Если да, то где?

Есть такое:

register_event("TextMsg", "restart_round", "a", "2=#Game_will_restart_in");

public restart_round()
{
rounds_elapsed = 0;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя noob1985
сообщение 19.6.2015, 22:01
Сообщение #6
Стаж: 11 лет

Сообщений: 69
Благодарностей: 1
Полезность: 15

Пришло время отписаться. Сделал как посоветовали. Да, второй раз плагин не считает второй раунд за первый, но теперь вместо 31 из 30 в конце 32 из 30...

удалил

Код:
register_event("TextMsg", "restart_round", "a", "2=#Game_will_restart_in");
public restart_round()


и заменил

Код:
{
rounds_elapsed = 0;
}


на

Код:
{
rounds_elapsed = 1;
}


Второй вариант, попробую это тоже удалить и отпишусь....
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя hv5dl3yu
сообщение 19.6.2015, 22:08
Сообщение #7


Стаж: 13 лет

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

Цитата(noob1985 @ 19.6.2015, 22:17) *
register_logevent("EventGameCommencing", 2, "1=Game_Commencing")
public EventGameCommencing()

Вот этого в коде нет... Можете подробней объяснить - мне добавить или изменить? Если да, то где?

Есть такое:

register_event("TextMsg", "restart_round", "a", "2=#Game_will_restart_in");

public restart_round()
{
rounds_elapsed = 0;
}

добавить
Код:

register_logevent("EventGameCommencing", 2, "1=Game_Commencing")
public EventGameCommencing()
{
rounds_elapsed = 1; //если пишет в 1ом раунде что 2й раунд меняй на 0
}

удалить
Код:

register_event("TextMsg", "restart_round", "a", "2=#Game_will_restart_in");
public restart_round()
{
rounds_elapsed = 0;
}


Отредактировал: hv5dl3yu, - 19.6.2015, 22:20


Цитата(proffi666 @ 9.8.2016, 9:06) [snapback]936063[/snapback]
Зачем мне деньги я купил плагин чтоб он работал! А не для того чтоб он работал, работал, а потом мне деньги возвращали
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя noob1985
сообщение 19.6.2015, 22:40
Сообщение #8
Стаж: 11 лет

Сообщений: 69
Благодарностей: 1
Полезность: 15

Если всё сделал правильно, то теперь не компилируется, ошибки. Ты бы мог за меня правильно код по местам прописать?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя hv5dl3yu
сообщение 19.6.2015, 22:44
Сообщение #9


Стаж: 13 лет

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

Цитата(noob1985 @ 19.6.2015, 23:40) *
Если всё сделал правильно, то теперь не компилируется, ошибки. Ты бы мог за меня правильно код по местам прописать?

Скрытый текст

Код:

#include <amxmodx>
#include <amxmisc>

#define VERSION "1.3"


new rounds_elapsed;
new play_sound;
new chat_message;
new g_maxplayers;
new g_map[32]
new say_text;

public plugin_init()
{
/* Register plugin and author */
register_plugin("Vox Round Say", VERSION, "God@Dorin")


/* Register plugin version by cvar */
register_cvar("round_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
set_cvar_string("round_version", VERSION);

/* Register new round events */
register_event("HLTV", "new_round", "a", "1=0", "2=0");
register_logevent("EventGameCommencing", 2, "1=Game_Commencing");

/* Register language file */
register_dictionary("round_message.txt");

/* Register plugin cvars */
play_sound = register_cvar("amx_playsound","1");
chat_message = register_cvar("amx_chatmessage","1");
g_maxplayers = get_maxplayers();
get_mapname(g_map, 31)

say_text = get_user_msgid("SayText");
}
public new_round()
{
rounds_elapsed += 1;

new p_playernum;
p_playernum = get_playersnum(1);

if(get_pcvar_num(chat_message) == 1)
{
client_printc(0, "%L", 0, "RND_MSG", rounds_elapsed, g_map, p_playernum, g_maxplayers);
}
if(get_pcvar_num(play_sound) == 1)
{
new rndctstr[21]
num_to_word(rounds_elapsed, rndctstr, 30);
client_cmd(0, "spk ^"vox/round %s^"",rndctstr)
}
return PLUGIN_CONTINUE;
}
public EventGameCommencing()
{
rounds_elapsed = 1; //если пишет в 1ом раунде что 2й раунд меняй на 0
}
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1;
vformat(msg, sizeof msg - 1, string, 3);

replace_all(msg,190,"!g","^4");
replace_all(msg,190,"!y","^1");
replace_all(msg,190,"!t","^3");

if(id)
players[0] = id;
else
get_players(players,count,"ch");

new index;
for (new i = 0 ; i < count ; i++)
{
index = players[i];
message_begin(MSG_ONE_UNRELIABLE, say_text,_, index);
write_byte(index);
write_string(msg);
message_end();
}

}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1048\\ f0\\ fs16 \n\\ par }
*/



Цитата(proffi666 @ 9.8.2016, 9:06) [snapback]936063[/snapback]
Зачем мне деньги я купил плагин чтоб он работал! А не для того чтоб он работал, работал, а потом мне деньги возвращали
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя noob1985
сообщение 19.6.2015, 23:22
Сообщение #10
Стаж: 11 лет

Сообщений: 69
Благодарностей: 1
Полезность: 15

Во первых спасибо! Да, пришлось поменять на 0. И результат:

Прошла разминка, так как мы респимся, то конца раунда не было, разминка закончилась. Сообщение в чат: раунд 2 из 30, а в таблице 0:0 по счетам.
То есть в след раунде будет уже 3 из 30 а фактически будет 2 из 30, таким образом получим к концу игры 32 из 30...

Скажи, а нельзя ли как-то в коде реализовать паузу плагина раундов? Например при старте разминки паузу, а при окончании старт.
Так как разминка бывает так проходит, когда одна из команд захватит базу противника и перережет всех, то раунд закончится и команды появятся на своих спавнах. Так может быть и 2 раунда подряд.
Ну и в таблице счёта будет неверная информация. Так как разминка не должна приниматься за раунды. Это время не должно учитываться. Отсчёт должен начинаться с первого оружейного раунда. И в таблице и в плагине.

Это можно реализовать в одном или другом плагине?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя hv5dl3yu
сообщение 20.6.2015, 8:05
Сообщение #11


Стаж: 13 лет

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

Цитата(noob1985 @ 20.6.2015, 0:22) *
Во первых спасибо! Да, пришлось поменять на 0. И результат:

Прошла разминка, так как мы респимся, то конца раунда не было, разминка закончилась. Сообщение в чат: раунд 2 из 30, а в таблице 0:0 по счетам.
То есть в след раунде будет уже 3 из 30 а фактически будет 2 из 30, таким образом получим к концу игры 32 из 30...

Скажи, а нельзя ли как-то в коде реализовать паузу плагина раундов? Например при старте разминки паузу, а при окончании старт.
Так как разминка бывает так проходит, когда одна из команд захватит базу противника и перережет всех, то раунд закончится и команды появятся на своих спавнах. Так может быть и 2 раунда подряд.
Ну и в таблице счёта будет неверная информация. Так как разминка не должна приниматься за раунды. Это время не должно учитываться. Отсчёт должен начинаться с первого оружейного раунда. И в таблице и в плагине.

Это можно реализовать в одном или другом плагине?

вот сделал

Отредактировал: hv5dl3yu, - 20.6.2015, 8:11


Цитата(proffi666 @ 9.8.2016, 9:06) [snapback]936063[/snapback]
Зачем мне деньги я купил плагин чтоб он работал! А не для того чтоб он работал, работал, а потом мне деньги возвращали
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя noob1985
сообщение 20.6.2015, 20:24
Сообщение #12
Стаж: 11 лет

Сообщений: 69
Благодарностей: 1
Полезность: 15

Цитата(hv5dl3yu @ 20.6.2015, 8:05) *
вот сделал


Спасибо ОГРОМНОЕ! Протестировал, разминка прохрдит на ура! Раунды отсчитываются правильно!
Но вот когда заканчивается 30 раундов и объявляется какая команда выйграла, то через неск сек объявляется 31 из 30 раундов начался и карта уходит на рестарт.
Возможно как-то можно по окончанию посл раунда остановить эту функцию? Сама карта иногда ожидает смены секунд 15-20, подозреваю что через amx_map de_dust2_2x2 она бы менялась моментально?

ЗЫ. Возможно ли в разминочном плагине сделать респ игроков рандомный?

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