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

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

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

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

Выполнить комманды в консоли сервера из списка

, В промежутках времени
Статус пользователя Slackerok
сообщение 14.4.2013, 10:58
Сообщение #1
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Здравствуйте, хотелось бы плагин который в промежутки времени ( например каждый 60 секунд ) будет выполнять по очереди в консоли сервера команды заданные в файле, ну или можно сразу в плагине записать все команды. Помогите информацией по этому поводу пожалуйста) Заранее спасибо и желаю всем хорошо провести день! Нашел на одном форуме экземпляр, но он немножко по другому написан:

Код
#include <amxmodx>
#include <amxmisc>

#define PLUGIN "Server Command"
#define VERSION "1.0"
#define AUTHOR "Admin"

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

    register_concmd("my_cmd","srv_cmd")
    register_concmd("timelimit_cmd","srv_cmd_time")

}
public srv_cmd(){
    
    server_cmd("echo The maxplayers on this server is: %d",get_maxplayers())
}

public srv_cmd_time(){
    
    server_cmd("mp_timelimit")
    server_cmd("echo mp_timelimit 92")
    server_cmd("mp_timelimit")
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Nickk
сообщение 14.4.2013, 11:11
Сообщение #2
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Т.е. есть несколько команд, нужно их по очереди запускать через промежуток времени?
Вот, должно работать.
Тут меняйте частоту ( т.е. если стоит минута, каждую минуту будет вып. задание)
Код
#define DELAY 60.0

Скрытый текст
Код
#include <amxmodx>

#define DELAY 60.0

public plugin_init()
    set_task(10.0, "start")

public start()
{
    set_task(DELAY, "first")
    set_task(DELAY * 2, "second")
    set_task(DELAY * 3, "third")
}

public first()
    server_cmd("mp_timelimit")
    
public second()
    server_cmd("echo mp_timelimit 92")
    
public third()
    server_cmd("echo bla-bla")


Отредактировал: Nickk, - 14.4.2013, 11:26
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 11:31
Сообщение #3
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Nickk, Спасибо огромное! Можно добавить неограниченное число комманд?

Код
#include <amxmodx>

#define DELAY 60.0

public plugin_init()
    set_task(10.0, "start")

public start()
{
    set_task(DELAY, "one")
    set_task(DELAY * 2, "two")
    set_task(DELAY * 3, "three")
    set_task(DELAY * 4, "four")
}

public one()
    server_cmd("mp_timelimit")
    
public two()
    server_cmd("echo mp_timelimit 92")
    
public three()
    server_cmd("echo bla-bla")

public four()
    server_cmd("moya comanda")


Отредактировал: Slackerok, - 14.4.2013, 11:33
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 14.4.2013, 11:31
Сообщение #4
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Ну тут нету такого, тут надо вручную исходник редактировать.
При добавлении задания в start() добавляете set_task(DELAY * n, "name") где n - номер таска.
Вы скажите, сколько вам надо, я допишу.

Да, у вас правильно.

Отредактировал: Nickk, - 14.4.2013, 11:32
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 11:33
Сообщение #5
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

И еще вопрос, когда закончится 4 команда, он начнет выполнять ее по списку заново с первой команды?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 14.4.2013, 11:36
Сообщение #6
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Цитата
И еще вопрос, когда закончится 4 команда, он начнет выполнять ее по списку заново с первой команды?

Нет.
Если вам это нужно, можно добавить в самом последнем задании ( в вашем случае four() )
Код
start()
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 11:39
Сообщение #7
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Nickk, то есть будет выглядеть так: set_task(DELAY * 4, start())

Отредактировал: Slackerok, - 14.4.2013, 11:40
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 14.4.2013, 11:43
Сообщение #8
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Не, в тело функции.
Код
#include <amxmodx>

#define DELAY 60.0

public plugin_init()
    set_task(10.0, "start")

public start()
{
    set_task(DELAY, "one")
    set_task(DELAY * 2, "two")
    set_task(DELAY * 3, "three")
    set_task(DELAY * 4, "four")
}

public one()
    server_cmd("mp_timelimit")
    
public two()
    server_cmd("echo mp_timelimit 92")
    
public three()
    server_cmd("echo bla-bla")

public four()
{
    server_cmd("moya comanda")
    start()
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 11:49
Сообщение #9
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Nickk, Спасибо вам огромное!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 12:55
Сообщение #10
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Nickk, Протестил плагин, все отлично работает! Вот только появилась одна проблема, нужно сделать в плагине чтобы при каждом старте карты выполняется комманда, а потом плагин делает свое дело дальше. Покажу схему:

#include <amxmodx>

#define DELAY 60.0

// При старте каждой карты нужно выполнить команду amx_show_activity 0, перед set_task(10.0, "start")

// После этого плагин начинает дальше перерабатывать функции

public plugin_init()
set_task(10.0, "start")

public start()
{
set_task(DELAY, "one")
set_task(DELAY * 2, "two")
set_task(DELAY * 3, "three")
set_task(DELAY * 4, "four")
}

public one()
server_cmd("mp_timelimit")

public two()
server_cmd("echo mp_timelimit 92")

public three()
server_cmd("echo bla-bla")

public four()
{
server_cmd("moya comanda")
start()
}


Отредактировал: Slackerok, - 14.4.2013, 12:56
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 14.4.2013, 13:00
Сообщение #11
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

:D
Код:
#include <amxmodx>

#define DELAY 60.0

// При старте каждой карты нужно выполнить команду amx_show_activity 0, перед set_task(10.0, "start")

// После этого плагин начинает дальше перерабатывать функции

public plugin_init()
{
set_task(10.0, "start")
server_cmd("amx_show_activity 0")
}

public start()
{
set_task(DELAY, "one")
set_task(DELAY * 2, "two")
set_task(DELAY * 3, "three")
set_task(DELAY * 4, "four")
}

public one()
server_cmd("mp_timelimit")

public two()
server_cmd("echo mp_timelimit 92")

public three()
server_cmd("echo bla-bla")

public four()
{
server_cmd("moya comanda")
start()
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 13:05
Сообщение #12
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Nickk, Я думал сложнее :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 14.4.2013, 17:18
Сообщение #13
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

Правильно так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 17:46
Сообщение #14
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

Nickk, Не скомпилировался, но уже отказался от этой идее с кваром)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Nickk
сообщение 14.4.2013, 19:08
Сообщение #15
Стаж: 13 лет

Сообщений: 438
Благодарностей: 120
Полезность: 523

У меня скомпилировался :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Slackerok
сообщение 14.4.2013, 20:30
Сообщение #16
Стаж: 16 лет

Сообщений: 187
Благодарностей: 20
Полезность: 12

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