Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
11.1.2009, 4:05
Сообщение
#201
|
|
Освоившийся участник Группа: Пользователи Сообщений: 307 Регистрация: 11.7.2008 Пользователь №: 173 Спасибо сказали: 31 раз |
В начало функции ставь, а не в конец.
У тебя там переменная "sType" используется из фаила настроек. Так что, либо в начале функции, либо за её пределами. Цитата function OnStartup() Вот оно и отключение, сразу после запуска, при запущенной PtokaX, без вывода ошибок(хотя, должно в оп-чат отсылаться).
... if (sType ~= "sIP" and sType ~= "sNick") or not sType then Core.SendToOpChat("<"..SetMan.GetString(21).."> В скрипте KarmaBot обнаружена ошибка!!! Проверьте параметр sType!!! Его значени должно быть равно sIP или sNick") ScriptMan.StopScript("KarmaBot.lua") end ... end |
|
|
11.1.2009, 17:06
Сообщение
#202
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
эх как всегда я на ровном месте.... Спасибо
|
|
|
11.1.2009, 17:22
Сообщение
#203
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 1 Регистрация: 10.1.2009 Пользователь №: 1 765 Спасибо сказали: 0 раз |
Подскажите, если кто знает php, как будет выелядеть код ниже в LUA с использованием библиотек PXLuaSocket?
Код $file = file("http://mysite.org/$QUERY_STRING"); $file = @implode("", $file); echo "$file"; Спасибо! |
|
|
11.1.2009, 17:37
Сообщение
#204
|
|
Освоившийся участник Группа: Пользователи Сообщений: 307 Регистрация: 11.7.2008 Пользователь №: 173 Спасибо сказали: 31 раз |
Код http = require("socket.http")
file = http.request("http://mysite.org/"..QUERY_STRING) // функция file - возвращяет результат в виде массива, http.request - получает в виде строки, так что использовать альтернативу функции implode в lua - не нужно. QUERY_STRING - Нужно определить. Core.SendToAll(file) //Отправит в чат(просто SendToAll- если API 1, либо использовать print - если речь идёт не о PtokaX) |
|
|
12.1.2009, 20:05
Сообщение
#205
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
наткнулся тут на старые скрипты во всех есть DataArrival(user, data) Я так понимаю это сегодняшняя ChatArrival()?
|
|
|
12.1.2009, 21:00
Сообщение
#206
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Правильно думаешь
|
|
|
14.1.2009, 0:02
Сообщение
#207
|
|
Активный участник Группа: Пользователи Сообщений: 68 Регистрация: 26.8.2008 Из: Екатеринбург Пользователь №: 430 Спасибо сказали: 2 раза |
А интересует напосредственно пропуск команды в чат... Как этого НЕ допустить? Я когда-то пробовал на API1 и у меня получилось исключить пропуск команды +radio для G-Bot в чат, на API2 не смог, да и не помню как на первую прописывал, думаю эта информация пригодится многим
|
|
|
14.1.2009, 0:06
Сообщение
#208
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
для api1: return 1
для api2: return true |
|
|
15.1.2009, 19:56
Сообщение
#209
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
где ошибка в следующем коде. Глаз замылился не могу понять...
Код local _,_,RateNumber,One,Two,Three,Four,Five,Six = string.find(Rate, "%s*(%d+)%(%s*(%S+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)")
|
|
|
15.1.2009, 20:58
Сообщение
#210
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
вроде всё верно, смотря что надо захватывать)))
пример строки для захвата: Код " 473( word 7634 3847 3478 5365 998"
|
|
|
15.1.2009, 21:07
Сообщение
#211
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
вот так работает
Код local _,_,RateNumber = string.find(Rate, "%s*(%d+)") local _,_,One = string.find(Rate, "%s*%d+%(%s*(%S+)") local _,_,Two = string.find(Rate, "%s*%d+%(%s*%S+%s+(%d+)") local _,_,Three = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+(%d+)") local _,_,Four = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+%d+%s+(%d+)%") local _,_,Five = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+%d+%s+%d+%s+(%d+)") local _,_,Six = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+%d+%s+%d+%s+%d+%s+(%d+)") вот так нет Код local _,_,RateNumber,One,Two,Three,Four,Five,Six = string.find(Rate, "%s*(%d+)%(%s*(%S+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)") в последнем варианте все параметры равны nil |
|
|
15.1.2009, 21:18
Сообщение
#212
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Не может такого быть! Всё работает и тот и другой код:
Код local Rate=" 473( word 7634 3847 3478 5365 998" function OnStartup() local _,_,RateNumber = string.find(Rate, "%s*(%d+)") local _,_,One = string.find(Rate, "%s*%d+%(%s*(%S+)") local _,_,Two = string.find(Rate, "%s*%d+%(%s*%S+%s+(%d+)") local _,_,Three = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+(%d+)") local _,_,Four = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+%d+%s+(%d+)") local _,_,Five = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+%d+%s+%d+%s+(%d+)") local _,_,Six = string.find(Rate, "%s*%d+%(%s*%S+%s+%d+%s+%d+%s+%d+%s+%d+%s+(%d+)") Core.SendToAll(tostring(RateNumber).." "..tostring(One).." "..tostring(Two).." "..tostring(Three).." "..tostring(Four).." "..tostring(Five).." "..tostring(Six)) end Код local Rate=" 473( word 7634 3847 3478 5365 998"
function OnStartup() local _,_,RateNumber,One,Two,Three,Four,Five,Six = string.find(Rate, "%s*(%d+)%(%s*(%S+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)") Core.SendToAll(tostring(RateNumber).." "..tostring(One).." "..tostring(Two).." "..tostring(Three).." "..tostring(Four).." "..tostring(Five).." "..tostring(Six)) end |
|
|
15.1.2009, 22:02
Сообщение
#213
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
А что значат буквы RC в версиях программ(скриптов)?
|
|
|
15.1.2009, 22:17
Сообщение
#214
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
RC - сокращение от Release Candidate. Дословно переводится как релиз-кандидат, по русски говорять предварительная версия
В предыдущем вопросе разобрался? Что не так у тебя было? |
|
|
15.1.2009, 23:03
Сообщение
#215
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Нет пока не разобрался.... Почему то когда начинаю писать скрипты работающие с приватом начинаются проблемы((((
Код if tStatAR[tUser.sNick].Type == "ReceRates" then local _,_,RateMoney = string.find(sData, "$To:%s%S+%sFrom:%s%S+%s$%S+%s+(%d+)") local _,_,Rate = string.find(sData, "$To:%s%S+%sFrom:%s%S+%s$%S+%s+%d+%s+(.*)") Core.SendPmToUser(tUser, sBot, "sss: "..Rate) local _,_,RateNumber,One,Two,Three,Four,Five,Six = string.find(Rate, "%s*(%d+)%s+%(%s*(%S+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)%s+(%d+)") if ((To == sBot) and (Rate) and (RateMoney)) then Core.SendPmToUser(tUser, sBot, RateNumber) ... ввожу Цитата 100 2(10 11) до последнего часа думал что я понимаю захваты и рег выражения..... Код local _,_,a,b,c,d = string.find(msg,"(%d+)%s*%S+%s*(%d+)%s*%S+%s*(%d+)%s*%S+%s*(%d+)") ввожу Цитата 10.2.101 результат Цитата a=10 b=2 c=1 d=1 Что я опять делаю не так? PS: видать последние мозги сессия выбила xD))))))))))))))) |
|
|
15.1.2009, 23:21
Сообщение
#216
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Всё верно. Не вижу ничего удивительного:
Код (%d+)%s*%S+%s*(%d+)%s*%S+%s*(%d+)%s*%S+%s*(%d+) надеюсь так понятнее?(10)%s*.%s*(2)%s*.%s*(1)%s*0%s*(1) я так понимаю, что ты хочешь сделать антирекламу? |
|
|
16.1.2009, 15:53
Сообщение
#217
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
да я пока не хочу делать готовый скрипт, токо подбираю варианты....
по поводу цифр в скобках я и так понял, непонятно почему %d+ он находит только одну цифру а не "один или более символов" Или он стремится всем переменным присвоить значение? |
|
|
16.1.2009, 16:32
Сообщение
#218
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Так как это функция find, то название говорит само за себя. Эта функция пытается найти совпадения в строке с указанным регулярным выражением. %d+ означает 1 или более цифр. Функция перебирает все возможные варианты до тех пор, пока не найдёт какое-то совпадение. Сначала функция проверяет конечно же такой вариант: (10)%s*.%s*(2)%s*.%s*(101)%s*%S+%s*(%d+). Но в данном варианте в строке не найдётся совпадений из-за "хвоста": %S+%s*(%d+). Поэтому продолжается дальнейший перебор вариантов, подходящих под это регулярное выражение.
|
|
|
16.1.2009, 22:29
Сообщение
#219
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
решил проблему так:
Код local _,_,a,b,c,d = string.find(msg,"(%d+)%s*%D+%s*(%d+)%s*%D+%s*(%d+)%s*%D+%s*(%d+)") Setuper, а ты бы какой код посоветовал? |
|
|
17.1.2009, 0:37
Сообщение
#220
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Такой код не пойдет по следующей причине:
Допустим кто-то пишет так: Цитата 1) какое-то педложение 2) ещё какое-то преложение 3) снова какое-то предложение 4) и ещё предложение или вот так: Цитата сколько будет 2+2? вы думаете 4, а я думаю 3! В данном случае любые 4 числа в предложении будут ловиться. Единственное условие - это наличие между этими числами хотя бы одного не пробельного символа! Поэтому твой вариант является наихудшим. Предлагаю лучше сделать так: Код local _,_,a,b,c,d = msg:find"(%d+)%s*%p*[%p*%s*]%s*(%d+)%s*%p*[%p*%s*]%s*(%d+)%s*%p*[%p*%s*]%s*(%d+)" в данном случае будут ловиться только числа, разделённые знаками пунктуации и/или пробелами.К данному захвату нужно добавить ещё один из распространённых методов: Код local _,_,a,b,c,d = msg:find"(%d+)%s*ю%s*(%d+)%s*ю%s*(%d+)%s*ю%s*(%d+)"
|
|
|
Похожие темы
|
Сейчас: 27.11.2024, 9:30 |