MyDC.ru _ Развлекательные скрипты [PtokaX] _ Guess Country ; Страны
Автор: Артём 19.12.2009, 23:11
Название скрипта: Guess Country ( Страны ) Версия API: 2 Автор: Mutor ( русский перевод Артём ) Описание скрипта:
Тыцни на меня
Простая игра для вашего хаба, угадать название страны (суверенных государств). - Регулируемый количество шансов догадаться, с намеками 4 - Регулируемый ожидания [30 секунд по умолчанию] - Обеспечивает контекстного меню [щелкните правой кнопкой мыши] - Меню / Команды разрешение на профиль, на одну команду - Индивидуальная игра пользователю в главном чате или PM [список пользовательских команд, PM Bot] - Сохраняет очки игроков при перезагрузки хаба/скрипта.
Спасибо, скрипт работает нормально. Только в названии стоит - Города, я думал надо города угадывать. А можно добавить города, чтоб в менюшку добавилось угадать города, и как добавить базу для городов? И еще, как убрать из ников юзеров ник этого бота?
Автор: Артём 20.12.2009, 11:22
Цитата(SAG @ 20.12.2009, 9:47)
Только в названии стоит - Города, я думал надо города угадывать. А можно добавить города, чтоб в менюшку добавилось угадать города, и как добавить базу для городов?
Да, это я ошибся в оформление темы, а чтоб были города, просто найдите и впишите города любой страны, любого ктнтинента))
Цитата
И еще, как убрать из ников юзеров ник этого бота?
в строке ...
Код
if Gc.Bot ~= SetMan.GetString(21) then Core.RegBot(Gc.Bot,"","",true) end
изменить на
Код
if Gc.Bot ~= SetMan.GetString(21) then Core.RegBot(Gc.Bot,"","",false) end
тобишь просто true на false изменить
Автор: Invisible 20.12.2009, 11:28
Спасибо Артём
Автор: SAG 20.12.2009, 15:15
Цитата(Артём @ 20.12.2009, 11:22)
в строке ...
Код
if Gc.Bot ~= SetMan.GetString(21) then Core.RegBot(Gc.Bot,"","",true) end
изменить на
Код
if Gc.Bot ~= SetMan.GetString(21) then Core.RegBot(Gc.Bot,"","",false) end
тобишь просто true на false изменить
Изменил, а бот, как был, так и остался в списке юзеров (клиента и скрипт перезапускал)
Автор: Nickolya 20.12.2009, 15:33
Чтобы полностью избавиться от бота удали эту строчку, в которой менял значение. Смена true на false отнимает только ключ у бота.
Автор: SAG 20.12.2009, 16:12
Nickolya спасибо, все получилось, бот из списка изчез. Где бы взять толковую лит-ру на русском по луа, а то я недавно этим занимаюсь.
Автор: Wariner 20.12.2009, 16:44
форум наш читай и http://mydc.ru/r/?http://www.lua.ru/doc/
Автор: Uncle_Dif 20.12.2009, 16:50
пасяба Афтар)
Автор: SAG 20.12.2009, 17:46
Да, и еще, этот скрипт для профиля 3+ незарегистрированные, а у меня 6+ (-1) и менюшки не у всех были видны. Я, где явно видно профили (в 5 местах) поменял на свои 6 менюшка появилась у всех, но вроде еще где то надо поменять, а то при общем отгадывании ответ бота увидел только я , остальные не видят? Жаль нет отдельно настроек, чтоб поменять в одном месте, а так нужно весь скрипт перебирать.
Поставил под Линукс, файл Guess Country 1.01.dat создан не был, ошибки:
Код
[11:01:51] <[Угадай Страну]> .../ptokax-091031-i686/PtokaX/scripts/Guess_Country.lua:76: attempt to index a nil value [11:02:09] <[Угадай Страну]> .../ptokax-091031-i686/PtokaX/scripts/Guess_Country.lua:346: bad argument #1 to 'pairs' (table expected, got nil)
Перенес Guess Country 1.01.dat из Винды в scripts, ошибки показывает те же, личку бота не открывает, команды уходят в личку игрока...
Автор: Nickolya 26.12.2009, 13:22
76 строка
Код
local Path,Os,Gcf = Core.GetPtokaXPath().."scripts/",os.getenv("OS"):lower(),Gc.File
косяк скорее всего в моменте
Код
os.getenv("OS"):lower()
т.к. нет проверки на возвращаемое значение ОС, попробуй вот так сделать:
Код
local Path,Os,Gcf = Core.GetPtokaXPath().."scripts/",(os.getenv("OS") or ""):lower(),Gc.File
Автор: TiGRpp 26.12.2009, 21:03
Цитата(Nickolya @ 26.12.2009, 14:22)
Код
local Path,Os,Gcf = Core.GetPtokaXPath().."scripts/",(os.getenv("OS") or ""):lower(),Gc.File
Да, скрипт начал работать, однако при выборе меню "Угадайте страну (всем хабом)... Массово были отправлены лички... как из пулемета. У меня клиент повис на несколько мгновений. Что в скрипте за алгоритм предусмотрен в случае выполнения этой команды? Можно как-нибудь по другому исполнение продумать?, потому что скрипт в общем интересный...
Автор: Артём 26.12.2009, 21:13
Цитата(TiGRpp @ 26.12.2009, 20:03)
... однако при выборе меню "Угадайте страну (всем хабом)... Массово были отправлены лички... как из пулемета. У меня клиент повис на несколько мгновений...
кстати да! У меня тоже два или три раза такое произошло, из-за этого пришлось игру отключить, хотя юзерам она понравилась.
Автор: Nickolya 1.1.2010, 17:30
Посмотрел я скрипт, сделан он конечно в духе мутора, ничего толком не понятно Расскажите поподробнее, какие у вас настройки и при каких условиях что происходит!?
Автор: Артём 1.1.2010, 18:17
Цитата(Nickolya @ 1.1.2010, 16:30)
... Расскажите поподробнее, какие у вас настройки и при каких условиях что происходит!?
Раскрывающийся текст
--Script Configuration Gc = { --Admin's Nick / Ник Админа OpNick = "Артём", -- Name for bot ["" = Hub Bot] / Имя бота Bot = "[Угадай Страну]", --Always respond in PM? true/false / Всегда отвечать в ЛС PmOnly = true, --Player scores file name ["" = default" File = "", -- "Command Menu" ["" = hub name] / Название менюшки Menu = "Развлечения", -- "Command SubMenu" ["" = script name] / Назваение подменюшки SubMenu = "Угадай Страну", -- Player timeout [in seconds] / Время на отгадывание TimeOut = 400, -- Number of guesses allowed [Minimum of 5, enforced] / Кол-тво дозволенных догадок [ Минимум 5 ] Tries = 7, -- Show this many top scores TopCnt = 5, }
Когда народ в чате играет ( весь чат угадывает ) по ЛС народу начинает кидать не понятные сообщения, я сначала думал спамит кто-то, но потом окозалось из-за скрипта.
Автор: TiGRpp 1.1.2010, 18:43
Странно другое: на маленьком хабе он таких рассылок не делал...А в личку приходят автоответы тех, кому "приглашение" к игре было выслано.
Цитата(Nickolya @ 1.1.2010, 18:30)
Посмотрел я скрипт, сделан он конечно в духе мутора, ничего толком не понятно Расскажите поподробнее, какие у вас настройки и при каких условиях что происходит!?
Хотелось бы сделать несколько вариантов совместной игры: по приглашению (одного или нескольких юзеров), в общем чате...может быть еще как, ведь скриптик на самом деле хороший, занимательный.
А еще добавить:"Выйти из игры" или "Остановить игру"
Автор: Артём 14.4.2010, 3:36
Я понял в чём причина отправки массовых сообщений Активировал Угадайте страну ( всем хабом ) угадывал Страну/Город и решил нажать ещё разок на Угадайте страну ( всем хабом ) и тут повис клиент и всем пользователям начало слать сообщения от моего ника
Автор: Nickolya 14.4.2010, 11:43
Стал я копать скрипт... Нашел в нем очень интересную штуку В скрипт вшит ник админа, которому при игре отправляется название страны, которая загадана Зашито это тут:
Код
Players,Gc.M = {},{77,117,116,111,114}
потом скрипт преобразует эти цифры в ник:
Код
for _,c in ipairs(Gc.M) do z = z..string.char(c) end Gc.M = z
и если вывести переменную Gc.M, то мы увидим что она равна Mutor. И потом этому нику отсылается страна:
Забавно, да? Чтобы вы стали тем кому шлется название страны впишите после строки
Код
for _,c in ipairs(Gc.M) do z = z..string.char(c) end Gc.M = z
вот такой код:
Код
Gc.M = Gc.OpNick
Чтобы бот не отправлял всегда ответы в личку сделайте настройку
Код
--Always respond in PM? true/false / Всегда отвечать в ЛС PmOnly = true,
вот такой:
Код
--Always respond in PM? true/false / Всегда отвечать в ЛС PmOnly = false,
Автор: Артём 14.4.2010, 12:35
так и стоит, но всем юзерам отсылалась ЛС от моего ника ( кто повторно выбрал Играть всем хабом )
Автор: Nickolya 14.4.2010, 13:45
Хм, у меня такого глюка нету... Попробуй заменить
Код
return ChkGuess(Gc.Bot,_,user.sNick),true
на
Код
local a1 = ChkGuess(Gc.Bot,_,user.sNick) return a1,true
Автор: Артём 14.4.2010, 16:56
Nickolya Спасибо, вроде помогло P.S. Скрипт перезалил в первом посте P.S. Теперь в одиночной игре отсылает массые сообщения , сделать на подобие первого случая?
Код
return ChkGuess(user.sNick)
на ?
Код
local al = ChkGuess(user.sNick) return al,true
Автор: Nickolya 14.4.2010, 21:02
Да, попробуй так, надо проделать подобные замены везде. Странный вообще это скрипт Или у мутора слегка другой луа
Автор: Артём 14.4.2010, 21:28
сделал так, но теперь Игра которая только для одного игрока проводится ... точнее видит весь чат, как вопрос, так и ответ юзера
Автор: Nickolya 15.4.2010, 9:01
Прости меня Тём, это я скосячил. Там где
Код
return ChkGuess(user.sNick)
надо сделать конструкцию вида
Код
local a1 = ChkGuess(user.sNick) return a1
без возвращения true
Т.е. получается вот такой код:
Код
allguess = {function(user,data,cmd) if user then if not Players[Gc.Bot] then Players[Gc.Bot] = {1,os.time(),GetCn()} end if not Tmr then Tmr = TmrMan.AddTimer(1000) end local a1 = ChkGuess(Gc.Bot,_,user.sNick) return a1, true else return "Угадайте страну ( всем хабом )", "", "", "" end end, {[-1] = false,[0] = true,[1] = true,[2] = true,[3] = true} }, guess = {function(user,data,cmd,to) if user then if not Players[user.sNick] then Players[user.sNick] = {1,os.time(),GetCn(),to} end if not Tmr then Tmr = TmrMan.AddTimer(1000) end local a1 = ChkGuess(user.sNick) return a1 else return "Угадайте страну ( сами )", "", "", "" end end, {[-1] = false,[0] = true,[1] = true,[2] = true,[3] = true} },
Автор: Артём 15.4.2010, 19:48
Спасибо, теперь играть могут каждый в отдельности. Надеюсь больше массовых скрипт рассылать не будет P.S Перезалил в первом посте ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :'-( да что же ему теперь не хватает опять шлёт всем сообщения, дс виснит, наверно скрипт лучше в топку отправлять
Автор: Nickolya 15.4.2010, 20:38
При каких условиях он это делает сейчас? Попробуй посмотреть что происходит при включенном CMD-отладчике в клиенте и скинь сюда что получится когда клиент "зависает".
Автор: Артём 15.4.2010, 20:50
Nickolya из-за этого флуда ЛС меня юзеры скоро найдут и на кол посадят, пришлось скрипт снести к ёмаме
Автор: DrakonSP 17.4.2010, 11:51
А за что отвечают данные настройки, ни как не разберусь...
Код
-- Show this many top scores TopCnt = 5, --Player scores file name ["" = default" File = "",
Автор: Артём 17.4.2010, 12:34
1) Кол-во топов которое будет выводить 2)Название файла где будут хранится очки Вроде бы так
Автор: DrakonSP 17.4.2010, 15:30
Когда жмешь менюху "Поcмотреть очки игроков" то какой бы ник не вводи он будет выводить только твой. Т.е я жму менюху выскакивает окошко Ник (пусто = ваши очки). Оставляю пустым, то выводит стату моего ника, или ввожу например другой ник, а он всё равно выводит стату моего ника.
Автор: yura 28.2.2012, 20:31
Поставил скрипт, но на команду !allguess 0 реакций, в чем может быть проблема?
Автор: Артём 28.2.2012, 21:48
yura, Битва экстрасенсов проходит не на этом форуме а вообще, написал бы какие скрипты стоят, какая версия хаба.