Примитивный файловый+download менеджер средствами AMXX
Вступление:Ситуация, например, такая. У провайдера есть игровой CS сервер, у нас есть rcon от этого сервера или amxx админка и возможность поставить хотя бы 1 единственный плагин как-нибудь. Больше ничего. FTP доступа к папке с сервером игры нету. А управлять хочется, и на должном уровне. Для этого же нужно самому заливать плагины в папку plugins, прописывать их в plugins.ini только как без ftp? А вот так! При помощи этого маленького плагина.
Описание:Плагин с минимально необходимым набором функций для работы с файлами и конфигами в папке cstrike сервера и в подкаталогах.
Требования:CS 1.6
AMXMODX v1.76d (или другой совместимой версии)
Установка:скачайте плагин. разархивируйте.
расположите file_manager.amxx в ...\cstrike\addons\amxmodx\plugins
разместите строку "file_manager.amxx" в файле ...\cstrike\addons\amxmodx\configs\plugins.ini
Возможности:Плагин может: проверить существует ли файл, выдать размер файла, переименовать файл, переместить файл, прочесть содержимое файла, удалить файл, записать строчку в файл, показать содержимое папки, создать папку, удалить папку - всё это в пределах папки cstrike и её подкаталогов. Также плагин может скачать файл с http адреса на сервер (карты, плагины). Скорость скачки ~ 4kb/sec. По завершению закачки пользователь стартовавший закачку будет извещен, если он не отсоединялся от сервера во время неё.
Также, можно при помощи этого плагина обновить сам AMXMODX или METAMOD на сервере (нужно только качать не поверх, а рядом, затем "поменять файлы местами" переименовав их. вообще, рискованная затея).
Переменные:amx_fcutlen {n} (по-умолчанию=3) - устанавливает, сколько знаков в конце строки обрезать перед вводом в файл посредством amx_fwrite. минимум рекомендуется 2, ибо плагин в результате своей работы последний 2 символа строки делает лишними. Переменная была введена потому, что при чтении строчек из файла отформатированного по разному, каждый раз остаются\обрезаются ненужные\нужные символы. например, для чтения строчек из текстового файла созданного в среде linux рекомендуется значение 2, для win 3. В общем, стоит поэксперементировать и нужное значеним подобрать самому.
amx_fsilent {0|1} (по-умолчанию=0) - выкл|вкл ответ на ввод команд.
Команды:amx_f - показать текущий путь и имя файла.
amx_fdef либо amx_fd - установить путь "addons/amxmodx/configs".
amx_fdef0 либо amx_f0 - установить путь "".
amx_fdefp либо amx_fp установить путь "addons/amxmodx/plugins".
amx_fdefm либо amx_fm установить путь "maps".
amx_fdefl либо amx_fl установить путь "addons/amxmodx/logs".
amx_fup - установить путь на 1 папку выше.
amx_fex - проверить, существует ли файл.
amx_fsize - показать размер файла.
amx_fread - показать содержимое файла.
amx_fdir - показать содержимое папки.
amx_fcd - добавить папку в путь.
Usage: amx_fcd {folder}
Example: amx_fcd configs
amx_fpath - установить путь.
Usage: amx_fpath {path}
Example: amx_fpath addons/amxmodx/configs
amx_fsetpath - установить путь и имя файла.
Usage: amx_fsetpath {full path}
Example: amx_fsetpath addons/amxmodx/configs/plugins.ini
amx_fname либо amx_fn - установить имя файла.
Usage: amx_fname {filename}
Example: amx_fname plugins.ini
amx_fdelete - удалить файл (предварительно дополнительно указав его в amx_fname).
Usage: amx_fdelete {filename}
Example: amx_fname conmotd.txt ; amx_fdelete conmotd.txt
amx_fdeleteall - удалить все файлы в папке. (предварительно дополнительно указав путь к ней в amx_fpath).
Usage: amx_fdeleteall {foldername}
Example: amx_fdeleteall plugins
amx_fwrite - записать строку в файл.
Usage: amx_fwrite ~"{string}"
Example: amx_fwrite ~"sys_ticrate 100"
(спец символ '~' используется для того, чтобы игнорировать последующий за ним знак " и сдвинуть всю строку на 2 символа влево, ибо иначе встречающиеся в строке знаки ";" обрывают ввод строки)
amx_fwrite2 - записать строку в буфер (max 10).
Usage: amx_fwrite2 ~"{string}"
Example: amx_fwrite2 ~"sys_ticrate 100"
amx_fwrite3 - склеить все строки из буфера + вводную строку и записать результат в файл.
Usage: amx_fwrite3 ~"{string}"
Example: amx_fwrite3 ~"sys_ticrate 100"
amx_fcreatedir - создать папку.
Usage: amx_fcreatedir {folder}
Example: amx_fcreatedir my_folder
amx_fdeletedir - удалить папку.
Usage: amx_fdeletedir {folder}
Example: amx_fdeletedir my_folder
amx_frename - переименовать файл.
Usage: amx_frename {newname}
Example: amx_frename plugins.ini.bak
amx_fmove - переместить файл.
Usage: amx_fmove {path}
Example: amx_fmove addons/amxmodx/configs
//===============================================
amx_fwritein - записать строку в файл (практически полный аналог amx_fwrite).
Usage: amx_fwritein ~"{string}"
Example: amx_fwritein ~"sys_ticrate 100"
amx_fwriteset - установить номер строчки с которой начнёт запись в файл команда amx_fwritein.
Usage: amx_fwriteset {string number}
Example: amx_fwriteset 0
amx_fclear - отчистить файл.
Usage: amx_fclear {filename}
Example: amx_fname plugins.ini ; amx_fclear plugins.ini
amx_fcopy - сделать копию файла.
Usage: amx_fcopy {destination path}
Example: amx_fcopy maps/de_dust2_copy.bsp")
Example2: (в эту же папку сделать копию): amx_fcopy de_dust2_copy.bsp
amx_fcomp - сравнить файлы на идентичность.
Usage: amx_fcomp {file1 path} {file2 path}
Example: amx_fcomp maps/de_dust2.bsp maps/de_dust2_copy.bsp
amx_fhash - подсчитать хэш-сумму файла.
реализация хэш-функции для подсчета хэш-суммы самая примитивная какая мне только пришла в голову, ибо необходимости в сложной я никакой не вижу, а нужда считать хэш хоть как-нибудь была. хэш-функция просто складывает по очереди каждый байт файла.
Usage: amx_fhash
Example: amx_fname plugins.ini ; amx_fhash
//===============================================
amx_fsetsource - установить источник закачки.
Usage (HTTP only!): amx_fsetsource {http_link}
Example: amx_fsetsource http://src.ucoz.net/img/fr/ic/9/online.gif
amx_fsetdest - установить путь закачки.
Usage: amx_fsetdest {path/filename}
Example: amx_fsetdest addons/amxmodx/online.gif
amx_fstart - начать закачку.
после удачной закачки плагин увеличивает значение квара сервера decalfrequency на 1 (этот квар крайне ненужный, поэтому выбран именно он). при неудачной отнимает 1. так что можно контролировать удачность загрузки не заходя на сервер через HLSW.
Примечания:команды amx_fread и amx_fdir при использовании через консоль игры часто выдаёт ошибку overflowed. чтобы этого избежать, нужно использовать amx_fread через rcon, например из hlsw.
----------
для заливки на сервер конфигов при помощи команды amx_fwrite удобно составлять "загрузочные" конфиги, которые загружаются с консоли командой exec и составляются примерно так:
//exec scripts/server/configs/plugins.cfg
alias "w1" "wait"
alias "w2" "w1;w1"
alias "w4" "w2;w2"
alias "w8" "w4;w4"
w8;amx_fdef
w8;amx_fname plugins.ini
w8;amx_fdelete plugins.ini
//-----------------------------------------------------------------
w8;amx_fwrite ~"; AMX Mod X plugins
w8;amx_fwrite ~"
w8;amx_fwrite ~"; Admin Base - Always one has to be activated
w8;amx_fwrite ~";admin.amxx ; admin base (required for any admin-related)
w8;amx_fwrite ~"admin_sql.amxx debug ; admin base - SQL version (comment admin.amxx)
w8;amx_fwrite ~"amxbans.amxx
w8;amx_fwrite ~"
w8;amx_fwrite ~"; Basic
w8;amx_fwrite ~"admincmd.amxx ; basic admin console commands
w8;amx_fwrite ~"adminhelp.amxx ; help command for admin console commands
w8;amx_fwrite ~"adminslots.amxx ; slot reservation
w8;amx_fwrite ~"multilingual.amxx ; Multi-Lingual management
w8;amx_fwrite ~"
если входная строчка длинее 116 символов, то нужно её разбить на несколько строчек и грузить на сервер при помощи команд amx_fwrite2 и amx_fwrite3.выглядит это так:w8;amx_fwrite ~"// Set in seconds how fast players can chat (chat-flood protection)
w8;amx_fwrite ~"amx_flood_time 0.75
w8;amx_fwrite ~"
w8;amx_fwrite2 ~"// Amount of reserved slots, amx_hideslots must be 1 to use this cvar (for more details see comments in plugi
w8;amx_fwrite3 ~"n source)
w8;amx_fwrite ~"amx_reservation 4
в результате получим это:// Set in seconds how fast players can chat (chat-flood protection)
amx_flood_time 0.75
// Amount of reserved slots, amx_hideslots must be 1 to use this cvar (for more details see comments in plugin source)
amx_reservation 4
Скачать
file_manager.rar [39,62 Kb] (cкачиваний: 368)
Теги: Amxmodx amxx plugins