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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер
3 страниц V   1 2 3

Отключить плагин через консоль

, amx/cmd
Статус пользователя simba
сообщение 30.1.2016, 10:45
Сообщение #21
Стаж: 11 лет

Сообщений: 132
Благодарностей: 45
Полезность: 236

Если у тебя сервер на хостинге, то это делается через ПУ, задачи по расписанию. А так через крон
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 30.1.2016, 10:51
Сообщение #22


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Цитата(Immunity @ 30.1.2016, 11:36) *
Если ты хочешь, чтобы автоматически включался/выключался плагин на 2 дня, то тебе к дэвэлопэру.

почему? есть же плагин pausecfg.amxx? или он в принципе только 1 карту работает - дальше надо снова прописывать?
а зачем тогда параметр save?

Цитата(simba @ 30.1.2016, 11:41) *
Если у тебя сервер на хостинге, то это делается через ПУ, задачи по расписанию. А так через крон

у меня в расписании п/у можно только включать, выключать, перезагружать сервер и выполнять команды в консоли
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя simba
сообщение 30.1.2016, 10:56
Сообщение #23
Стаж: 11 лет

Сообщений: 132
Благодарностей: 45
Полезность: 236

Тебе уже написали консольные команды. amxx pause, amxx save в понедельник
На субботу задачу на amxx unpause, amxx save

Отредактировал: simba, - 30.1.2016, 10:58
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 30.1.2016, 11:05
Сообщение #24


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Цитата(simba @ 30.1.2016, 11:51) *
Тебе уже написали консольные команды. amxx pause, amxx save в понедельник
На субботу задачу на amxx unpause, amxx save

во-первых, наоборот,
во-вторых, не работает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 13:54
Сообщение #25
Стаж: 11 лет

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

Если остановить плагин командой "amx_pausecfg stop bla-bla.amxx", то он останется выключенным и на следующую мапу.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 30.1.2016, 14:03
Сообщение #26


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Цитата(Immunity @ 30.1.2016, 14:50) *
Если остановить плагин командой "amx_pausecfg stop bla-bla.amxx", то он останется выключенным и на следующую мапу.

вот только что проэкспериментировал на плагине "парашют":
1. amx_pausecfg stop amx_parachute.amxx
2. amx_pausecfg save
3. amx_map (новая мапа)
4. amx_plugins - и напротив парашюта я вижу "running"
я не исключаю варианта что у меня руки кривые, но так или иначе - мне бы нужно решение этой фигни,
а то не варик каждую неделю лезть в plugins.ini. а если надёжно это решить, то можно ещё приколюх
придумать. может у меня сохраняется как-то некорректно конфиг? я хз

Отредактировал: kritic, - 30.1.2016, 14:05
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 14:10
Сообщение #27
Стаж: 11 лет

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

Только что тоже проверил, так же как и у тебя, странно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 14:18
Сообщение #28
Стаж: 11 лет

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

Нашел причину, это всё кривой pausecfg.amxx плагин, поставил другой (правда без исходника) всё работает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 30.1.2016, 14:34
Сообщение #29


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Цитата(Immunity @ 30.1.2016, 15:13) *
Нашел причину, это всё кривой pausecfg.amxx плагин, поставил другой (правда без исходника) всё работает.

Понимаю, что это не к тебе предъява, но pausecfg.amxx - это стандартный плагин,
который стоит в стандартной сборке, в моём случае - в сборке myaren'ы..)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя kritic
сообщение 30.1.2016, 15:07
Сообщение #30


Стаж: 11 лет

Сообщений: 1128
Благодарностей: 832
Полезность: 1488

Так, теперь я буду клянчить рабочий pausecfg.amxx)
Ну дааайте кто-нибудь пжлста! Желательно с исходником)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 19:41
Сообщение #31
Стаж: 11 лет

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

Скачал с "кривого" сайта без исходника, мне рисковать нечем ЛАНовский сервер, он отличается размерами от стандартного и он рабочий. Сам проверял.
Cкрытый текст

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
meloman
сообщение 30.1.2016, 19:43
Сообщение #32
Стаж: 10 лет

Сообщений: 746
Благодарностей: 373
Полезность: 628

