myDC.ru

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

 
 
Ответить в данную темуНачать новую тему

> Универсальный Скрипт Совместимости Двух Версий Api

Теги
Нет тегов для показа
Setuper
сообщение 15.10.2008, 14:57
Сообщение #1


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Разработчикам скриптов предлагается универсальный скрипт для написания скриптов под обе версии api одновременно.
Принцип работы скрипта: Скрипт переопределяет все функции обеих версий api.
Использование: использовать скрипт довольно легко. Достаточно поместить данный скрипт в папку с файлом PtokaX.exe (не используем папку scripts только из-за того, чтобы файл там не мешался). После того как вы поместили файл px.api в папку с файлом PtokaX.exe можно приступать к написанию скриптов. Создаём как обычно в папке scripts свой скрипт. Назовём его например test.lua. При написании скрипта первой строчкой пишем:
Код
if Core then dofile(Core.GetPtokaXPath().."px.api") elseif frmHub then dofile(frmHub:GetPtokaXLocation().."px.api") end
После этого пишем обычный скрипт под api2, НО ОДНО НО: вместо обычных для api2 таблиц:
Цитата
Core.
SetMan.
RegMan.
BanMan.
ProfMan.
TmrMan.
UDPDbg.
ScriptMan.
IP2Country.

следует писать tPX:

А также вместо всех функций: OnStartup(), UserConnected(tUser) и тд. следует писать методы: tPX:OnStartup(), tPX:UserConnected(tUser) и тд.

Приведу пример скрипта:
Код
if Core then dofile(Core.GetPtokaXPath().."px.api") elseif frmHub then dofile(frmHub:GetPtokaXLocation().."px.api") end

function tPX:OnStartup()
  tPX:SendToAll("Функция, выполняемая при запуске скрипта")
end

function tPX:UserConnected(tUser)
  tPX:SendToUser(tUser,"Добро пожаловать на хаб!")
end
tPX.RegConnected=tPX.UserConnected
tPX.OpConnected=tPX.UserConnected

написанная функция использует (не считая добавки tPX:) интерфейс api2, но работает на обеих api !!!!!


Теперь немного о различиях в версиях api: в api2 исчезли поля юзера iBlimit, bRegistered, bHasTag, в отличии от версии api1, в которых они были.

Некие различия в использовании данного скрипта:
1). В api2 чтобу получить версию PtokaX надо было писать Core.Version. В данном скрипте это действие выполняется НЕ ПОЛЕМ ТАБЛИЦЫ, А МЕТОДОМ: tPX:Version()
2). Для выполнения функции ScriptMan.Restart() надо писать метод tPX:Restart(true)
3). В api2 существуют функции: SetMan.Save(), RegMan.Save() и BanMan.Save(). В данном скрипте их выполнение заменено на метод: tPX:Save(iNum), где iNum может принимать следующие значения: если iNum=nil, то выполняются все 3 функции SetMan.Save(), RegMan.Save() и BanMan.Save(), если iNum=1, то выполняется SetMan.Save(), если iNum=2, то выполняется RegMan.Save(), если iNum=3, то выполняется BanMan.Save()
4). Для api1 установлен интервал выполнения функции tPX:OnTimer(nTimerId) - 1 сек.
Думаю, что никто не использует в своих проектах время меньше 1 сек.
В соответствие с этим, в функциях tPX:AddTimer(nTimerInterval), tPX:AddTimer(nTimerInterval, sFunctionName) параметр nTimerInterval следует указывать в секундах, а не в миллисекундах!

Расширение возможностей:
1).
Цитата
Core.SendToAll(sData) -> tPX:SendToAll(sData, User, Sender)
Core.SendToNick(sNick, sData) -> tPX:SendToNick(sNick, sData, Nick, Sender)
Core.SendToOps(sData) -> tPX:SendToOps(sData, Nick, Sender)
Core.SendToProfile(nProfileNumber, sData) -> tPX:SendToProfile(nProfileNumber, sData, User, Sender)
Core.SendToUser(tUser, sData) -> tPX:SendToUser(tUser, sData, Nick, Sender)

Разберём например последнюю функцию (остальные по аналогии):
То есть можно написать так:
Код
tPX:SendToUser(tUser, "привет", "NICK_BOT", "BOT")

В этом примере пользователь tUser получит сообщение "привет" от бота BOT с ником NICK_BOT, то есть сообщение будет таким: "<NICK_BOT> привет", а в закладке личного сообщения будет написано "BOT"
Первый параметр - это таблица пользователя как обычно
Второй параметр - это сообщение, опять же как обычно
Третий параметр - это Ник от кого пришло сообщение
Четвёртый параметр - это отправитель личного сообщения
Если третий и четвёртый параметр не указаны, то сообщение юзеру отправляется в чат без ника, если не указан только четвёртый параметр, то сообщение юзеру отправляется в чат от ника, который равен третьему параметру, если указаны все параметры, то сообщение отправляется от ника, который равен четвёртому параметру (будет отображаться в закладке ЛС), а в самом сообщении будет ник, который равен третьему параметру (<третий_параметр> сообщение).
Ещё одна удобность данных функций отправки сообщений: как видите параметр Nick я не написал используя венгерскую нотацию как sNick. Почему я написал Nick, а не sNick? Разве sNick не является строковой переменной? В том то всё и дело, что Nick может быть как строкой, так и таблицей пользователя. То же самое относится и к параметру Sender, и даже к параметру tUser, хоть тут я и написал tUser, а не просто User. tUser я написал только из соображений того, что кто-то уже привык к стандартным функциям, поэтому первые 2 параметра оставил как и в описании для интерфейса api2.

