myDC.ru

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

 
2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему

> Метод Быстрого Перевода Скриптов Под API_1, Самостоятельный быстрый перевод из API_2 ---> в API_1

Рейтинг 5 V
Теги
Setuper
сообщение 16.10.2008, 16:40
Сообщение #1


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

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




Метод быстрого перевода скриптов под API_1 (PtokaX 0.3.6.0 и ниже).

Ограничения на язык: Lua 5.1



Скрипт, подключая который на API_1, будут работать скрипты, написанные под API_2 !!!

Для этого следует всего-то проделать следующие 3 шага:

1). Помещаем в папку scripts файл из архива: Прикрепленный файл  old_api.rar ( 5.72 килобайт ) Кол-во скачиваний: 194


2). Открываем скрипт, написанный под API_2, и дописываем в начало скрипта код:
Код
if frmHub then dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu")
elseif not Core then error("Запуск скрипта возможен только при запущенном хабе!",1)
else dofile(Core.GetPtokaXPath().."scripts/old_api.lu") end
(код изменён для использования под обе версии API)

3). В именах основных функций PtokaX (OnStartup, OnExit, UserConnected, RegConnected, OpConnected и тд.) дописываем Core. спереди.

Примеры реализации пункта 3:

Было:
Код
function OnStartup() ... end
дописав Core., получается:
Код
function Core.OnStartup() ... end



Или так: было:
Код
OnStartup=function() ... end
дописав Core., получается:
Код
Core.OnStartup=function() ... end



Или даже так: было:
Код
ToArrival=ChatArrival
дописав Core., получается:
Код
Core.ToArrival=Core.ChatArrival



Или даже так: было:
Код
OpConnected,RegConnected=UserConnected,UserConnected
дописав Core., получается:
Код
Core.OpConnected,Core.RegConnected=Core.UserConnected,Core.UserConnected




Полный список всех функций в алфавитном порядке, впереди которых надо дописывать Core. :
  • BotINFOArrival
  • ChatArrival
  • CloseArrival
  • ConnectToMeArrival
  • GetINFOArrival
  • GetNickListArrival
  • KeyArrival
  • KickArrival
  • MultiConnectToMeArrival
  • MultiSearchArrival
  • MyINFOArrival
  • OnExit
  • OnError
  • OnStartup
  • OnTimer
  • OpConnected
  • OpDisconnected
  • OpForceMoveArrival
  • PasswordArrival
  • RegConnected
  • RegDisconnected
  • RevConnectToMeArrival
  • SearchArrival
  • SRArrival
  • SupportsArrival
  • ToArrival
  • UDPSRArrival
  • UnknownArrival
  • UserConnected
  • UserDisconnected
  • ValidateNickArrival
  • VersionArrival



В общем, находим в скрипте все вышеприведённые слова (если они есть в скрипте) и перед всеми найденными словами дописываем Core.


Всё! Почти любой скрипт, написанный под API_2 будет у вас работать на API_1 (исключения составляют вещи, которые есть только в API_2 - после перевода по данной методике эти вещи будут просто игнорироваться скриптом (или возвращать nil) - это связанно с расширенной функциональностью API_2, по сравнению с API_1)!!!

Обращаю внимание, что переведя по данной методике, скрипт будет работать вне зависимости от версии API, ОДНАКО таким макаром можно переводить только скрипты, написанные под API2 !!!

Таким образом можно за пару минут самому перевести скрипт на API_1, даже больших размеров (что в некоторых случаях заняло бы для перевода несколько дней). А когда вы всё же будете готовы перейти на новые версии PtokaX, обратные изменения также не займут много времени!
Go to the top of the page
+Quote Post
Wariner
сообщение 16.10.2008, 18:14
Сообщение #2


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