kritic,
Cкрытый текст
/* AMX Mod X
* Pause Plugins Plugin
*
* by the AMX Mod X Development Team
* originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/

#include <amxmodx>
#include <amxmisc>

// Uncomment if you want to have two new commands
// amx_off - pause plugins not marked as unpauseable
// amx_on - enable plugins not marked as unpauseable
#define DIRECT_ONOFF

#define MAX_SYSTEM 32

new g_menuPos[33]
new g_fileToSave[64]
new g_coloredMenus
new g_Modified
new g_addCmd[] = "amx_pausecfg add ^"%s^""
new g_system[MAX_SYSTEM]
new g_systemNum

public plugin_init()
{
register_plugin("Pause Plugins", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("pausecfg.txt")
register_dictionary("common.txt")
register_dictionary("admincmd.txt")

register_concmd("amx_pausecfg", "cmdPlugin", ADMIN_CFG, "- list commands for pause/unpause management")
register_clcmd("amx_pausecfgmenu", "cmdMenu", ADMIN_CFG, "- pause/unpause plugins with menu")
#if defined DIRECT_ONOFF
register_concmd("amx_off", "cmdOFF", ADMIN_CFG, "- pauses some plugins")
register_concmd("amx_on", "cmdON", ADMIN_CFG, "- unpauses some plugins")
#endif
register_menucmd(register_menuid("Pause/Unpause Plugins"), 1023, "actionMenu")

g_coloredMenus = colored_menus()
get_configsdir(g_fileToSave, 63);
format(g_fileToSave, 63, "%s/pausecfg.ini", g_fileToSave);

return PLUGIN_CONTINUE
}

#if defined DIRECT_ONOFF
public cmdOFF(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
pausePlugins(id)

return PLUGIN_HANDLED
}

public cmdON(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
unpausePlugins(id)

return PLUGIN_HANDLED
}
#endif

public plugin_cfg()
{
loadSettings(g_fileToSave)

// Put here titles of plugins which you don't want to pause
server_cmd(g_addCmd, "Admin Base")
server_cmd(g_addCmd, "Admin Base (SQL)")
server_cmd(g_addCmd, "Pause Plugins")
server_cmd(g_addCmd, "TimeLeft")
server_cmd(g_addCmd, "NextMap")
server_cmd(g_addCmd, "Slots Reservation")
}

public actionMenu(id, key)
{
switch (key)
{
case 6:
{
if (file_exists(g_fileToSave))
{
delete_file(g_fileToSave)
client_print(id, print_chat, "* %L", id, "PAUSE_CONF_CLEARED")
}
else
client_print(id, print_chat, "* %L", id, "PAUSE_ALR_CLEARED")

displayMenu(id, g_menuPos[id])
}
case 7:
{
if (saveSettings(g_fileToSave))
{
g_Modified = 0
client_print(id, print_chat, "* %L", id, "PAUSE_CONF_SAVED")
}
else
client_print(id, print_chat, "* %L", id, "PAUSE_SAVE_FAILED")

displayMenu(id, g_menuPos[id])
}
case 8: displayMenu(id, ++g_menuPos[id])
case 9: displayMenu(id, --g_menuPos[id])
default:
{
new option = g_menuPos[id] * 6 + key
new file[32], status[2]

get_plugin(option, file, 31, status, 0, status, 0, status, 0, status, 1)

switch (status[0])
{
// "running"
case 'r': pause("ac", file)

// "debug"
case 'd': pause("ac", file)

// "paused"
case 'p':
{
g_Modified = 1
unpause("ac", file)
}

// "stopped"
case 's':
{
client_print(id, print_chat, "%L", id, "CANT_UNPAUSE_PLUGIN", file);
}
}

displayMenu(id, g_menuPos[id])
}
}

return PLUGIN_HANDLED
}

getStatus(id, code, &statusCode, lStatus[], lLen)
{
switch (code)
{
// "running"
case 'r':
{
statusCode = 'O'
format(lStatus, lLen, "%L", id, "ON")
}

// "debug"
case 'd':
{
statusCode = 'O'
format(lStatus, lLen, "%L", id, "ON")
}

// "stopped"
case 's':
{
statusCode = 'S'
format(lStatus, lLen, "%L", id, "STOPPED")
}

// "paused"
case 'p':
{
statusCode = 'O'
format(lStatus, lLen, "%L", id, "OFF")
}

// "bad load"
case 'b':
{
statusCode = 'E'
format(lStatus, lLen, "%L", id, "ERROR")
}
default:
{
statusCode = 'L'
format(lStatus, lLen, "%L", id, "LOCKED")
}
}
}

isSystem(id)
{
for (new a = 0; a < g_systemNum; ++a)
if (g_system[a] == id)
return 1
return 0
}

displayMenu(id, pos)
{
if (pos < 0) return

new filename[32], title[32], status[8], statusCode
new datanum = get_pluginsnum()
new menu_body[512], start = pos * 6, k = 0

if (start >= datanum)
start = pos = g_menuPos[id] = 0

new len = format(menu_body, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "PAUSE_UNPAUSE", pos + 1, ((datanum / 6) + ((datanum % 6) ? 1 : 0)))
new end = start + 6, keys = MENU_KEY_0|MENU_KEY_8|MENU_KEY_7

if (end > datanum)
end = datanum

for (new a = start; a < end; ++a)
{
get_plugin(a, filename, 31, title, 31, status, 0, status, 0, status, 1)
getStatus(id, status[0], statusCode, status, 7)

if (isSystem(a) || (statusCode != 'O' && statusCode != 'S'))
{
if (g_coloredMenus)
{
len += format(menu_body[len], 511-len, "\d%d. %s\R%s^n\w", ++k, title, status)
} else {
++k
len += format(menu_body[len], 511-len, "#. %s %s^n", title, status)
}
} else {
keys |= (1<<k)
len += format(menu_body[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++k, title, status)
}
}

len += format(menu_body[len], 511-len, "^n7. %L^n", id, "CLEAR_PAUSED")
len += format(menu_body[len], 511-len, g_coloredMenus ? "8. %L \y\R%s^n\w" : "8. %L %s^n", id, "SAVE_PAUSED", g_Modified ? "*" : "")

if (end != datanum)
{
format(menu_body[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menu_body[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

show_menu(id, keys, menu_body, -1, "Pause/Unpause Plugins")
}

public cmdMenu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
displayMenu(id, g_menuPos[id] = 0)

return PLUGIN_HANDLED
}

pausePlugins(id)
{
new filename[32], title[32], status[2]
new count = 0, imax = get_pluginsnum()

for (new a = 0; a < imax; ++a)
{
get_plugin(a, filename, 31, title, 31, status, 0, status, 0, status, 1)

if (!isSystem(a) && status[0] == 'r' && pause("ac", filename))
{
//console_print(id, "Pausing %s (file ^"%s^")", title, filename)
++count
}
}

console_print(id, "%L", id, (count == 1) ? "PAUSED_PLUGIN" : "PAUSED_PLUGINS", count)
}

unpausePlugins(id)
{
new filename[32], title[32], status[2]
new count = 0, imax = get_pluginsnum()

for (new a = 0; a < imax; ++a)
{
get_plugin(a, filename, 31, title, 31, status, 0, status, 0, status, 1)

if (!isSystem(a) && status[0] == 'p' && unpause("ac", filename))
{
//console_print(id, "Unpausing %s (file ^"%s^")", title, filename)
++count
}
}

console_print(id, "%L", id, (count == 1) ? "UNPAUSED_PLUGIN" : "UNPAUSED_PLUGINS", count)
}

findPluginByFile(arg[32], &len)
{
new name[32], title[32], status[2]
new inum = get_pluginsnum()

for (new a = 0; a < inum; ++a)
{
get_plugin(a, name, 31, title, 31, status, 0, status, 0, status, 1)

if (equali(name, arg, len) && (
status[0] == 'r' || /*running*/
status[0] == 'p' || /*paused*/
status[0] == 's' || /*stopped*/
status[0] == 'd' )) /*debug*/
{
len = copy(arg, 31, name)
return a
}
}

