|
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
![]() ![]()
Сообщение
#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 файл из архива: ![]() 2). Открываем скрипт, написанный под API_2, и дописываем в начало скрипта код: Код if frmHub then dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu") (код изменён для использования под обе версии API)elseif not Core then error("Запуск скрипта возможен только при запущенном хабе!",1) else dofile(Core.GetPtokaXPath().."scripts/old_api.lu") end 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. :
В общем, находим в скрипте все вышеприведённые слова (если они есть в скрипте) и перед всеми найденными словами дописываем Core. Всё! Почти любой скрипт, написанный под API_2 будет у вас работать на API_1 (исключения составляют вещи, которые есть только в API_2 - после перевода по данной методике эти вещи будут просто игнорироваться скриптом (или возвращать nil) - это связанно с расширенной функциональностью API_2, по сравнению с API_1)!!! Обращаю внимание, что переведя по данной методике, скрипт будет работать вне зависимости от версии API, ОДНАКО таким макаром можно переводить только скрипты, написанные под API2 !!! Таким образом можно за пару минут самому перевести скрипт на API_1, даже больших размеров (что в некоторых случаях заняло бы для перевода несколько дней). А когда вы всё же будете готовы перейти на новые версии PtokaX, обратные изменения также не займут много времени! |
|
|
![]()
Сообщение
#2
|
|
![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз ![]() |
Прошу прощения за оффтоп, но хочется сказать огромное спасибо Setuper`у ибо он как всегда открывает для нас(во всяком случае для меня) всё новые и новые возможности и хитрости)))
PS: тема очень порадовала!!! |
|
|
![]() ![]()
Сообщение
#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) --Возвращает имя страны для указанного пользователя. По своей сути почти все эти функции связаны с управлением хабом, поэтому можно сказать, что почти нигде эти функции не используются!!! |
|
|
![]()
Сообщение
#4
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Заблокированные Сообщений: 87 Регистрация: 16.10.2008 Пользователь №: 805 Спасибо сказали: 35 раз ![]() |
|
|
|
![]()
Сообщение
#5
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Нету и не вижу смысла такой писать, потому как сейчас все скрипты будут писаться под API2 и данное руководство для тех кто всё ещё использует старый API. Скрипты под API2 надо полностью переписывать, а не использовать быстрые переводы.
|
|
|
![]() ![]()
Сообщение
#6
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 105 Регистрация: 21.8.2008 Из: Москва Пользователь №: 404 Спасибо сказали: 1 раз ![]() |
Нету и не вижу смысла такой писать, потому как сейчас все скрипты будут писаться под API2 и данное руководство для тех кто всё ещё использует старый API. Скрипты под API2 надо полностью переписывать, а не использовать быстрые переводы. О4ень жаль. А не знаете где можно по4итать об этом ? (конвертирование/переводе скриптов API I под API II) |
|
|
![]()
Сообщение
#7
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Во-первых, есть конвертер. Во-вторых, чтобы самому переводить скрипты нужно знать различия в api (смотри файлы Scripting-Interface.txt в новой и старой версиях PtokaX)
|
|
|
![]()
Сообщение
#8
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 105 Регистрация: 21.8.2008 Из: Москва Пользователь №: 404 Спасибо сказали: 1 раз ![]() |
Спасибо, понятно. Вообще стоит ли переходить на PtokaX 0.4.1.1 ?
|
|
|
![]()
Сообщение
#9
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Да, без условно стоит. Во-первых, быстрее работает, больше оптимизации, во-вторых, расширены возможности, в-третьих, сейчас все скриптописатели будут писать скрипты под API2.
|
|
|
![]()
Сообщение
#10
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Перезалил файл old_api.rar
Исправлена невозможность использовать функцию Core.GetPtokaXPath() при инициализации скрипта. |
|
|
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#12
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
v 1.4.0.0 (файл перезалит в первой теме)
Fixed: * Исправлена ошибка функции Core.GetUser (Огромное спасибо prapor-у за указание на найденную ошибку.) Added: * Добавлена реализация функции Core.GetUserValue |
|
|
![]()
Сообщение
#13
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 40 Регистрация: 30.12.2008 Пользователь №: 1 606 Спасибо сказали: 0 раз ![]() |
Цитата Метод быстрого перевода скриптов под API_1 (PtokaX 0.3.6.0 и ниже). Респкт,Спасиба Бааальшое Сетаперу. Форум радует |
|
|
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#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 |
|
|
![]()
Сообщение
#16
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 30 Регистрация: 11.12.2008 Пользователь №: 1 392 Спасибо сказали: 0 раз ![]() |
Большое спасибо Setuper'у все работает
![]() |
|
|
![]()
Сообщение
#17
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Самое главное, что не просто работает, а то что скрипт за считанные секунды приобретает свойства "кроссапишности", то есть идёт на любом апи))
|
|
|
![]()
Сообщение
#18
|
|
![]() Участник ![]() ![]() Группа: Пользователи Сообщений: 30 Регистрация: 11.12.2008 Пользователь №: 1 392 Спасибо сказали: 0 раз ![]() |
Вот я перевел скрипт из API 2 под API 1,а он будет идти в API 2?Или нет?
![]() |
|
|
![]()
Сообщение
#19
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Да, будет. Если не будет, то отпиши сюда, будем разбираться почему не идёт))))
|
|
|
![]()
Сообщение
#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' Почему?Не подскажите? ![]() А вот и ссылка где скачал: 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)
|
|
|
![]() ![]() |
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
![]() |
ВАЖНО: ![]() вопросы по скриптам (мелкие вопросы) |
1 049 | Wariner | 973 510 | 3.2.2019, 12:51 Посл. сообщение: MIKHAIL |
![]() |
ВАЖНО: ![]() |
26 | Setuper | 44 687 | 21.3.2017, 17:31 Посл. сообщение: Alexey |
![]() |
От: Вопросы Разработчикам Скриптов От темы с ID: 173 |
0 | MIKHAIL | 4 229 | 23.1.2015, 0:56 Посл. сообщение: MIKHAIL |
![]() |
От: Установка скриптов От темы с ID: 5657 |
0 | MIKHAIL | 4 692 | 29.7.2014, 23:37 Посл. сообщение: MIKHAIL |
![]() |
Установка скриптов Нужна помощь по установке |
2 | _wRz_ | 7 151 | 29.7.2014, 16:11 Посл. сообщение: Артём |
![]() |
Метод взятия имени/пути скрипта Метод взятия имени/пути этого скрипта в самом скрипте и других |
2 | Karumo | 6 905 | 6.4.2014, 22:24 Посл. сообщение: Alexey |
![]() |
От: Вопросы Разработчикам Скриптов От темы с ID: 173 |
29 | Wariner | 25 494 | 28.1.2014, 13:11 Посл. сообщение: Alexey |
![]() |
Единая платформа для скриптов Обсуждения вопроса создания единой платформы скриптов |
5 | Enyby | 8 841 | 18.1.2012, 20:15 Посл. сообщение: Setuper |
![]() |
![]() Прошу помощи |
47 | Fe(one)X | 40 445 | 26.12.2011, 15:04 Посл. сообщение: Ksan |
![]() |
![]() вопросы по скриптам (мелкие вопросы) |
101 | Wariner | 60 771 | 6.12.2011, 0:34 Посл. сообщение: Enyby |
![]() |
![]() API2 переводчик translate.google.com |
3 | Phazeus | 11 708 | 6.11.2011, 4:30 Посл. сообщение: MIKHAIL |
![]() |
От: Переделка скриптов От темы с ID: 4941 |
6 | Ksan | 9 480 | 12.8.2011, 11:33 Посл. сообщение: Ksan |
![]() |
ВАЖНО: Запросы Скриптов Ваши идеи по разработке скриптов под HeXHuB |
36 | Setuper | 48 657 | 16.5.2011, 9:40 Посл. сообщение: ANDRBEST |
![]() |
Документация DBHub - Написание скриптов на Perl | 0 | Артём | 7 566 | 20.10.2010, 18:08 Посл. сообщение: Артём |
![]() |
![]() Делимся болванками скриптов |
4 | alex82 | 11 585 | 11.10.2010, 2:49 Посл. сообщение: alex82 |
![]() |
Сейчас: 8.9.2024, 2:28 |