Версия для печати темы
MyDC.ru _ Развлекательные скрипты [PtokaX] _ Скрипт Действий
Автор: Infernus-pro 21.6.2008, 15:16
Вот выложу скрипт Действий для PtokaX 0.3.6.0 и для PtokaX 0.4.0.0 и выше.
Автор: brigadir 25.6.2008, 14:20
Цитата(Infernus-pro @ 21.6.2008, 23:16)
Вот выложу скрипт Действий для PtokaX 0.3.6.0 и для PtokaX 0.4.0.0 и выше.
Вот такую ошибку выдает:
PtokaX 0.4.1.1\scripts\Actions_newapi.lua:321: bad argument #1 to 'len' (string expected, got nil)
как исправить?
Автор: Infernus-pro 25.6.2008, 16:36
Вот в этой строке:
Цитата
Core.SendToNick(tUser.sNick,"$UserCommand 1 2 *Действия*\\• Бабруйск\\• Каменты\\• Тема$<%[mynick]> !экшн > тема нераскрыта, %[nick]|")
--[[ ]]--
почти в самом конце скрипт убери:
Цитата
--[[ ]]--
Попробуй так.
Автор: rus.region78 4.7.2008, 18:33
Ошибка так и неискоренилась :"[19:15] Синтаксис C:\PtokaX\scripts\008_Actions.lua:320: bad argument #1 to 'len' (string expected, got nil)" как решить проблему?
ВО! Вроде нашёл :Отсутствовало .sNick
Код
if ((cmd=="!action") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then
Core.SendToUser(tUser.sNick,"<"..SetMan.GetString(21).."> Недостаточно прав для выполнения команды")
проверьте, может ошибаюсь...
Автор: Gangster 4.7.2008, 19:28
поробуй мой под 0.4.0.0 и выше
Автор: rus.region78 4.7.2008, 19:57
Цитата(Gangster @ 4.7.2008, 20:28)
поробуй мой под 0.4.0.0 и выше
УБОЙНО!!!
Автор: Gangster 4.7.2008, 19:58
пашет нормально?
Автор: rus.region78 4.7.2008, 20:07
ога, без ошибок, сенькс!!! :smile2:
Автор: Инкогнито 8.7.2008, 19:31
решил вот тож своими действиями поделится под новый апи, тестил на птохе 0.4.1.1 все корректно работает
Автор: СТУДЕНТ 5.9.2008, 8:38
Привет Infernus-pro у меня к тебе вопрос:
Как моно сделать что бы всё действие воспроизводилось вот так примерно:
>> ††(СТУДЕНТ)††_ОдиноКиЙ_АнгеЛ_ сказал _d(*_*)b_: Привет <<
А так мне не нравица
## ††(СТУДЕНТ)††_ОдиноКиЙ_АнгеЛ_ сказал _d(*_*)b_: Привет ##
Автор: Sephiroth_Lukaw 5.9.2008, 10:50
Цитата(СТУДЕНТ @ 5.9.2008, 8:38)
Как моно сделать что бы всё действие воспроизводилось вот так примерно:
>> ††(СТУДЕНТ)††_ОдиноКиЙ_АнгеЛ_ сказал _d(*_*)b_: Привет <<
А так мне не нравица
## ††(СТУДЕНТ)††_ОдиноКиЙ_АнгеЛ_ сказал _d(*_*)b_: Привет ##
Хоть вопрос и не мне был задан...
Находим:
Код
if cmd == "!экшн" then
Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
return true
end
if cmd == "!action" then
Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<")
return true
end
Заменяем, на:
Код
if cmd == "!action" then
Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
return true
end
if cmd == "!экшн" then
Core.SendToAll(">> "..tUser.sNick.." "..S1.." <<")
return true
end
или, просто находим
Код
if cmd == "!экшн" then
Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
return true
end
И заменяем символы "##" на то что нам нужно, например на "<<"
Автор: СТУДЕНТ 5.9.2008, 15:10
Вот выдал мне
Синтаксис C:\хаб\scripts\Меню Действие+.lua:621: bad argument #1 to 'len' (string expected, got nil)
621 строка S1 = string.sub(S1,1,string.len(S1)-1)
в чём проблема?
Автор: DIMANES 10.9.2008, 11:17
Инкогнито: давно искал спасибо!
Автор: =TuRoK= 13.9.2008, 12:24
Вот ещё скрипт действий,для API2
Автор: -AS- 15.9.2008, 9:46
Вот еще один вариант Действий под API2
Автор: Perspect 25.10.2008, 15:14
Цитата(=TuRoK= @ 13.9.2008, 11:24)
Вот ещё скрипт действий,для API2
Пишет: Синтаксис cannot open C Program Files\PtokaX 0.4.1.1\scripts\????????.lua: No such file or directory
Где в этом скрипте путь указать?
Автор: Setuper 25.10.2008, 15:29
попробуй переименовать файл, записав имя латинскими буквами
Автор: Perspect 25.10.2008, 18:21
Спасибо, заработало. Так я другие подобнозванные скрипты переименовывал, а этот решил оставить в оригинале и тем самым создал себе проблему
Автор: Mol 2.11.2008, 23:27
За скрипты всем спасибо)) Я думаю можно уже общатся без клавы...одними кликами.. Авторы молодцы !!! Спасибо !!!
Автор: Sephiroth_Lukaw 2.11.2008, 23:34
Цитата(Mol @ 3.11.2008, 2:27)
Я думаю можно уже общатся без клавы...одними кликами..
ыыы) ещё Экранная Клавиатура есть)))
Автор: Mol 2.11.2008, 23:39
За4ем ? Когда у нас есть такой скрипт))
Автор: ILYA_Zzz 6.11.2008, 3:51
Приветствую!
Такой вопрос, почему Actions не работает если запущен HUBBABOT? т.е. запускается без ошибок, но на хабе строки в контекстном меню нет =( Последовательноть запуска скриптов не влияет, стоит запуститить HUBBABOT при работающих "действиях" и обновить соединение как тутже пропадает из меню...
Автор: Mol 6.11.2008, 7:16
Их несовместимость.
Автор: ILYA_Zzz 7.11.2008, 4:04
А как совместить хуббу с другими анологичными скриптами, будь то снежки или ещё ченить в этом роде?
Автор: Wariner 7.11.2008, 8:56
Цитата(ILYA_Zzz @ 7.11.2008, 4:04)
А как совместить хуббу с другими анологичными скриптами, будь то снежки или ещё ченить в этом роде?
Единственное решение поставить хуббу в самый низ в списке скриптов! Если это не поможет то не поможет ничего)))
Автор: Infernus-pro 30.12.2008, 23:35
Цитата
Такой вопрос, почему Actions не работает если запущен HUBBABOT? т.е. запускается без ошибок, но на хабе строки в контекстном меню нет
Цитата
А как совместить хуббу с другими анологичными скриптами, будь то снежки или ещё ченить в этом роде?
У меня все работает, и действия и снежки и другие скрипты. Хуббабот стоит первым в списке.
Автор: Setuper 2.1.2009, 20:11
ну так поставь хуббу посленим
Автор: Serx 7.1.2009, 11:23
Цитата(=TuRoK= @ 13.9.2008, 14:24)
Вот ещё скрипт действий,для API2
Меню скрипта есть и в контекстном меню юзера (при нажатии на ник правой кнопкой мыши) так и в контекстном меню хаба (при нажатии правой кнопкой мыши на вкладку хаба в клиенте (Flylink))
Как его убрать из контекстного меню хаба?
Автор: Setuper 7.1.2009, 11:46
скорее всего в скрипте надо везде заменить:
Код
$UserCommand 1 3
на
Код
$UserCommand 1 2
Автор: Serx 7.1.2009, 13:02
Да, спасибо
Автор: MrPRyT 12.1.2009, 22:00
дай те под апи 1 кто-нить норм действия плз
Автор: Wariner 12.1.2009, 22:39
А чем тебя не устраивают действия из первого поста?!
Автор: Артём 20.1.2009, 19:01
Помогите исправить в скрипте ошибку...
ошибка: Actions_newapi.lua:329: bad argument #1 to 'len' (string expected, got nil)
сам скрипт:
Actions_newapi.lua ( 48.09 килобайт )
: 17
Автор: MrPRyT 27.1.2009, 21:56
Вот держите нормальные действия под апи 1
Автор: dmvn 21.3.2009, 10:27
У этого скрипта есть один недостаток. точнее, два. чтобы добавить или удалить действия, надо править код; и сообщения одинаковые, независимо от рода ника пользователя (М/Ж).
Предлагаю всем луа-мастерам контест на создание версии скрипта с грамотной поддержкой какого-либо языка (русского, английского, или любого другого).
Особых ограничений на реализацию нет, а требование одно и простое. Например, в базе действий написано
Код
%user послал %nick на три буквы
если ник -- "Вася", он пишет, скажем
Код
## dmvn послал Васю на три буквы ##
При этом можно снабжать переменные выражения в базе указанием падежей, склонений и тд (хотя можно пойти дальше и попробовать распознавать уже сам текст перед ником и после него, но это уже высший пилотаж).
как это сделать -- решать уже вам, лишь бы было удобно.
разумеется, свою версию тоже предоставлю, когда она будет готова.
Автор: Wariner 21.3.2009, 10:47
Ну с русскими никами это понятно а с английскими будет
Код
## Вася послал dmvnа на три буквы ##
или
Код
## Вася послал dmvn`а на три буквы ##
?
тоже как то не по русски
Автор: Cjay 16.4.2009, 15:56
народ, а можно ли переделать скрипт этот что бы при выполнении этих действий в личке, эти самые действия и отсылались туда?
Код
ChatArrival = function(user,data)
Core.GetUserAllData(user)
local s,e,cmd, S1= string.find(data,"%b<>%s(%S+)%s(.+)")
if cmd == "/me" then
S1 = string.sub(S1,1,string.len(S1)-1)
Core.SendToAll("* "..user.sNick.." "..S1)
return true
end
local s,e,cmd, S1= string.find(data,"%b<>%s(%S+)%s(.+)")
if cmd == "+me" then
S1 = string.sub(S1,1,string.len(S1)-1)
Core.SendToAll("* "..user.sNick.." "..S1)
return true
end
local s,e,cmd, S1= string.find(data,"%b<>%s(%S+)%s(.+)")
if cmd == "!экшн" then
S1 = string.sub(S1,1,string.len(S1)-1)
Core.SendToAll("* "..user.sNick.." "..S1)
return true
end
на что нужно поменять?
Автор: Wolfrider 31.5.2009, 18:40
Есть вопрос по действиям. Когда был на PtokaX 3.6.0 действия выделялись жирным шрифтом и выглядели примерно так:
[19:25:29] *Wolfrider передает всем огромный привет!
Сейчас перешел на PtokaX 4.0.0 , переписал скрипт, но теперь жирным шрифтом не выделяется и выглядит примерно так:
[19:25:29] <Wolfrider> *передает всем огромный привет!
Именно перестановка этого значка "*" вызывает у меня подозрения, что из-за него действия перестали выделяться жирным шрифтом.
Извеняюсь за нубский вопрос, но я в этом новичек.
Автор: Sekretchik 2.7.2009, 22:54
Хлопцы, подскажите, почему то не хочет работать на Ptokax 0.4.1.1 LUA 1.5.3 API 2
Автор: Setuper 3.7.2009, 13:48
Ошибки?
Автор: Sekretchik 3.7.2009, 20:36
Ошибок нет, работать не хочет
Автор: D_e_n_i_s 15.7.2009, 18:36
Вообщем у меня бред какой-то. Не знаю как исправить. В действия показывает строки только с %[line:Сказать юзеру...]| другие - нет. В чём проблема?
Автор: Wariner 15.7.2009, 19:13
скорее всего ты смотришь на вкладке хаба. а все остальные располагаются на юзерах(правой кнопкой)
Автор: Артём 15.7.2009, 19:30
Sekretchik
Вот держи теперь работает,Исправил,проверил,Работает))
actions.lua ( 60.7 килобайт )
: 104
P.S.Исправил пару мелочей,перезалил
Автор: Sekretchik 11.8.2009, 22:02
Низкий тебе Земной поклон Артем От всей Земли Русской, Дай Вам боже всех Благ Цивилизации IV
Посмотрю на днях, что я там намудрил такого...
Автор: truth 18.9.2009, 18:57
Кто может добавить опцию "Время, до вторичной отправки действия"? Дабы не было флуда - одно действие раз в 5 минут (хотя бы).
Буду очень признателен и наверное не только я
Автор: Alexey 19.9.2009, 2:54
Держи, API2:
Actions_lx.lua ( 36.64 килобайт )
: 49
За основу взял первый попавшийся скрипт действий — думаю, это не принципиально, фразы заменить любой сможет. Заодно слегка подрихтовал его напильничком. Время задаётся в переменной nDelay в секундах, по умолчанию, как и заказывал, — 5 минут.
PS: Тот-же вариант без запрошенных ограничений по времени:
Actions_lx2.lua ( 36.37 килобайт )
: 35
Автор: truth 19.9.2009, 16:15
Alexey, большое спасибо.
Решил немного изменить фразы и их вывод.. пишет ошибку "Actions.lua:226: chunk has too many syntax levels".
Помогите подправить, что бы работало..
Автор: Alexey 19.9.2009, 17:17
Не зря-же у меня строки были разбиты на два блока размером менее 200 строк каждый.
Автор: truth 19.9.2009, 23:40
Цитата
local sActCmd1 = "!action"
local sActCmd2 = "!экшн"
Эти параметры обязательно должны быть разными?
Добавил "local ucstr2 =", теперь выдает Actions.lua:216: unexpected symbol near 'local'
Где и что я упустил? :(
Автор: Andrew Frost 20.9.2009, 1:08
Есть же на форуме скрипт действий,где вполне нормальный код.Таймер и там можно вставить.Поищи... P.S: В оригинале две разные переменные команд
Код
local sActCmd1 = "!action" --нумбер раз
local sActCmd2 = "!экшн" --нумбер два
Автор: Alexey 20.9.2009, 1:29
Цитата(truth @ 20.9.2009, 0:40)
Эти параметры обязательно должны быть разными?
В первом попавшемся мне варианте действий это были именно 2 разные команды с чуть разным форматом вывода текста. Можно выкинуть любую, но только везде выкидывай тогда.
Цитата(truth @ 20.9.2009, 0:40)
Добавил "local ucstr2 =", теперь выдает Actions.lua:216: unexpected symbol near 'local'
Где и что я упустил? :(
Не забывай прилагать код, а то даже не смотря на описание произведённых изменений, бывает достаточно тяжело понять, что именно ты сделал.
Скорее всего, ты не удалил .. в конце предыдущей строки.
PS: Вот, переделал на твой манер, так лучше?
Actions.lua ( 54.03 килобайт )
: 42PPS: Если будешь добавлять ещё действий - лучше третьим блоком.
Автор: truth 20.9.2009, 15:17
Alexey, спасибо за помощь и понимание. Этого я и хотел.
Автор: Sergey613 27.9.2009, 9:25
Проблемка:
Синтаксис C:\PtokaX\scripts\Actions_newapi.lua:315: bad argument #1 to 'find' (string expected, got nil)
Скрипт грузиться, даже работает можно выбрать что нить и ведь выдаёт, а вот после того как выдаст, вылетает (галка пропадает).
Автор: Nickolya 27.9.2009, 17:51
Добавь перед
Код
if ((cmd=="!экшн") or (cmd=="!action")) and (tProfiles[tUser.iProfile]==0) then
вот такой код:
Код
if not cmd then
return
end
Автор: ника 1.3.2010, 8:35
вот решила поделиться своей доработкой.убрала из скрипта много пошлого..может кому понравится
Автор: Kocha 11.4.2010, 15:17
подскажите пожайлуста !!! когда я глушу пользователя он может почему то отсылать действия как это исправить ?
Автор: X-Sky 11.4.2010, 16:17
Kocha, поставь скрипт действий ниже скрипта заглушек в списке
Автор: prokazzza 22.6.2010, 12:00
Артём
Цитата(Артём @ 15.7.2009, 21:30)
SekretchikВот держи теперь работает,Исправил,проверил,Работает))
actions.lua ( 60.7 килобайт )
: 104P.S.Исправил пару мелочей,перезалил
Вылетает с ошибкой:
[13:59] Синтаксис C:\0.4.1.2\scripts\actions.lua:28: bad argument #1 to 'len' (string expected, got nil)
Может есть решение проблемы?
Автор: Nickolya 22.6.2010, 12:07
Странный код там...
Меняй
Код
ChatArrival = function(tUser,sData)
local sMsg = string.find(sData,"%b<>%s(%S+)%s(.+)")
if (cmd=="!me") and (tProfiles[tUser.iProfile]==0) then
Core.SendToUser(tUser,"<"..sBot.."> Недостаточно прав для выполнения команды")
return true
end
sMsg = string.sub(sMsg,1,string.len(sMsg)-1)
if cmd == "!me" then
Core.SendToAll("## "..tUser.sNick.." "..sMsg.." ##")
return true
end
end
на
Код
ChatArrival = function(tUser,sData)
local cmd, sMsg = sData:match("^%b<>%s+%p(%S+)%s+(.+)|$")
if cmd and sMsg then
cmd = cmd:lower()
if cmd == "me" then
if tProfiles[tUser.iProfile]==0 then
Core.SendToUser(tUser,"<"..sBot.."> Недостаточно прав для выполнения команды")
else
Core.SendToAll("## "..tUser.sNick.." "..sMsg.." ##")
end
return true
end
end
end
Автор: INTROVERT 3.7.2010, 20:51
Доброго времени суток.
Как бы мне сделать чтобы некоторые фразы выводились общем чате, но исключительно для пользователя?
Т.е. чтоб команда
Core.SendToNick(user.sNick,"$UserCommand 1 2 Действия\\Приветствие\\Привет$<%[mynick]> +me Привет! %[nick]|")
вывела "Привет" в общем чате только для пользователя, выбравшего команду.
Автор: Артём 3.7.2010, 21:19
был на форуме где-то такой скрипт, автор Sephiroth_Lukaw
P.S Ошибся, у него скрипт http://mydc.ru/topic848.html?hl=Sephiroth_Lukaw не так как ты хочешь делает
Автор: Alexey 3.7.2010, 22:00
В скрипте Actions_lx2.lua из http://mydc.ru/topic54.html?view=findpost&p=21060 этой темы достаточно заменить строку
Цитата
Core.SendToAll(tActions[sCmd][1]..tUser.sNick.." "..sMsg..tActions[sCmd][2])
на
Цитата
Core.SendToUser(tUser, tActions[sCmd][1]..tUser.sNick.." "..sMsg..tActions[sCmd][2])
Автор: RAND(i)M 4.9.2010, 17:24
Будет такой вопрос по этому скрипту и по меню вообще.
Имеет ли смысл посылать пункты меню не по нескольку раз
Код
Core.SendToNick(tUser.sNick,"$UserCommand 1 2 бла-бла-бла #124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 2 бла-бла-бла #124;")
Core.SendToNick(tUser.sNick,"$UserCommand 1 2 бла-бла-бла #124;")
А единожды?
Код
Core.SendToNick(tUser.sNick,"$UserCommand 1 2 бла-бла-бла #124;|"..
"$UserCommand 1 2 бла-бла-бла #124;|"..
"$UserCommand 1 2 бла-бла-бла #124;")
Или никакой разницы в производительности от этого нет? Всё-таки меню огромное.
Автор: Nickolya 4.9.2010, 18:23
Естественно разница большая, лучше соединять меню вообще при старте скрипта, очищать память и юзеру отправлять уже готовую строку, в ней, если надо, можно сделать шаблоны для замены через gsub, тогда это максимально оптимизирует скрипт. Если вы собираете строку по маленьким кусам - это плохо, многоразовый вызов одной функции - тоже не ахти. Да и лучше использовать
Код
Core.SendToUser(tUser
вместо
Код
Core.SendToNick(tUser.sNick
Это тоже некого рода оптимизация скрипта.
Т.е. лучший для вас вариант такой
Код
-- при старте
sMenu = "$UserCommand 1 2 бла-бла-бла #124;|"..
"$UserCommand 1 2 бла-бла-бла #124;|"..
"$UserCommand 1 2 бла-бла-бла #124;"
-- при заходе клиента
Core.SendToUser(tUser, sMenu)
А еще лучше сделать отправку меню по запросу или через некоторое время после захода пользователя, это дает некую разгрузку и клиенту юзера и хабу.
Автор: Alexey 5.9.2010, 3:42
Цитата(Nickolya @ 4.9.2010, 19:23)
Да и лучше использовать
Код
Core.SendToUser(tUser
вместо
Код
Core.SendToNick(tUser.sNick
Это тоже некого рода оптимизация скрипта.
Нику посылается быстрее, проверено.
Год назад в этой теме выкладывал http://mydc.ru/ipb.html?act=Attach&type=post&id=4512, но кактус такой вкусный...
Автор: Setuper 5.9.2010, 9:44
Ага, как оказалось в птохе отсылка нику происходит быстрее, чем отсылка юзеру, хотя это и не логично с точки зрения здравого смысла, так как по идее отсылка пользователю должна происходить мгновенно, а отсылка нику должна происходить через поиск на хабе пользователя по нику и дальнейшую отсылку найденному пользователю.
Однако в птохе отсылка пользователю сопровождается также поиском ника этого пользователя, то есть делается проверка того, что пользователь с таким ником действительно существует (кроме этого есть ещё рад проверок). Проверка ника конечно нужная, но её можно было сделать и без поиска ника, а использовать некий скрытый флаг во внутренней структуре пользователя (отсутствие флага говорило бы о некорректности пользователя) и, таким образом, можно было бы сделать отсылку пользователю мгновенной, какой по идее она и должны быть. К сожалению в птохе это не продумано, как и не продумано заполнение полей таблицы пользователя, вместо которого следовало бы использовать метатаблицу.
Автор: Алекс-Д 13.9.2010, 14:51
Цитата(Gangster @ 4.7.2008, 21:28)
поробуй мой под 0.4.0.0 и выше
попробовал..
прикольно! а как убрать решётки в каждой фразе? они по-моему мешают..
Автор: Saymon 13.9.2010, 14:56
А ты скрипт открой. Блин, когда научитесь самые простые проблемы решать самостоятельно??!!!!
Автор: Алекс-Д 13.9.2010, 15:33
да я нуб в этом.. я тока вчера узнал про Notepad++, а хабом вторую неделю занимаюсь...
Автор: Saymon 13.9.2010, 15:35
Код
if cmd == "!экшн" then
Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
return true
end
Автор: Алекс-Д 13.9.2010, 15:37
Цитата(Алекс-Д @ 13.9.2010, 17:33)
да я нуб в этом..
я тока вчера узнал про Notepad++, а хабом вторую неделю занимаюсь...
скрипт открыл.. вижу там в каждой фоазе стоит #. их надо из каждой фразы уберать? или есть способ сразу все убрать решётки?
Автор: Saymon 13.9.2010, 15:39
Найди то, что я тебе привёл выше. И в
Код
Core.SendToAll("## "..tUser.sNick.." "..S1.." ##")
убери
Автор: Алекс-Д 13.9.2010, 15:43
уберать всю строку или только #?
Всё, разобрался уже.. спс!
Автор: Saymon 13.9.2010, 15:49
ну если тебе убрать # то....
Автор: Алекс-Д 13.9.2010, 16:03
Saymon, убрал # , всё работает ок! спс!