return -1
}

findPluginByTitle(name[], file[], len)
{
new title[32], status[2]
new inum = get_pluginsnum()

for (new a = 0; a < inum; ++a)
{
get_plugin(a, file, len, title, 31, status, 0, status, 0, status, 1)

if (equali(title, name))
return a
}

return -1
}

public cmdPlugin(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new cmds[32]
read_argv(1, cmds, 31)

if (equal(cmds, "add") && read_argc() > 2)
{
read_argv(2, cmds, 31)
new file[2]

if ((g_system[g_systemNum] = findPluginByTitle(cmds, file, 0)) != -1)
{
if (g_systemNum < MAX_SYSTEM)
g_systemNum++
else
console_print(id, "%L", id, "CANT_MARK_MORE")
}
}
else if (equal(cmds, "off"))
{
pausePlugins(id)
}
else if (equal(cmds, "on"))
{
unpausePlugins(id)
}
else if (equal(cmds, "save"))
{
if (saveSettings(g_fileToSave))
{
g_Modified = 0
console_print(id, "%L", id, "PAUSE_CONF_SAVED")
}
else
console_print(id, "%L", id, "PAUSE_SAVE_FAILED")
}
else if (equal(cmds, "clear"))
{
if (file_exists(g_fileToSave))
{
delete_file(g_fileToSave)
console_print(id, "%L", id, "PAUSE_CONF_CLEARED")
}
else
console_print(id, "%L", id, "PAUSE_ALR_CLEARED")
}
else if (equal(cmds, "pause"))
{
new arg[32], a, len = read_argv(2, arg, 31)

if (len && ((a = findPluginByFile(arg, len)) != -1) && !isSystem(a) && pause("ac", arg))
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "PAUSED")
else
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
else if (equal(cmds, "enable"))
{
new arg[32], a, len = read_argv(2, arg, 31)

if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a))
{
if (unpause("ac", arg))
{
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "UNPAUSED")
}
else
{
console_print(id, "%L", id, "CANT_UNPAUSE_PLUGIN", arg)
}
}
else
{
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
}
else if (equal(cmds, "stop"))
{
new arg[32], a, len = read_argv(2, arg, 31)

if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a) && pause("dc", arg))
{
g_Modified = 1
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "STOPPED")
}
else
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
else if (equal(cmds, "list"))
{
new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32]

