SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian > Релизы/Releases

Reply
 
Thread Tools Display Modes
Old 03/03/2012, 11:14 AM   #1
jhonyxakep
Gangsta
 
jhonyxakep's Avatar
 
Join Date: May 2011
Location: Russia, Vladivostok
Posts: 793
Reputation: 43
Default System Control

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 
В Linux версии является оболочкой над функцией system, в этом случае аргумент ShowParam игнорируется

Подробнее о работе функции можно почитать на 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;

ListFiles(path[]); - листинг папок в указанной директории. Вызывает OnListFile при нахождении папки.

Пример:
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 xy;
    
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

Теперь плагин кроссплатформенный


Закачка:

в прикреплении
Attached Files
File Type: zip SysControl.zip (1,009.8 KB, 60 views)

Last edited by jhonyxakep; 07/03/2012 at 02:04 AM. Reason: Linux версия
jhonyxakep is offline   Reply With Quote
Old 03/03/2012, 11:35 AM   #2
GameMan
Huge Clucker
 
GameMan's Avatar
 
Join Date: Mar 2011
Location: Russia
Posts: 372
Reputation: 19
Default Re: System Control (Только для Windows)

Типа для linux вообще никак? Или все таки можно?

Работа хорошая
GameMan is offline   Reply With Quote
Old 03/03/2012, 11:37 AM   #3
azen
Big Clucker
 
azen's Avatar
 
Join Date: Apr 2010
Posts: 172
Reputation: 3
Default Re: System Control (Только для Windows)

Хм, а все же под Линукс получится что-либо подобное сварганить?
azen is offline   Reply With Quote
Old 03/03/2012, 11:38 AM   #4
jhonyxakep
Gangsta
 
jhonyxakep's Avatar
 
Join Date: May 2011
Location: Russia, Vladivostok
Posts: 793
Reputation: 43
Default Re: System Control (Только для Windows)

Quote:
Типа для linux вообще никак? Или все таки можно?
Смотря какие функции. BASS можно, аналог Sleep тоже можно, позицию курсора надо думать, насчет WinExec конечно можно сделать для линукса с помощью другой функции fork, system, но работать оно уже не так будет. Да и обновления не кроссплатформеные получатся.


Quote:
Хм, а все же под Линукс получится что-либо подобное сварганить?
Уговорили =) Чуть позже, надо сначала разобраться с компиляцией плагинов под него.
jhonyxakep is offline   Reply With Quote
Old 03/03/2012, 12:18 PM   #5
Vinnyy
Big Clucker
 
Join Date: Oct 2011
Posts: 58
Reputation: 48
Default Re: System Control (Только для Windows)

зачем делать чисто клиентские функции на сервере??

Last edited by Stepashka; 03/03/2012 at 04:54 PM.
Vinnyy is offline   Reply With Quote
Old 03/03/2012, 12:26 PM   #6
jhonyxakep
Gangsta
 
jhonyxakep's Avatar
 
Join Date: May 2011
Location: Russia, Vladivostok
Posts: 793
Reputation: 43
Default Re: System Control (Только для Windows)

Quote:
автор.. ты м**ак...

зачем делать чисто клиентские функции на сервере??
Пфф... Потому что:
1. WinExec на клиенте запрещено делать этикой
2. Т.К. возникла необходимость именно в серверной реализации
3. Я не пишу клиентские плагины

Last edited by Stepashka; 03/03/2012 at 04:54 PM.
jhonyxakep is offline   Reply With Quote
Old 03/03/2012, 01:22 PM   #7
Mutha_X
Huge Clucker
 
Join Date: Sep 2009
Posts: 402
Reputation: 8
Default Re: System Control (Только для Windows)

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

На счёт консоли: будет ли очистка от всего текста(или кусочно)?
__________________
Projects: [GM] The Fable (in develop).
Mutha_X is offline   Reply With Quote
Old 03/03/2012, 04:09 PM   #8
xJester
Big Clucker
 
xJester's Avatar
 
Join Date: Jul 2010
Posts: 148
Reputation: 1
Default Re: System Control (Только для Windows)

Действительно стоящие:
PHP Code:
GetAudioURLFileLengthSec(URL[]); - возвращает длину аудио потока в секундах
GetAudioURLFileLengthBytes
(URL[]); - возвращает длину аудио потока в байтах 
Остальное Ctrl+A; Del; (:
__________________
http://dn-mp.ru/
xJester is offline   Reply With Quote
Old 03/03/2012, 11:35 PM   #9
jhonyxakep
Gangsta
 
jhonyxakep's Avatar
 
Join Date: May 2011
Location: Russia, Vladivostok
Posts: 793
Reputation: 43
Default Re: System Control (Только для Windows)

Quote:
Такой вопрос: длина аудио потока вычисляется в отдельном потоке?
Увы нет. Насколько часто вы собираетесь определять длину потока? Вызов функции дает задержку примерно на 1 секунду.

Quote:
Остальное Ctrl+A; Del; (:
Не вам, так другим пригодится. Согласен, что положение курсора высчитывать на сервере - несколько глупо, но тоже можно найти свое применение. Например доступ к админке на сервере строго с определеным положением курсора, либо управление игровым сервером курсором. А так с вашим мнением можно весь WinAPI угробить =)

Quote:
На счёт консоли: будет ли очистка от всего текста(или кусочно)?
Сервер дублирует вывод текста в файл. Файл отчистить вряд ли получится, а вот отчистить само окно можно с помощью
PHP Code:
WinExec("CLS",SW_NORMAL); 
jhonyxakep is offline   Reply With Quote
Old 04/03/2012, 09:35 AM   #10
jhonyxakep
Gangsta
 
jhonyxakep's Avatar
 
Join Date: May 2011
Location: Russia, Vladivostok
Posts: 793
Reputation: 43
Default Re: System Control (Только для Windows)

Добавил для linux

Quote:
На счёт консоли: будет ли очистка от всего текста(или кусочно)?
Добавил.

ЗЫ Как вы думаете, может стоит опубликовать енто дело в англиццком разделе?
jhonyxakep is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[FilterScript] Vehicle Control System [0.3c] Shadow_ Filterscripts 52 25/04/2013 06:00 PM
[FilterScript] SA-MP 0.3c Vehicle Control System (Control everything, you want) Auxxx Filterscripts 78 09/10/2012 10:40 PM
[Plugin] System Control jhonyxakep Plugin Development 35 06/05/2012 10:36 AM
[FilterScript] Vehicle Control System With Dialogs! - TLG - [NEW] rbcrp Filterscripts 3 13/12/2011 12:58 PM
Vehicle Control System GTA-Roleplay Help Archive 3 09/08/2011 04:32 PM


All times are GMT. The time now is 04:15 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.