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

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

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

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

не пашет проверка времени

Статус пользователя corefir
сообщение 26.2.2015, 0:24
Сообщение #1


Стаж: 14 лет

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

Код
pcv_mapname = de_dust2


Код:
public Startround(id){

new Hours[3], HourWork[11] = {23, 00, 1 ,2, 3, 4, 5, 6, 7, 8, 9};
get_time("%H", Hours, sizeof(Hours)-1);
for(new i = 0; i <= 11; i++)
{
new current_map[ 32 ];
get_mapname( current_map, 31 );
new map_name[ 32 ];
get_pcvar_string( pcv_mapname, map_name, 31 );
if( str_to_num(Hours) == HourWork[i] && !equal( current_map, map_name )) server_cmd("amx_map de_dust2");
}

}


Зарегистрировал начало раунда. Если текущее время (см массив) то начать выполнять цикл: Каждый раз после окончания freezetime идет проверка названия карты. Если не de_dust2 , то поставить даст2.

Плагин работает следующим образом:
Какую бы я карту не поставил (кроме даст2) - после окончания фриза карта меняется на даст2.

Подскажите, как подправить код.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 26.2.2015, 0:40
Сообщение #2
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

А зачем 11 раз получать название карты? huh.gif
Ошибки не вижу, но так плагин будет работать на порядок оптимальнее
Код:
public Startround(id){

new current_map[ 32 ];
get_mapname( current_map, 31 );
new map_name[ 32 ];
get_pcvar_string( pcv_mapname, map_name, 31 );
if(equal( current_map, map_name ))
{
return PLUGIN_HANDLED
}

new Hours[3], HourWork[11] = {23, 00, 1 ,2, 3, 4, 5, 6, 7, 8, 9};
get_time("%H", Hours, sizeof(Hours)-1);
for(new i = 0; i <= 11; i++)
{
if( str_to_num(Hours) == HourWork[i] )
{
server_cmd("amx_map de_dust2")
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя corefir
сообщение 26.2.2015, 0:44
Сообщение #3


Стаж: 14 лет

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

Цитата(voed @ 26.2.2015, 0:40) *
А зачем 11 раз получать название карты? huh.gif
Ошибки не вижу, но так плагин будет работать на порядок оптимальнее
Код:
public Startround(id){

new current_map[ 32 ];
get_mapname( current_map, 31 );
new map_name[ 32 ];
get_pcvar_string( pcv_mapname, map_name, 31 );
if(equal( current_map, map_name ))
{
return PLUGIN_HANDLED
}

new Hours[3], HourWork[11] = {23, 00, 1 ,2, 3, 4, 5, 6, 7, 8, 9};
get_time("%H", Hours, sizeof(Hours)-1);
for(new i = 0; i <= 11; i++)
{
if( str_to_num(Hours) == HourWork[i] )
{
server_cmd("amx_map de_dust2")
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}

Вы добавили continue, зачем?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 26.2.2015, 0:48
Сообщение #4
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(corefir @ 26.2.2015, 0:44) *
Вы добавили continue, зачем?

На всякий случай smile.gif
Хуже от этого не будет, а так просто привычка
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя corefir
сообщение 26.2.2015, 10:48
Сообщение #5


Стаж: 14 лет

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

Цитата(voed @ 26.2.2015, 0:48) *
На всякий случай smile.gif
Хуже от этого не будет, а так просто привычка


работает. А вот еще аналогичный вопрос.

Код:
public Command_RTV(id)
{
new Hours[3], HourWork[11] = {23, 00, 1, 2, 3, 4, 5, 6, 7, 8, 9};
get_time("%H", Hours, sizeof(Hours)-1);
for(new i = 0; i <= 11; i++)
{
if(str_to_num(Hours) == HourWork[i]) return PLUGIN_HANDLED;

}

if(g_bVoteFinished || g_bBeInVote) return PLUGIN_HANDLED;

if(!get_pcvar_num(g_pRockEnable)) return PLUGIN_CONTINUE;

if(get_timeleft() / 60 < get_pcvar_num(g_pRockEndBlock))
{
client_print_color(id, DontChange, "^4%s^1 Слишком поздно для досрочного голосования.", PREFIX);
return PLUGIN_HANDLED;
}

new iTime = get_systime();
if(iTime - g_iStartPlugin < get_pcvar_num(g_pRockDelay) * 60)
{
new iMin = 1 + (get_pcvar_num(g_pRockDelay) * 60 - (iTime - g_iStartPlugin)) / 60;
new szMin[16]; get_ending(iMin, "минут", "минута", "минуты", szMin, charsmax(szMin));

client_print_color(id, DontChange, "^4%s^1 Вы не можете голосовать за досрочную смену карты. Осталось:^3 %d^1 %s.", PREFIX, iMin, szMin);
return PLUGIN_HANDLED;
}

if(!g_bRockVoted[id])
{
g_bRockVoted[id] = true;
g_iRockVote++;

new iVote = floatround(get_players_num() * get_pcvar_num(g_pRockPercent) / 100.0, floatround_ceil) - g_iRockVote;

if(iVote > 0)
{
new szVote[16]; get_ending(iVote, "голосов", "голос", "голоса", szVote, charsmax(szVote));

switch(get_pcvar_num(g_pRockShow))
{
case 0:
{
new szName[33];
get_user_name(id, szName, charsmax(szName));
client_print_color(0, DontChange, "^4%s^3 %s^1 проголосовал за смену карты. Осталось:^3 %d^1 %s.", PREFIX, szName, iVote, szVote);
}
case 1: client_print_color(id, DontChange, "^4%s^1 Ваш голос учтен. Осталось:^3 %d^1 %s.", PREFIX, iVote, szVote);
}
}
else
{
g_bRockVote = true;
StartVote(0);
client_print_color(0, DontChange, "^4%s^1 Начинаем досрочное голосование.", PREFIX);
}
}
else
{
new iVote = floatround(get_players_num() * get_pcvar_num(g_pRockPercent) / 100.0, floatround_ceil) - g_iRockVote;
new szVote[16]; get_ending(iVote, "голосов", "голос", "голоса", szVote, charsmax(szVote));
client_print_color(id, DontChange, "^4%s^1 Вы уже голосовали. Осталось:^3 %d^1 %s.", PREFIX, iVote, szVote);
}

return PLUGIN_HANDLED;

//end time check
}


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