03.03.2012, 10:14
(
Last edited by jhonyxakep; 07/03/2012 at 01:04 AM.
Reason: Linux версия
)
System Control Plugin
Версия 0.3
Автор: jhonyxakep (Андрей Недобыльский)
Mail:jhonyxakep@qip.ru
ICQ:354794596
Jabber:jhonyxakep@qip.ru
Описание:
Плагин использует библиотеку BASS (un4seen.com) для работы со звуковыми файлами.
В плагине собрано несколько очень полезных функций, отсутствующих в SA:MP.
Установка:
Windows:
Положите файлы из папки plugins в папку plugins на сервере.
В связи с особенностями сервера, файл bass.dll надо поместить в корневой каталог сервера (те там, где samp-server.exe), в системный каталог windows, или прописать пусть в переменных среды.
Linux:
Файл libbass.so надо положить в папки /lib/, /usr/lib/, /usr/local/lib/.
Пропишите плагин в секции plugins в конфиге SA:MP.
Для работы с функциями плагина подключите файл SystemControl.inc к вашему скрипту.
Quote:
0.3 исправлена проблема с функцией Sleep. На Linux работала в 10 раз меньше =) Добавлены ListDirs, ListFiles и соответствующие коллбеки Добавлены математические константы |
Функции:
ClearConsole(); - очищает консоль сервера. В Windows использует вызов CLS, в Linux - clear
system(file[]); - запускает внешнее приложение с ожиданием его завершения. Возвращает код завершения приложения. В Linux эквивалентно функции WinExec.
WinExec(file[],ShowParam); - запуск внешнего приложения без ожидания
В аргументе file указывается путь до приложения, которое надо запустить.
ShowParam принимает одну из констант:
PHP Code:
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define SW_NORMAL 1
#define SW_SHOWMINIMIZED 2
#define SW_SHOWMAXIMIZED 3
#define SW_MAXIMIZE 3
#define SW_SHOWNOACTIVATE 4
#define SW_SHOW 5
#define SW_MINIMIZE 6
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
#define SW_SHOWDEFAULT 10
#define SW_FORCEMINIMIZE 11
#define SW_MAX 11
Подробнее о работе функции можно почитать на MSDN: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Sleep(milliseconds); - приостанавливает выполнение кода на указанное кол-во миллисекунд
Можно использовать в совокупности с плагинами мультипоточности.
В Linux использует usleep
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
GetCursorPos(&x,&y); - позволяет получить позицию курсора на экране (сервер)
GetCurPosX(); - получение позиции курсора по отдельности
GetCurPosY(); - получение позиции курсора по отдельности
Возвращают позицию курсора на сервере.
В Linux возвращают 0.
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
GetAudioURLFileLengthSec(URL[]); - возвращает длину аудио потока в секундах
GetAudioURLFileLengthBytes(URL[]); - возвращает длину аудио потока в байтах
Используют библиотеку BASS для работы. Позволяют получить длину аудио потока или файла с сервера.
Если поток не имеет длины функции возвращают -1, в противном случае GetAudioURLFileLengthSec возвращает длину в секундах, GetAudioURLFileLengthBytes - в байтах.
ListDirs(path[]); - листинг папок в указанной директории. Вызывает OnListDir при нахождении папки.
Пример:
PHP Code:
public OnFilterScriptInit()
{
ListDirs("."); //вывести список папок в текущей директории (папка сервера SA:MP)
return 1;
}
public OnListDir(dir[])
{
new string[35];
format(string,sizeof(string),"Найдена папка: %s",dir);
print(string);
return 1;
}
Пример:
PHP Code:
public OnFilterScriptInit()
{
ListFiles("."); //вывести список файлов в текущей директории (папка сервера SA:MP)
return 1;
}
public OnListFile(file[])
{
new string[35];
format(string,sizeof(string),"Найден файл: %s",dir);
print(string);
return 1;
}
PHP Code:
/*
System Control Plugin
by jhonyxakep
Mail:jhonyxakep@qip.ru
ICQ:354794596
Jabber:jhonyxakep@qip.ru
*/
#include <a_samp>
#include "SystemControl"
public OnFilterScriptInit()
{
WinExec("notepad.exe",SW_NORMAL);//В Windows эта функция запустит блокнот, с показом окна в обычном режиме
//в Linux будет использован вызов функции system
//Функция system останавливает выполнение текущего процесса до завершения выполнения внешней программы
new string[35];
format(string,sizeof(string),"Stream Length: %d Seconds",GetAudioURLFileLengthSec("http://listen.radio-mixer.ru:8000/DNB")); //вернет -1
print(string);
format(string,sizeof(string),"Stream Length: %d Seconds", GetAudioURLFileLengthSec("http://upload.wikimedia.org/wikipedia/ru/4/4d/Omen.ogg")); //вернет 35 секунд
print(string);
return 1;
}
public OnPlayerText(playerid,text[])
{
return 1;
}
public OnPlayerUpdate(playerid)
{
ClearConsole(); //очистка консоли
new x, y;
GetCursorPos(x,y);//x,y содержит положение курсора на экране (пиксели), в Linux функция возвращает 0
new string[35];
format(string,sizeof(string),"X:%d Y:%d",x,y);
print(string);
return 1;
}
public OnListDir(dir[]) - вызывается, при нахождении папки после вызова ListDirs
пример см. выше.
public OnListFile(file[]) - вызывается, при нахождении файла после вызова ListFiles
пример см. выше.
Константы:
Дополнительные математические константы:
PHP Code:
* M_E - e
* M_LOG2E - log2(e)
* M_LOG10E - log10(e)
* M_LN2 - ln(2)
* M_LN10 - ln(10)
* M_PI - pi
* M_PI_2 - pi/2
* M_PI_4 - pi/4
* M_1_PI - 1/pi
* M_2_PI - 2/pi
* M_2_SQRTPI - 2/sqrt(pi)
* M_SQRT2 - sqrt(2)
* M_SQRT1_2 - 1/sqrt(2)
Кто хочет увидеть больше системных, Windows, и других функций в этом плагине, пишите в комментариях, добавлю

Внутри архива присутствует исходной код, демонстрационный FilterScript, плагин для Windows и Linux и Include
Теперь плагин кроссплатформенный
Закачка:
в прикреплении