format(lName, 31, "%L", id, "NAME")
format(lVersion, 31, "%L", id, "VERSION")
format(lAuthor, 31, "%L", id, "AUTHOR")
format(lFile, 31, "%L", id, "FILE")
format(lStatus, 31, "%L", id, "STATUS")

new arg1[8], running = 0
new start = read_argv(2, arg1, 7) ? str_to_num(arg1) : 1

if (--start < 0)
start = 0

new plgnum = get_pluginsnum()

if (start >= plgnum)
start = plgnum - 1

console_print(id, "^n----- %L -----", id, "PAUSE_LOADED")
console_print(id, " %-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)

new plugin[32], title[32], version[16], author[32], status[16]
new end = start + 10

if (end > plgnum) end = plgnum

for (new a = start; a < end; ++a)
{
get_plugin(a, plugin, 31, title, 31, version, 15, author, 31, status, 15)
if (status[0] == 'r') ++running
console_print(id, " [%3d] %-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", a + 1, title, version, author, plugin, status)
}

console_print(id, "----- %L -----", id, "PAUSE_ENTRIES", start + 1, end, plgnum, running)

if (end < plgnum)
console_print(id, "----- %L -----", id, "PAUSE_USE_MORE", end + 1)
else
console_print(id, "----- %L -----", id, "PAUSE_USE_BEGIN")
} else {
console_print(id, "%L", id, "PAUSE_USAGE")
console_print(id, "%L:", id, "PAUSE_COMMANDS")
console_print(id, "%L", id, "COM_PAUSE_OFF")
console_print(id, "%L", id, "COM_PAUSE_ON")
console_print(id, "%L", id, "COM_PAUSE_STOP")
console_print(id, "%L", id, "COM_PAUSE_PAUSE")
console_print(id, "%L", id, "COM_PAUSE_ENABLE")
console_print(id, "%L", id, "COM_PAUSE_SAVE_PAUSED")
console_print(id, "%L", id, "COM_PAUSE_CLEAR_PAUSED")
console_print(id, "%L", id, "COM_PAUSE_LIST")
console_print(id, "%L", id, "COM_PAUSE_ADD")
}

return PLUGIN_HANDLED
}

saveSettings(filename[])
{
if (file_exists(filename))
delete_file(filename)

new text[256], file[32], title[32], status[2]
new inum = get_pluginsnum()

if (!write_file(filename, ";Generated by Pause Plugins Plugin. Do not modify!^n;Title Filename"))
return 0

for (new a = 0; a < inum; ++a)
{
get_plugin(a, file, 31, title, 31, status, 0, status, 0, status, 1)

// "paused"
if (status[0] == 'p')
{
format(text, 255, "^"%s^" ;%s", title, file)
write_file(filename, text)
}
}

return 1
}