2). Следующие расширенные возможности касаются таблицы пользователя:
В таблицу пользователя добавлено поле iIP, отвечающее за числовое значение ip адреса пользователя.
tUser.sNick => "Вася"
tUser.sIP => "10.10.128.120"
tUser.iIP => 168460408
Поле iIP очень удобно. Его можно применять для сравнения рангов или в качестве ключа таблицы БД.

3). Следующая возможность - это путь к папке со скриптами.
Теперь для того чтобы выполнить функцию dofile("путь_к_папке_scripts".."дальнейшие_директории".."имя_файла")
достаточно написать: dofile(tPX.sScriptsPath.."дальнейшие_директории".."имя_файла")
То есть существует универсальная переменная tPX.sScriptsPath под любые версии PtokaX и api.

Данный скрипт находится под защитой авторских прав, однако разрешено копирование, использование и модификация скрипта, НО ОБЯЗАТЕЛЬНО НЕОБХОДИМО УКАЗЫВАТЬ email И имя АВТОРА.

В архиве файл с русским описанием функций. Функции у которых написано (только API2) означает, что они могут быть использованы только в скриптах api2, использование из на api1 ничего не даст, то есть при написании скриптов под обе api необходимо это учитывать

Файл с открытым кодом: Прикрепленный файл  px.rar ( 16.46 килобайт ) Кол-во скачиваний: 22


Хотя код является открытым, но тем не менее прикладываю бинарный код. Ведь бинарный код - машинный код, поэтому интерпретатору lua не надо делать лишнюю работу по переводу в бинарный код. Это является оптимизацией выполнения скрипта: Прикрепленный файл  px_bin.rar ( 22.63 килобайт ) Кол-во скачиваний: 10
Go to the top of the page
+Quote Post
Setuper
сообщение 12.11.2008, 12:21
Сообщение #2


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Создал новую тему: "Метод Быстрого Перевода Скриптов Под Api_1", переместил в неё все обсуждения и прикрепил её в этом форуме: http://mydc.ru/topic605.html

А то раньше многие путались.
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsНерабочий скрипт ВИПа по шаре
16 Damaks 19 071 23.2.2023, 7:16 Посл. сообщение: mod
No new Topic has attachmentsMagneto - Бесплатный Скрипт Портала Обмена Dc-ссылками Для Локальной Сети
26 UserSide 40 080 27.8.2019, 11:01 Посл. сообщение: CyberGhost404
No New Posts От: Новогодний Скрипт
От темы с ID: 871
0 Евгений 2 958 15.10.2018, 21:44 Посл. сообщение: Евгений
No New Posts А бывают такой скрипт бота?
Скрипт который создает виртуалных юзеров, но с реальными шарами
5 MarkDark 7 671 26.12.2017, 10:47 Посл. сообщение: мамин_парень
No New Posts Скрипт: Бот который отвечает в лс
4 мамин_парень 7 284 11.11.2017, 5:57 Посл. сообщение: мамин_парень
No New Posts как сделать вот этот скрипт
12 мамин_парень 11 699 13.9.2017, 10:51 Посл. сообщение: dimetro
No New Posts Topic has attachmentsИщу скрипт переадресации (redirect)
Переадресация интернет-юзеров
3 AS_Com 6 857 27.8.2017, 8:05 Посл. сообщение: Ksan
No New Posts Topic has attachmentsСкрипт Thunder.lua
7 Евген76 14 841 9.8.2017, 11:48 Посл. сообщение: Ksan
No new Topic has attachmentsОткрытие двух хабов
19 000000 15 840 4.4.2017, 21:57 Посл. сообщение: Saymon21
No New Posts Требуется скрипт
Нужен скрипт запрета на подключение
5 Nikolaevich 9 075 20.8.2016, 19:52 Посл. сообщение: Ksan
No new ВАЖНО: Topic has attachmentsСкрипт банов для RusHub
тестим и комменьтруем
79 Wariner 101 527 28.9.2015, 13:34 Посл. сообщение: NeirRon
No New Posts Скрипт загрузки файла
1 FreeNas 6 159 21.7.2015, 10:58 Посл. сообщение: HackFresse
No new Как вызвать bash скрипт из Lua
14 Iskandark 16 462 3.3.2015, 12:42 Посл. сообщение: Iskandark
No new Topic has attachmentsНовогодний Скрипт
API2
22 Tsd 34 502 12.12.2014, 16:28 Посл. сообщение: Tsd
No New Posts Скрипт запрета видеть чат
запрет видеть чат
2 dimetro 7 005 5.12.2014, 17:37 Посл. сообщение: dimetro

 



RSS Сейчас: 20.6.2024, 0:21