Прошу прощения за оффтоп, но хочется сказать огромное спасибо Setuper`у ибо он как всегда открывает для нас(во всяком случае для меня) всё новые и новые возможности и хитрости)))

PS: тема очень порадовала!!!


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 28.10.2008, 13:02
Сообщение #3


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

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




Список функций, которые работают только на API2. При переводе по данной методике эти функции на API1 не будут ничего делать (будут возвращать nil)

Код
  Core.Shutdown() --Отключить хаб.
  Core.ResumeAccepts() --Продолжать прослушивать поток(и), если их прослышивание не было преостановлено.
  Core.GetBots() --Возбращает таблицу со всеми ботами, зарегистрированными скриптами, как таблицу с полями sNick, sMyINFO, bIsOP and sScriptName.
  Core.GetUserAllData(tUser) --Добавляет или обновляет все данные в таблице пользователя. Возвращает nil в случае неудачи (пользователь оффлайн) или true в случае успеха.
  Core.GetUserData(tUser, nValueId) --Добавляет или обновляет данные с указанным идентификатором в таблице пользователя. Возвращает nil в случае неудачи (пользователь оффлайн) или true в случае успеха.
  Core.DefloodWarn(tUser) --Предупреждение пользователю по причине флуда. Возвращает nil в случае неудачи, true - в случае успеха.
  SetMan.Save() --Принудительно сохраняет настройки.
  RegMan.Save() --Принудительно сохраняет зарегистрированных пользователей.
  BanMan.Save() --Принудительно cохраняет баны.
  BanMan.GetRangeBan(sIPFrom, sIPTo) --Возвращает таблицу забаненных рангов для данного ранга или nil в случае отсутствия таковой.
  BanMan.GetRangePermBan(sIPFrom, sIPTo) --Возвращает таблицу постоянно забаненных рангов для данного ранга или nil в случае отсутствия таковой.
  BanMan.GetRangeTempBan(sIPFrom, sIPTo) --Возвращает таблицу временно забаненных рангов для данного ранга или nil в случае отсутствия таковой.
  ProfMan.MoveDown(nProfileNumber) --Сдвиг профиля вниз. Возвращает nil в случае неудачи, true - в случае успеха.
  ProfMan.MoveUp(nProfileNumber) --Сдвиг профиля вверх. Возвращает nil в случае неудачи, true - в случае успеха.
  ProfMan.SetProfileName(nProfileNumber, sProfileName) --Изменяет имя профиля, возвращает true в случае удачи или nil, если указанного профиля не существует.
  ProfMan.SetProfilePermission(nProfileNumber, nPermissionId, bBoolean) --Изменяет профильную настройку с указанным идентификатором.
  UDPDbg.Reg(sIp, nPort, bAllData) --Регистрирует получателя данных от PtokaX через UDP, если параметр bAllData равен false, то получать данные только от этого скрипта. Возвращает nil в случае неудачи или true в случае успеха.
  UDPDbg.Unreg() --Удалить получателя данных.
  UDPDbg.Send(sData) --Отправить данные через UDP. Если скрипт зарегистрирован, то только от зарегистрированного скрипта, иначе от всех скриптов. Возвращает nil в случае неудачи или true в случае успеха.
  ScriptMan.GetScript() --Возвращает таблицу этого скрипта с полями sName, bEnabled, iMemUsage.
  ScriptMan.GetScripts() --Возвращает таблицу всех скриптов с полями sName, bEnabled, iMemUsage.
  ScriptMan.MoveUp(sScriptName) --Сдвинуть указанный скрипт выше. Возвращает nil в случае неудачи или true в случае успеха.
  ScriptMan.MoveDown(sScriptName) --Сдвинуть указанный скрипт ниже. Возвращает nil в случае неудачи или true в случае успеха.
  ScriptMan.StartScript(sScriptName) --Запустить скрипт с указанным именем. Возвращает nil в случае неудачи или true в случае успеха.
  ScriptMan.RestartScript(sScriptName) --Перезапустить указанный скрипт. Возвращает nil в случае неудачи или true в случае успеха.
  ScriptMan.StopScript(sScriptName) --Остановить указанный скрипт. Возвращает nil в случае неудачи или true в случае успеха.
  ScriptMan.Refresh() --Обновить скрипт-лист.
  IP2Country.GetCountryCode(sIP) --Возвращает код страны для указанного ip или nil, если ip не действителен.
  IP2Country.GetCountryName(sIP) --Возвращает имя страны для указанного ip или nil, если ip не действителен.
  IP2Country.GetCountryName(tUser) --Возвращает имя страны для указанного пользователя.


По своей сути почти все эти функции связаны с управлением хабом, поэтому можно сказать, что почти нигде эти функции не используются!!!


Спасибо сказали:
Go to the top of the page
+Quote Post
sphinx
сообщение 29.10.2008, 18:44
Сообщение #4


Активный участник
***

Группа: Заблокированные
Сообщений: 87
Регистрация: 16.10.2008
Пользователь №: 805
Спасибо сказали: 35 раз




Цитата(Setuper @ 16.10.2008, 16:40) *
Очень актуальная тема exciting.gif

Метод быстрого перевода скриптов под API_1.

А нету ли метода быстрого перевода наоборот, скриптов API_1 для работы на API_2 ? exciting.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 29.10.2008, 20:34
Сообщение #5


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

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




Нету и не вижу смысла такой писать, потому как сейчас все скрипты будут писаться под API2 и данное руководство для тех кто всё ещё использует старый API. Скрипты под API2 надо полностью переписывать, а не использовать быстрые переводы.
Go to the top of the page
+Quote Post
Mol
сообщение 2.11.2008, 12:42
Сообщение #6


Продвинутый участник
****

Группа: Пользователи
Сообщений: 105
Регистрация: 21.8.2008
Из: Москва
Пользователь №: 404
Спасибо сказали: 1 раз




Цитата(Setuper @ 29.10.2008, 20:34) *
Нету и не вижу смысла такой писать, потому как сейчас все скрипты будут писаться под API2 и данное руководство для тех кто всё ещё использует старый API. Скрипты под API2 надо полностью переписывать, а не использовать быстрые переводы.


О4ень жаль. А не знаете где можно по4итать об этом ? (конвертирование/переводе скриптов API I под API II)
Go to the top of the page
+Quote Post
Setuper
сообщение 2.11.2008, 19:47
Сообщение #7


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

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




Во-первых, есть конвертер. Во-вторых, чтобы самому переводить скрипты нужно знать различия в api (смотри файлы Scripting-Interface.txt в новой и старой версиях PtokaX)
Go to the top of the page
+Quote Post
Mol
сообщение 2.11.2008, 21:04
Сообщение #8


Продвинутый участник
****

Группа: Пользователи
Сообщений: 105
Регистрация: 21.8.2008
Из: Москва
Пользователь №: 404
Спасибо сказали: 1 раз




Спасибо, понятно. Вообще стоит ли переходить на PtokaX 0.4.1.1 ?
Go to the top of the page
+Quote Post
Setuper
сообщение 2.11.2008, 21:09
Сообщение #9


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

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




Да, без условно стоит. Во-первых, быстрее работает, больше оптимизации, во-вторых, расширены возможности, в-третьих, сейчас все скриптописатели будут писать скрипты под API2.
Go to the top of the page
+Quote Post
Setuper
сообщение 8.11.2008, 13:36
Сообщение #10


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

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




Перезалил файл old_api.rar

Исправлена невозможность использовать функцию Core.GetPtokaXPath() при инициализации скрипта.


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 29.11.2008, 1:33
Сообщение #11


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

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




v 1.3.0.0 (файл перезалит в первой теме)

Fixed:

* ScriptMan.Restart()
* Core.Restart()
* TmrMan.AddTimer(nTimerInterval, sFunctionName)

Пофиксил функции рестартов (были перепутаны местами в старой версии)
В функции AddTimer параметр nTimerInterval задаём как обычно в милисекундах, однако, в целях оптимизации округление идет в меньшую сторону секунд, поэтому следует брать значения кратные секундам, иначе они в любом случае будут округляться до них.

Пример использования AddTimer:
Код
dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu")

function Core.OnStartup()
  TmrMan.AddTimer(1999,"Func1") -- округляется в меньшую сторону до 1000 (=1 сек)
  TmrMan.AddTimer(2000,"Func2") -- нечего округлять.  2000 (=2 сек)
end

function Func1()
  Core.SendToAll"Func1 -> 1999 мсек = 1 сек"
end

function Func2()
  Core.SendToAll"Func2 -> 2000 мсек = 2 сек"
end


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 18.12.2008, 21:44
Сообщение #12


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

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




v 1.4.0.0 (файл перезалит в первой теме)

Fixed:

* Исправлена ошибка функции Core.GetUser (Огромное спасибо prapor-у за указание на найденную ошибку.)

Added:

* Добавлена реализация функции Core.GetUserValue


Спасибо сказали:
Go to the top of the page
+Quote Post
morn
сообщение 30.12.2008, 6:05
Сообщение #13


Участник
**

Группа: Пользователи
Сообщений: 40
Регистрация: 30.12.2008
Пользователь №: 1 606
Спасибо сказали: 0 раз




Цитата
Метод быстрого перевода скриптов под API_1 (PtokaX 0.3.6.0 и ниже).


Респкт,Спасиба Бааальшое Сетаперу. Форум радует
Go to the top of the page
+Quote Post
Setuper
сообщение 12.2.2009, 18:35
Сообщение #14


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

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




v 1.5.0.0 (файл перезалит в первом топике)

Fixed:

* TmrMan.AddTimer(nTimerInterval)

Пофиксил функцию AddTimer с одним параметром. Раньше не работала функция Core.OnTimer().

Пример использования AddTimer:
Код
dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu")

function Core.OnStartup()
  TmrMan.AddTimer(2000)
end

function Core.OnTimer()
  Core.SendToAll"Hi All"
end


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 24.2.2009, 16:35
Сообщение #15


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

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




v 1.6.0.0 (файл перезалит в первом топике)

Added:

* Добавлена возможность использовать переведённый скрипт и на API2, то есть возможность, написав свой скрипт под API2 перевести его по данной методике и скрипт станет универсальным (под обе версии API).

Единственное для универсальности в начале переводимого скрипта нужно писать код:
Код
if frmHub then dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu")
elseif not Core then error("Запуск скрипта возможен только при запущенном хабе!",1)
else dofile(Core.GetPtokaXPath().."scripts/old_api.lu") end


Спасибо сказали:
Go to the top of the page
+Quote Post
BeSeR
сообщение 6.3.2009, 0:02
Сообщение #16


Участник
**

Группа: Пользователи
Сообщений: 30
Регистрация: 11.12.2008
Пользователь №: 1 392
Спасибо сказали: 0 раз




Большое спасибо Setuper'у все работает victory.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 6.3.2009, 0:17
Сообщение #17


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

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




Самое главное, что не просто работает, а то что скрипт за считанные секунды приобретает свойства "кроссапишности", то есть идёт на любом апи))
Go to the top of the page
+Quote Post
BeSeR
сообщение 6.3.2009, 0:22
Сообщение #18


Участник
**

Группа: Пользователи
Сообщений: 30
Регистрация: 11.12.2008
Пользователь №: 1 392
Спасибо сказали: 0 раз




Вот я перевел скрипт из API 2 под API 1,а он будет идти в API 2?Или нет? big_smile1.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 6.3.2009, 0:25
Сообщение #19


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

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




Да, будет. Если не будет, то отпиши сюда, будем разбираться почему не идёт))))
Go to the top of the page
+Quote Post
BeSeR
сообщение 6.3.2009, 18:51
Сообщение #20


Участник
**

Группа: Пользователи
Сообщений: 30
Регистрация: 11.12.2008
Пользователь №: 1 392
Спасибо сказали: 0 раз




Вот почему то скачал скрипт,перевел с API 2 на API 1 включаю а он мне присылает сообщение в ЛС :
Цитата
[20:46:43] <[Chat]Operator's> <•Экзекутор•> *** 03/06/09 20:46:42 В скрипте произошла ошибка: ...C++\хаб и архив,нетрогать!\хаб\scripts\Ekzekutor.lua:250: module 'socket' not found:
no field package.preload['socket']
no file 'C_Documents and Settings\Ильдар\Рабочий стол\DC++\хаб и архив,не трогать!\хаб\socket.lua'
no file 'C_Documents and Settings\Ильдар\Рабочий стол\DC++\хаб и архив,не трогать!\хаб\libs\socket.lua'
no file 'C_Documents and Settings\Ильдар\Рабочий стол\DC++\хаб и архив,не трогать!\хаб\scripts\libs\socket.lua'
no file 'C_Documents and Settings\Ильдар\Рабочий стол\DC++\хаб и архив,не трогать!\хаб\socket.dll'
no file 'C_Documents and Settings\Ильдар\Рабочий стол\DC++\хаб и архив,не трогать!\хаб\libs\socket.dll'
no file 'C_Documents and Settings\Ильдар\Рабочий стол\DC++\хаб и архив,нетрогать!\хаб\scripts\libs\socket.dll'

Почему?Не подскажите? unhappy.gif

А вот и ссылка где скачал: Ekzekutor
И когда этот скрипт включен он мне присылает сообщение:
Цитата
[2009-03-06 21:02] [21:02:49] <[Chat]Operator's> <•Экзекутор•> *** 03/06/09 21:02:49 В скрипте произошла ошибка: ...л/DC++/хаб и архив,нетрогать!/хаб/scripts/old_api.lu:23: attempt to index local 'a' (a nil value)
Go to the top of the page
+Quote Post

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

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts ВАЖНО: Topic has attachmentsВопросы Разработчикам Скриптов
вопросы по скриптам (мелкие вопросы)
1 049 Wariner 930 032 3.2.2019, 12:51 Посл. сообщение: MIKHAIL
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 43 214 21.3.2017, 17:31 Посл. сообщение: Alexey
No New Posts От: Вопросы Разработчикам Скриптов
От темы с ID: 173
0 MIKHAIL 4 008 23.1.2015, 0:56 Посл. сообщение: MIKHAIL
No New Posts От: Установка скриптов
От темы с ID: 5657
0 MIKHAIL 4 460 29.7.2014, 23:37 Посл. сообщение: MIKHAIL
No New Posts Установка скриптов
Нужна помощь по установке
2 _wRz_ 6 783 29.7.2014, 16:11 Посл. сообщение: Артём
No New Posts Метод взятия имени/пути скрипта
Метод взятия имени/пути этого скрипта в самом скрипте и других
2 Karumo 6 603 6.4.2014, 22:24 Посл. сообщение: Alexey
No new От: Вопросы Разработчикам Скриптов
От темы с ID: 173
29 Wariner 24 330 28.1.2014, 13:11 Посл. сообщение: Alexey
No New Posts Единая платформа для скриптов
Обсуждения вопроса создания единой платформы скриптов
5 Enyby 8 415 18.1.2012, 20:15 Посл. сообщение: Setuper
No new Topic has attachmentsПеределка скриптов
Прошу помощи
47 Fe(one)X 38 705 26.12.2011, 15:04 Посл. сообщение: Ksan
No new Topic has attachmentsВопросы Разработчикам Скриптов с SQL
вопросы по скриптам (мелкие вопросы)
101 Wariner 56 946 6.12.2011, 0:34 Посл. сообщение: Enyby
No New Posts Topic has attachmentsСкрипт сервисов перевода PtokaX API2
API2 переводчик translate.google.com
3 Phazeus 11 312 6.11.2011, 4:30 Посл. сообщение: MIKHAIL
No New Posts От: Переделка скриптов
От темы с ID: 4941
6 Ksan 9 048 12.8.2011, 11:33 Посл. сообщение: Ksan
No new ВАЖНО: Запросы Скриптов
Ваши идеи по разработке скриптов под HeXHuB
36 Setuper 46 883 16.5.2011, 9:40 Посл. сообщение: ANDRBEST
No New Posts Документация DBHub - Написание скриптов на Perl
0 Артём 7 331 20.10.2010, 18:08 Посл. сообщение: Артём
No New Posts Topic has attachmentsЗаготовки скриптов для PtokaX
Делимся болванками скриптов
4 alex82 11 179 11.10.2010, 2:49 Посл. сообщение: alex82

 



RSS Сейчас: 28.3.2024, 23:26