loadSettings(filename[])
{
if (!file_exists(filename))
return 0

new name[256], file[32], i, pos = 0

while (read_file(filename, pos++, name, 255, i))
{
if (name[0] != ';' && parse(name, name, 31) && (i = findPluginByTitle(name, file, 31) != -1))
pause("ac", file)
}

return 1
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 30.1.2016, 19:46
Сообщение #33
Стаж: 12 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

kritic, http://www.amxmodx.org/dl.php?file_id=690&mirror_id=8 Бери crazy.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 19:59
Сообщение #34
Стаж: 11 лет

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

MeJIoMaH, не работает))

georgeml, Работает, только с командой "amx_pausecfg pause bla-bla.amxx". "stop" не сохраняется на следующую карту)

Отредактировал: Immunity, - 30.1.2016, 19:59
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
meloman
сообщение 30.1.2016, 20:01
Сообщение #35
Стаж: 10 лет

Сообщений: 746
Благодарностей: 373
Полезность: 628

Immunity, я вам стандартный скинул вообще то
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 20:03
Сообщение #36
Стаж: 11 лет

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

Цитата(MeJIoMaH @ 30.1.2016, 19:56) *
Immunity, я вам стандартный скинул вообще то

Мне скрины сделать?)


Вот:
Cкрытый текст




Чуть тупанул и не проверил первый вариант с "pause". С "pause" плагины выключаются, со "stop" не)

Отредактировал: Immunity, - 30.1.2016, 20:09
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
meloman
сообщение 30.1.2016, 20:07
Сообщение #37
Стаж: 10 лет

Сообщений: 746
Благодарностей: 373
Полезность: 628

Immunity, у меня все прекрасно компилит =)

Прикрепленный файл  pausecfg.rar ( 16,56 килобайт ) Кол-во скачиваний: 14
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 20:11
Сообщение #38
Стаж: 11 лет

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

MeJIoMaH, Я вам не о компиляции говорю, а о работоспособности)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
meloman
сообщение 30.1.2016, 20:18
Сообщение #39
Стаж: 10 лет

Сообщений: 746
Благодарностей: 373
Полезность: 628

Immunity, точно это я затупил показалось о компиляции идет речь
Cкрытый текст
// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright © The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
// https://alliedmods.net/amxmodx-license

//
// Pause Plugins Plugin
//

#include <amxmodx>
#include <amxmisc>

// Uncomment if you want to have two new commands
// amx_off - pause plugins not marked as unpauseable
// amx_on - enable plugins not marked as unpauseable
#define DIRECT_ONOFF

#define MAX_SYSTEM 32

new g_menuPos[MAX_PLAYERS + 1]
new g_fileToSave[64]
new g_coloredMenus
new g_Modified
new g_addCmd[] = "amx_pausecfg add ^"%s^""
new g_system[MAX_SYSTEM]
new g_systemNum

