Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
9.2.2009, 16:56
Сообщение
#241
|
|
Активный участник Группа: Пользователи Сообщений: 67 Регистрация: 12.10.2008 Из: Красноярск Пользователь №: 784 Спасибо сказали: 9 раз |
Только начал пробывать писать, накидал тут пару строк под апи2:
Код function Core.OnStartup() TmrMan.AddTimer(60000, " Func1") end function Func1() ScriptMan.RestartScript(scripts/123.lua) end Сам 123.lua Код Core.SendToAll("тест") Выдает: \restart.lua:6: malformed number near '123.lua' Почему может не работать? |
|
|
9.2.2009, 16:59
Сообщение
#242
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Пишется так
Код ScriptMan.RestartScript("123.lua") но этот скрипт правильно работать не будет)))
|
|
|
9.2.2009, 18:55
Сообщение
#243
|
|
Активный участник Группа: Пользователи Сообщений: 67 Регистрация: 12.10.2008 Из: Красноярск Пользователь №: 784 Спасибо сказали: 9 раз |
Пишется так Код ScriptMan.RestartScript("123.lua") Спасибо, в документациях не заметил чет / А абсолютный путь не нужно указывать? Просто видел много скриптов которые ругались на это. но этот скрипт правильно работать не будет))) Соответственно вопрос почему? И как реализовать правильно? |
|
|
9.2.2009, 19:27
Сообщение
#244
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Вот так работать будет, и только на API1
Код dofile(frmHub:GetPtokaXLocation().."scripts/old_api.lu") function Core.OnStartup() TmrMan.AddTimer(60000, "Func1") end function Func1() Core.SendToAll("тест") end Соответственно для API2 вот так: Код function OnStartup() TmrMan.AddTimer(60000, "Func1") end function Func1() Core.SendToAll("тест") end Вообще говоря скажи в чём задача состоит и знаешь ли ты, что используешь метод быстрого перевода под api1? |
|
|
12.2.2009, 22:54
Сообщение
#245
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
какое кол-во строк может быть максимально в действиях (чтоб не сильно нагружать хаб\клиент)?? (О>,<О)
и вообще затрудняют ли они (действия) когда их много)) вход на хаб? |
|
|
12.2.2009, 23:12
Сообщение
#246
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Если уж на то пошло, то любой скрипт грузит хаб. Не парься с количеством действий.
|
|
|
19.2.2009, 1:03
Сообщение
#247
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
ну ладно.. просто существует некая проблема с входом на хаб... да и замечал пару раз что менюшки не все грузились
и вот такой еще вопросец можно ли поставить разделитель сразу после 1 менюшки тоесть.. 1 менюшка -> 2 менюшка ---------------- разделитель 1 менюшка -> 2 менюшка ---------------- разделитель надеюсь понятно обьяснил |
|
|
19.2.2009, 1:15
Сообщение
#248
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Универсального способа подо все клиенты нету, однако на некоторых клиентах (на большинстве) проходит следующий код:
Код Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\Команда$<%[mynick]> !cmd&#*124;|".. * - удалить
"$UserCommand 1 3 $<%[mynick]>&#*124;|$UserCommand 0 3&#*124;") |
|
|
19.2.2009, 1:22
Сообщение
#249
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
Ну раз под все клиенты не подходит то поставим старое доброе _ )
спасиб =) |
|
|
19.2.2009, 1:27
Сообщение
#250
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В смысле старое доброе?
Под основные клиенты подходит (DC++, Strong, Apex, Pelink, Greylink, Flylink). Под другие не тестировал, однако помнится, что на каком-то клиенте разделитель не появлялся (не помню что за клиент был). |
|
|
19.2.2009, 2:44
Сообщение
#251
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
в смысле старое доброе "нижнее подчеркивание" _____ ;)
мне так даже больше нравится =) |
|
|
21.2.2009, 20:53
Сообщение
#252
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
Если уж на то пошло, то любой скрипт грузит хаб. Не парься с количеством действий. кстате ты не прав когда онлайн подбирается к 2к народу из-за действий и инфо_в_меню на хаб становится невозможно зайти.. он заходит тока через 1-10 минут после того как появится "PtokaX DC Hub 0.3.6.0" ... над с этой менюшкой делать что то p.s. может можно сделать что бы действия загружались после того как юзер зашел на хаб? или частично (в смысле не все сразу, а по частям) |
|
|
21.2.2009, 21:05
Сообщение
#253
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
почитай вот это: http://mydc.ru/ipb.html?s=&showtopic=6...post&p=4763 там есть про меню!
|
|
|
21.2.2009, 21:09
Сообщение
#254
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
1) Просто надо оптимизировать отправку. Наверняка в твоём скрипте действий происходит многократный вызов функции отправки, что сильно нагружает. Например, можно отправлять так:
Код Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\Команда1$<%[mynick]> !cmd1&#*124;") * - удалить.Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\Команда2$<%[mynick]> !cmd2&#*124;") Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\Команда3$<%[mynick]> !cmd3&#*124;") Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\Команда4$<%[mynick]> !cmd4&#*124;") ... Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\КомандаN$<%[mynick]> !cmdN&#*124;") Но намного оптимизированнее отправлять так: Код Core.SendToUser(tUser,"$UserCommand 1 3 Меню\\Команда1$<%[mynick]> !cmd1&#*124;|".. * - удалить."$UserCommand 1 3 Меню\\Команда2$<%[mynick]> !cmd2&#*124;|".. "$UserCommand 1 3 Меню\\Команда3$<%[mynick]> !cmd3&#*124;|".. "$UserCommand 1 3 Меню\\Команда4$<%[mynick]> !cmd4&#*124;|".. ... "$UserCommand 1 3 Меню\\КомандаN$<%[mynick]> !cmdN&#*124;") Во втором случае функция отправки вызывается всего 1 раз, а клиент уже сам разберётся и разделит отправленную строку на несколько менюшек. 2) Скрипт действий лучше ставить последним в списке всех скриптов, так как менюшки можно отослать и после того как вошёл на хаб. 3) Не советую использовать скрипт действий, в котором для разных пользователей показывается разный текст действий, так как этот скрипт в отличии от обычного скрипта действий в разы больше потребляет ресурсов из-за наличия обработки действий. |
|
|
21.2.2009, 22:29
Сообщение
#255
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
вот так я и сделаю =) правдо переделывать весь скрип я буду дооолго(
на 1 апи это будет выглядеть так? Код user:SendData("$UserCommand 1 3 Меню\\Команда1$<%[mynick]> !cmd1&#*124;|"..
"$UserCommand 1 3 Меню\\Команда2$<%[mynick]> !cmd2&#*124;|".. "$UserCommand 1 3 Меню\\Команда3$<%[mynick]> !cmd3&#*124;|".. "$UserCommand 1 3 Меню\\Команда4$<%[mynick]> !cmd4&#*124;|".. "$UserCommand 1 3 Меню\\КомандаN$<%[mynick]> !cmdN&#*124;") |
|
|
21.2.2009, 22:31
Сообщение
#256
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
естественно)))
|
|
|
21.2.2009, 22:35
Сообщение
#257
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
и еще можно сделать так чтоб те ники которые есть в этом скрипте при использование /me писали [Время] *** nick2 text?
Код tNames = {
["nick1"] = "nick2", } function ChatArrival(curUser,data) if tNames[curUser.sName] then SendToAll(tNames[curUser.sName],data:sub(curUser.sName:len()+4,-2)) return 1 end end |
|
|
24.2.2009, 20:22
Сообщение
#258
|
|
мяу =^.^= Группа: Пользователи Сообщений: 414 Регистрация: 20.5.2008 Пользователь №: 6 Спасибо сказали: 14 раз |
*** яидиот... оказывается лагало не из-за действий, а из-за "ограничение входа N юзеров за 10 сек". Теперь вход на хаб отличный и наконец-то лагать перестало) нагрузка цп не больше 20% в пик юзеров *счастлив за хаб*
|
|
|
20.3.2009, 1:50
Сообщение
#259
|
|
Активный участник Группа: Пользователи Сообщений: 80 Регистрация: 25.2.2009 Пользователь №: 2 359 Спасибо сказали: 6 раз |
1) вопрос -- есть строчка SendToAll("blablabla") почему она выводится ПОСЛЕ следующей за этой строчкой строкой?
CODE local c = string.char local sDatagram = c(0xFF)..c(0xFF)..c(0xFF)..c(0xFF)..c(0x54)..c(0x53)..c(0x6F)..c(0x75).. c(0x72)..c(0x63)..c(0x65)..c(0x20)..c(0x45)..c(0x6E)..c(0x67)..c(0x69)..c(0x6E).. c(0x65)..c(0x20)..c(0x51)..c(0x75)..c(0x65)..c(0x72)..c(0x79)..c(0x00) ---это основной запрос всем source и goldscr серверам local sServerIp = {"81.9.25.202","tf.csmania.ru",} -- суда вписываем айпи своего сервера local sServerPort = {"27013","27016",} -- суда вписываем порт своего сервера local iTimeOut = 1 -- таймаут соединения на получение local iBuferSize = nil -- размер буфера (nil - стандартный) BotName = "Курильщик" -- имя бота BotDesc = "Закуривай;)" -- описание бота BotEmail = "hub@mail.ru" -- email бота ---------------------------------------------------------------------------- -- loads the socket module socket = require("socket") myudp = socket.udp() myudp:settimeout(iTimeOut) function Main() SetTimer(1000) frmHub:RegBot(BotName, 1, BotDesc, BotEmail) --регистрируем бота на хабе end function CorrectData(sData, sReplace) local sStr, iSmb = '' for i = 1, sData:len() do iSmb = sData:byte(i) if iSmb > 243 and iSmb < 256 then sStr = sStr..sReplace elseif iSmb > 31 then sStr = sStr..string.char(iSmb) elseif iSmb < 1 then sStr = sStr..sReplace elseif iSmb >= 1 then sStr = sStr..iSmb end end return sStr end function ChatArrival(tUser, sData) local sCmd = sData:match"%b<> !л4д" if sCmd then for i = 1,table.getn(sServerIp) do myudp:setpeername(sServerIp[i], sServerPort[i]) local _, sError = myudp:send(sDatagram, sServerIp[i], sServerPort[i]) local bData, sError = ReceiveData() if not sError and bData then local z = CorrectData(bData,'?'):sub(7) local sName, sMap, sTyp, sType, ilen, iTotal, sVersion = z:match"(.-)?(.-)?(.-)?(.-)?(.+)" if sName then if sName==sName:match"(%d*%p%d+%p%d+%p%d+:%d+)" then k=sMap sMap=sTyp l=sType sType=k sName=k end iPlayers, iTotal, sVersion = ilen:sub(3):match"(%d*)(%d)(.+)" if iPlayers:len() >1 then iPlayers, iTotal, sVersion = ilen:sub(3):match"(%d*)(%d%d)(.+)" end if zlen then iTotal="32" iPlayers=ilen:sub(3):match"(%d*).+" end sVersion = sVersion:match"(%d%p%d+%p%d+%p%d+)" iPlayers = iPlayers~='' and iPlayers or 0 SendToAll("blablabla") --написано до следующих строчек а выводится после них tUser:SendData("Курильщик"," Айпи адрес сервера---> "..sServerIp[i]..":"..sServerPort[i].."".. "|<Курильщик> Название сервера---> "..tostring(sName).. "|<Курильщик> Карта на сервере---> "..tostring(sMap).. "|<Курильщик> Тип и сложность игры---> "..tostring(sType).. "|<Курильщик> Игроков на сервере---> "..tostring(iPlayers).."/"..tostring(iTotal).. "|<Курильщик> Версия сервера---> "..tostring(sVersion).. "|<Курильщик> =======================================") end end end return 1 end end function OnExit() myudp:close() end OnError = OnExit function ReceiveData() local sData, sError = myudp:receive(iBuferSize) if sError then -- ошибка! return nil, sError end return sData end function NewUserConnected(tUser) tUser:SendData("$UserCommand 1 3 Left4Dead\\Мониторинг наших серверов$<%[mynick]> !л4д||") end OpConnected=NewUserConnected 2)если я пишу Unban("172.25.188.23") или Unban(172.25.188.23) то в 1 случае мне пишут что невозоможно вызвать функцию со значением НИЛ , а во 2 случае неправильный синтаксис... и даже если я вместо айпи пишу ник Ошибки теже самые (забанил через Пкм в птохе где Юзер/чат) оба вопроса относятся к Апи1 , в 1 вопросе даны рабочие интернет-сервера для проверки |
|
|
20.3.2009, 2:29
Сообщение
#260
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
1) Так устроена функция SendToAll. Вызывая её, мы помещаем данные в "глобальную очередь". Это связано с производительностью. Сначала отсылаем то, что можно быстро отослать, а потом уже всё, что находится в "глобальной очереди". Считается, что это ускоряет процесс отсылки нескольких сообщений подряд, однако на практики разницы никогда не ощутишь))
Если не нравится то, что сообщения помещаются в глобальную очередь, то можно отсылать всем юзерам по отдельности: Код for _,v in pairs(frmHub:GetOnlineUsers()) do v:SendData(sData) end 2) Первый вариант должен работать. Это может быть баг ptokax, у меня на 0.3.5.2f эта функция работает. P.S. Вообще говоря, для таких мелких вопросов создана тема: Вопросы разработчикам скриптов. Прошу задавать в ту тему подобного рода вопросы. |
|
|
Похожие темы
|
Сейчас: 26.11.2024, 20:07 |