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

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

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

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

2 страниц V   1 2

Постоянное отображение client_print и таймер

Статус пользователя Serj
сообщение 31.3.2014, 10:55
Сообщение #1


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

Приветствую. Появилась необходимость реализовать постоянный client_print(0,print_center..., который возникает после определенного события и исчезает после смены карты. Также в другом клиент_принт необходимо реализовать отчет времени в сек. В инете толком инфы ни по первому случаю, ни по второму не нашел. Как сие можно реализовать? Заранее благодарен.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 31.3.2014, 11:49
Сообщение #2


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

не ври
куча информации
для этого есть set_task
http://amxxmodx.ru/core/amxmodxinc/70-set_...moe-vremya.html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя admin4ik
сообщение 31.3.2014, 12:42
Сообщение #3
Стаж: 12 лет

Сообщений: 68
Благодарностей: 13
Полезность: 119

мб StatusText?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 12:49
Сообщение #4


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

Legenda, да не вру, ибо не знал, как это реализовывается и искал готовые решения. За инфу спасибо. Когда-то читал эту статейку, но забыл о ней.
admin4ik, это плагин, как я понимаю? Если да, то это не совсем то, что мне нужно.


С таймером, вроде, разобрался. Каким образом можно организовать постоянное отображение?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 31.3.2014, 12:56
Сообщение #5


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

Стаж: 13 лет

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

Цитата(Serj @ 31.3.2014, 12:49) *
Legenda, да не вру, ибо не знал, как это реализовывается и искал готовые решения. За инфу спасибо. Когда-то читал эту статейку, но забыл о ней.
admin4ik, это плагин, как я понимаю? Если да, то это не совсем то, что мне нужно.


С таймером, вроде, разобрался. Каким образом можно организовать постоянное отображение?


чтобы все время в чате висело и не пропадало? никак
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 13:00
Сообщение #6


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

GOOD FELLOW, т.е. единственный вариант - перерисовывать таском?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GOOD FELLOW
сообщение 31.3.2014, 13:01
Сообщение #7


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

Стаж: 13 лет

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

Цитата(Serj @ 31.3.2014, 13:00) *
GOOD FELLOW, т.е. единственный вариант - перерисовывать таском?


выводить таском либо в HUD
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя admin4ik
сообщение 31.3.2014, 13:11
Сообщение #8
Стаж: 12 лет

Сообщений: 68
Благодарностей: 13
Полезность: 119

Цитата(Serj @ 31.3.2014, 13:49) *
admin4ik, это плагин, как я понимаю? Если да, то это не совсем то, что мне нужно.

Это не плагин
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 14:12
Сообщение #9


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

Что-то лыжи не едут -_-
В событии, которое должно запускать таймер, вызываю changetimer()

Код:
public changetimer()
{
counter = 10
set_task(1.0, "timer", _, _, _, "d")
}

public timer()
{
counter--
client_print(0,print_center,"Смена карты на %s произойдет через %d секунд", MAP, counter)
if (counter == 0)
change_map()
}


Но ни client_print, ни change_map в итоге не отрабатывают. Пните в нужную сторону, пож.

Отредактировал: Serj, - 31.3.2014, 14:13
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 31.3.2014, 14:18
Сообщение #10


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

ну так смотри где вызывается changetimer
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 14:21
Сообщение #11


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

Legenda, так в том и дело, что если там вместо changetimer вызвать change_map, то карта меняется, т.е. там все корректно, вроде как. Но вот с таймером какая-то беда.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 31.3.2014, 14:29
Сообщение #12
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Serj,
Код:
public changetimer()
{
counter = 10
set_task(1.0, "timer", _, _, _, "d")
}

public timer()
{
counter--
client_print(0,print_center,"Смена карты на %s произойдет через %d секунд", MAP, counter)
if (counter == 0)
change_map()
else
set_task(1.0, "timer", _, _, _, "d")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 14:57
Сообщение #13


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

proff_q, не пашет все-таки. Ладно, придется без таймера обходиться.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 31.3.2014, 16:10
Сообщение #14


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(Serj @ 31.3.2014, 16:57) *
proff_q, не пашет все-таки. Ладно, придется без таймера обходиться.

Код
set_task(1.0, "timer", _, _, _, "b")

зачем d ставить?
очевидно не умеешь использовать флаг d
ставь b
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 16:39
Сообщение #15


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

Legenda, благодарю, таймер заработал.
Чтобы ради мелочи не создавать тему, спрошу здесь же. Имеется сток
Код:

new max_players
public plugin_init()
{
max_players = get_maxplayers()
}
stock is_admin_imm()
{
for(new id = 1; id <= max_players; id ++)
{
if(get_user_flags(id) & ADMIN_IMMUNITY)
{
return 1
}
}

return 0
}


Запускаю сервер, на сервере нет админов, is_admin_imm возвращает 0 - отрабатывает норм. Захожу с иммунитетом - возвращает 1, что тоже норм. Выхожу с сервера, на сервере игроков нет, но функция продолжает возвращать 1. Что это за магия? Это, в принципе, последний косяк, который у меня отказывается норм работать.

Отредактировал: Serj, - 31.3.2014, 16:40
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 31.3.2014, 16:43
Сообщение #16
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

Го без гкода:
Код:
stock is_admin_imm()
{
new players[32],pnum
get_players(players,pnum)

for(new i ; i < pnum ; ++i){
if(get_user_flags(players[i]) & ADMIN_IMMUNITY)
return 1
}

return 0
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 16:52
Сообщение #17


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

serfreeman1337, спасибо, но ситуация такая же, как и с моим кодом.

Отредактировал: Serj, - 31.3.2014, 16:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 31.3.2014, 16:54
Сообщение #18


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

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(Serj @ 31.3.2014, 18:39) *
Legenda, благодарю, таймер заработал.
Чтобы ради мелочи не создавать тему, спрошу здесь же. Имеется сток
Код:

new max_players
public plugin_init()
{
max_players = get_maxplayers()
}
stock is_admin_imm()
{
for(new id = 1; id <= max_players; id ++)
{
if(get_user_flags(id) & ADMIN_IMMUNITY)
{
return 1
}
}

return 0
}


Запускаю сервер, на сервере нет админов, is_admin_imm возвращает 0 - отрабатывает норм. Захожу с иммунитетом - возвращает 1, что тоже норм. Выхожу с сервера, на сервере игроков нет, но функция продолжает возвращать 1. Что это за магия? Это, в принципе, последний косяк, который у меня отказывается норм работать.

я бы такой код назвал извращением, причем полным
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Serj
сообщение 31.3.2014, 16:58
Сообщение #19


Стаж: 15 лет

Сообщений: 855
Благодарностей: 266
Полезность: 198

Legenda, ну, в скриптинге я не силен, как ты уже догадался. Решил домучать плагин, который когда-то начинал писать.
Весь код мне показывать стыдно, но вот отрывки, в которых чекается админ
Код:
public plugin_init()
{
set_task(10.0, "chkplayers", _, _, _, "b")
}
public chkplayers()
{
new mp_timelimit = get_cvar_num("mp_timelimit")
if (!is_admin_imm())
{
if ((get_playersnum() >= TIMELIMIT_MAXP) && (mp_timelimit == 0))
{
server_cmd("mp_timelimit %d", TIMELIMIT)
}
if ((get_playersnum() <= TIMELIMIT_MINP) && (mwp_timelimit != 0))
{
server_cmd("mp_timelimit 0")
}
}
}


Ну и дальше тот сток, который выкладывал выше. Таки проблема есть -_-
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
serfreeman1337
сообщение 31.3.2014, 17:03
Сообщение #20
Стаж: 13 лет

Сообщений: 912
Благодарности: выкл.

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