public plugin_init()
{
register_plugin("Pause Plugins", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("pausecfg.txt")
register_dictionary("common.txt")
register_dictionary("admincmd.txt")

register_concmd("amx_pausecfg", "cmdPlugin", ADMIN_CFG, "- list commands for pause/unpause management")
register_clcmd("amx_pausecfgmenu", "cmdMenu", ADMIN_CFG, "- pause/unpause plugins with menu")
#if defined DIRECT_ONOFF
register_concmd("amx_off", "cmdOFF", ADMIN_CFG, "- pauses some plugins")
register_concmd("amx_on", "cmdON", ADMIN_CFG, "- unpauses some plugins")
#endif
register_menucmd(register_menuid("Pause/Unpause Plugins"), 1023, "actionMenu")

g_coloredMenus = colored_menus()
get_configsdir(g_fileToSave, charsmax(g_fileToSave));
format(g_fileToSave, charsmax(g_fileToSave), "%s/pausecfg.ini", g_fileToSave);

return PLUGIN_CONTINUE
}

#if defined DIRECT_ONOFF
public cmdOFF(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
pausePlugins(id)

return PLUGIN_HANDLED
}

public cmdON(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
unpausePlugins(id)

return PLUGIN_HANDLED
}
#endif

public plugin_cfg()
{
loadSettings(g_fileToSave)

// Put here titles of plugins which you don't want to pause
server_cmd(g_addCmd, "Admin Base")
server_cmd(g_addCmd, "Admin Base (SQL)")
server_cmd(g_addCmd, "Pause Plugins")
server_cmd(g_addCmd, "TimeLeft")
server_cmd(g_addCmd, "NextMap")
server_cmd(g_addCmd, "Slots Reservation")
}

public actionMenu(id, key)
{
switch (key)
{
case 6:
{
if (file_exists(g_fileToSave))
{
delete_file(g_fileToSave)
client_print(id, print_chat, "* %L", id, "PAUSE_CONF_CLEARED")
}
else
client_print(id, print_chat, "* %L", id, "PAUSE_ALR_CLEARED")

displayMenu(id, g_menuPos[id])
}
case 7:
{
if (saveSettings(g_fileToSave))
{
g_Modified = 0
client_print(id, print_chat, "* %L", id, "PAUSE_CONF_SAVED")
}
else
client_print(id, print_chat, "* %L", id, "PAUSE_SAVE_FAILED")

displayMenu(id, g_menuPos[id])
}
case 8: displayMenu(id, ++g_menuPos[id])
case 9: displayMenu(id, --g_menuPos[id])
default:
{
new option = g_menuPos[id] * 6 + key
new file[32], status[2]

get_plugin(option, file, charsmax(file), status, 0, status, 0, status, 0, status, 1)

switch (status[0])
{
// "running"
case 'r': pause("ac", file)

// "debug"
case 'd': pause("ac", file)

// "paused"
case 'p':
{
g_Modified = 1
unpause("ac", file)
}

// "stopped"
case 's':
{
client_print(id, print_chat, "%L", id, "CANT_UNPAUSE_PLUGIN", file);
}
}

displayMenu(id, g_menuPos[id])
}
}

return PLUGIN_HANDLED
}

getStatus(id, code, &statusCode, lStatus[], lLen)
{
switch (code)
{
// "running"
case 'r':
{
statusCode = 'O'
format(lStatus, lLen, "%L", id, "ON")
}

// "debug"
case 'd':
{
statusCode = 'O'
format(lStatus, lLen, "%L", id, "ON")
}

// "stopped"
case 's':
{
statusCode = 'S'
format(lStatus, lLen, "%L", id, "STOPPED")
}

// "paused"
case 'p':
{
statusCode = 'O'
format(lStatus, lLen, "%L", id, "OFF")
}

// "bad load"
case 'b':
{
statusCode = 'E'
format(lStatus, lLen, "%L", id, "ERROR")
}
default:
{
statusCode = 'L'
format(lStatus, lLen, "%L", id, "LOCKED")
}
}
}

isSystem(id)
{
for (new a = 0; a < g_systemNum; ++a)
if (g_system[a] == id)
return 1
return 0
}

displayMenu(id, pos)
{
if (pos < 0) return

new filename[32], title[32], status[8], statusCode
new datanum = get_pluginsnum()
new menu_body[512], start = pos * 6, k = 0

if (start >= datanum)
start = pos = g_menuPos[id] = 0

new len = format(menu_body, charsmax(menu_body), g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "PAUSE_UNPAUSE", pos + 1, ((datanum / 6) + ((datanum % 6) ? 1 : 0)))
new end = start + 6, keys = MENU_KEY_0|MENU_KEY_8|MENU_KEY_7

if (end > datanum)
end = datanum

for (new a = start; a < end; ++a)
{
get_plugin(a, filename, charsmax(filename), title, charsmax(title), status, 0, status, 0, status, charsmax(status))
getStatus(id, status[0], statusCode, status, charsmax(status))

if (isSystem(a) || (statusCode != 'O' && statusCode != 'S'))
{
if (g_coloredMenus)
{
len += format(menu_body[len], charsmax(menu_body) - len, "\d%d. %s\R%s^n\w", ++k, title, status)
} else {
++k
len += format(menu_body[len], charsmax(menu_body) - len, "#. %s %s^n", title, status)
}
} else {
keys |= (1<<k)
len += format(menu_body[len], charsmax(menu_body) - len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++k, title, status)
}
}

len += format(menu_body[len], charsmax(menu_body) - len, "^n7. %L^n", id, "CLEAR_PAUSED")
len += format(menu_body[len], charsmax(menu_body) - len, g_coloredMenus ? "8. %L \y\R%s^n\w" : "8. %L %s^n", id, "SAVE_PAUSED", g_Modified ? "*" : "")

if (end != datanum)
{
format(menu_body[len], charsmax(menu_body) - len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menu_body[len], charsmax(menu_body) - len, "^n0. %L", id, pos ? "BACK" : "EXIT")

show_menu(id, keys, menu_body, -1, "Pause/Unpause Plugins")
}

public cmdMenu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
displayMenu(id, g_menuPos[id] = 0)

return PLUGIN_HANDLED
}

pausePlugins(id)
{
new filename[32], title[32], status[2]
new count = 0, imax = get_pluginsnum()

for (new a = 0; a < imax; ++a)
{
get_plugin(a, filename, charsmax(filename), title, charsmax(title), status, 0, status, 0, status, charsmax(status))

if (!isSystem(a) && status[0] == 'r' && pause("ac", filename))
{
//console_print(id, "Pausing %s (file ^"%s^")", title, filename)
++count
}
}

console_print(id, "%L", id, (count == 1) ? "PAUSED_PLUGIN" : "PAUSED_PLUGINS", count)
}

unpausePlugins(id)
{
new filename[32], title[32], status[2]
new count = 0, imax = get_pluginsnum()

for (new a = 0; a < imax; ++a)
{
get_plugin(a, filename, charsmax(filename), title, charsmax(title), status, 0, status, 0, status, charsmax(status))

if (!isSystem(a) && status[0] == 'p' && unpause("ac", filename))
{
//console_print(id, "Unpausing %s (file ^"%s^")", title, filename)
++count
}
}

console_print(id, "%L", id, (count == 1) ? "UNPAUSED_PLUGIN" : "UNPAUSED_PLUGINS", count)
}

findPluginByFile(arg[32], &len)
{
new name[32], title[32], status[2]
new inum = get_pluginsnum()

for (new a = 0; a < inum; ++a)
{
get_plugin(a, name, charsmax(name), title, charsmax(title), status, 0, status, 0, status, charsmax(status))

if (equali(name, arg, len) && (
status[0] == 'r' || /*running*/
status[0] == 'p' || /*paused*/
status[0] == 's' || /*stopped*/
status[0] == 'd' )) /*debug*/
{
len = copy(arg, charsmax(arg), name)
return a
}
}

return -1
}

findPluginByTitle(name[], file[], len)
{
new title[32], status[2]
new inum = get_pluginsnum()

for (new a = 0; a < inum; ++a)
{
get_plugin(a, file, len, title, charsmax(title), status, 0, status, 0, status, charsmax(status))

if (equali(title, name))
return a
}

return -1
}

public cmdPlugin(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new cmds[32]
read_argv(1, cmds, charsmax(cmds))

if (equal(cmds, "add") && read_argc() > 2)
{
read_argv(2, cmds, charsmax(cmds))
new file[2]

if ((g_system[g_systemNum] = findPluginByTitle(cmds, file, 0)) != -1)
{
if (g_systemNum < MAX_SYSTEM)
g_systemNum++
else
console_print(id, "%L", id, "CANT_MARK_MORE")
}
}
else if (equal(cmds, "off"))
{
pausePlugins(id)
}
else if (equal(cmds, "on"))
{
unpausePlugins(id)
}
else if (equal(cmds, "save"))
{
if (saveSettings(g_fileToSave))
{
g_Modified = 0
console_print(id, "%L", id, "PAUSE_CONF_SAVED")
}
else
console_print(id, "%L", id, "PAUSE_SAVE_FAILED")
}
else if (equal(cmds, "clear"))
{
if (file_exists(g_fileToSave))
{
delete_file(g_fileToSave)
console_print(id, "%L", id, "PAUSE_CONF_CLEARED")
}
else
console_print(id, "%L", id, "PAUSE_ALR_CLEARED")
}
else if (equal(cmds, "pause"))
{
new arg[32], a, len = read_argv(2, arg, charsmax(arg))

if (len && ((a = findPluginByFile(arg, len)) != -1) && !isSystem(a) && pause("ac", arg))
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "PAUSED")
else
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
else if (equal(cmds, "enable"))
{
new arg[32], a, len = read_argv(2, arg, charsmax(arg))

if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a))
{
if (unpause("ac", arg))
{
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "UNPAUSED")
}
else
{
console_print(id, "%L", id, "CANT_UNPAUSE_PLUGIN", arg)
}
}
else
{
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
}
else if (equal(cmds, "stop"))
{
new arg[32], a, len = read_argv(2, arg, charsmax(arg))

if (len && (a = findPluginByFile(arg, len)) != -1 && !isSystem(a) && pause("dc", arg))
{
g_Modified = 1
console_print(id, "%L %L", id, "PAUSE_PLUGIN_MATCH", arg, id, "STOPPED")
}
else
console_print(id, "%L", id, "PAUSE_COULDNT_FIND", arg)
}
else if (equal(cmds, "list"))
{
new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32]

format(lName, charsmax(lName), "%L", id, "NAME")
format(lVersion, charsmax(lVersion), "%L", id, "VERSION")
format(lAuthor, charsmax(lAuthor), "%L", id, "AUTHOR")
format(lFile, charsmax(lFile), "%L", id, "FILE")
format(lStatus, charsmax(lStatus), "%L", id, "STATUS")

new arg1[8], running = 0
new start = read_argv(2, arg1, charsmax(arg1)) ? str_to_num(arg1) : 1

if (--start < 0)
start = 0

new plgnum = get_pluginsnum()

if (start >= plgnum)
start = plgnum - 1

console_print(id, "^n----- %L -----", id, "PAUSE_LOADED")
console_print(id, " %-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)

new plugin[32], title[32], version[16], author[32], status[16]
new end = start + 10

if (end > plgnum) end = plgnum

for (new a = start; a < end; ++a)
{
get_plugin(a, plugin, charsmax(plugin), title, charsmax(title), version, charsmax(version), author, charsmax(author), status, charsmax(status))
if (status[0] == 'r') ++running
console_print(id, " [%3d] %-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", a + 1, title, version, author, plugin, status)
}

console_print(id, "----- %L -----", id, "PAUSE_ENTRIES", start + 1, end, plgnum, running)

if (end < plgnum)
console_print(id, "----- %L -----", id, "PAUSE_USE_MORE", end + 1)
else
console_print(id, "----- %L -----", id, "PAUSE_USE_BEGIN")
} else {
console_print(id, "%L", id, "PAUSE_USAGE")
console_print(id, "%L:", id, "PAUSE_COMMANDS")
console_print(id, "%L", id, "COM_PAUSE_OFF")
console_print(id, "%L", id, "COM_PAUSE_ON")
console_print(id, "%L", id, "COM_PAUSE_STOP")
console_print(id, "%L", id, "COM_PAUSE_PAUSE")
console_print(id, "%L", id, "COM_PAUSE_ENABLE")
console_print(id, "%L", id, "COM_PAUSE_SAVE_PAUSED")
console_print(id, "%L", id, "COM_PAUSE_CLEAR_PAUSED")
console_print(id, "%L", id, "COM_PAUSE_LIST")
console_print(id, "%L", id, "COM_PAUSE_ADD")
}

return PLUGIN_HANDLED
}

saveSettings(filename[])
{
if (file_exists(filename))
delete_file(filename)

new text[256], file[32], title[32], status[2]
new inum = get_pluginsnum()

if (!write_file(filename, ";Generated by Pause Plugins Plugin. Do not modify!^n;Title Filename"))
return 0

for (new a = 0; a < inum; ++a)
{
get_plugin(a, file, charsmax(file), title, charsmax(title), status, 0, status, 0, status, charsmax(status))

// "paused"
if (status[0] == 'p')
{
format(text, charsmax(text), "^"%s^" ;%s", title, file)
write_file(filename, text)
}
}

return 1
}

loadSettings(filename[])
{
if (!file_exists(filename))
return 0

new name[256], file[32], i, pos = 0

while (read_file(filename, pos++, name, charsmax(name), i))
{
if (name[0] != ';' && parse(name, name, charsmax(name)) && (i = findPluginByTitle(name, file, charsmax(file)) != -1))
pause("ac", file)
}

return 1
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Immunity
сообщение 30.1.2016, 20:34
Сообщение #40
Стаж: 11 лет

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

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