Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Развлекательные скрипты [PtokaX] _ Guess Country ; Страны

Автор: Артём 19.12.2009, 23:11

Название скрипта: Guess Country ( Страны )
Версия API: 2
Автор: Mutor ( русский перевод Артём )
Описание скрипта:

Тыцни на меня
Простая игра для вашего хаба, угадать название страны (суверенных государств).
- Регулируемый количество шансов догадаться, с намеками 4
- Регулируемый ожидания [30 секунд по умолчанию]
- Обеспечивает контекстного меню [щелкните правой кнопкой мыши]
- Меню / Команды разрешение на профиль, на одну команду
- Индивидуальная игра пользователю в главном чате или PM [список пользовательских команд, PM Bot]
- Сохраняет очки игроков при перезагрузки хаба/скрипта.

 Guess_Country.lua ( 18.33 килобайт ) : 700

Автор: SAG 20.12.2009, 10:47

Спасибо, скрипт работает нормально. Только в названии стоит - Города, я думал надо города угадывать. А можно добавить города, чтоб в менюшку добавилось угадать города, и как добавить базу для городов? И еще, как убрать из ников юзеров ник этого бота?

Автор: Артём 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

victory.gif тобишь просто 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

victory.gif тобишь просто 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 менюшка появилась у всех, но вроде еще где то надо поменять, а то при общем отгадывании ответ бота увидел только я , остальные не видят? Жаль нет отдельно настроек, чтоб поменять в одном месте, а так нужно весь скрипт перебирать.

Автор: Артём 21.12.2009, 1:11

SAG
265 строка

Код
{[-1] = false,[0] = true,[1] = true,[2] = true,[3] = true}
пробуй добавлять...

Автор: TiGRpp 25.12.2009, 11:07

Цитата(Артём @ 20.12.2009, 0:11) *
Название скрипта: Guess Country ( Города )

В Винде работает.

Поставил под Линукс, файл 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

Да, скрипт начал работать, однако при выборе меню "Угадайте страну (всем хабом)...big_smile.gif Массово были отправлены лички...big_smile.gif как из пулемета. У меня клиент повис на несколько мгновений. Что в скрипте за алгоритм предусмотрен в случае выполнения этой команды? Можно как-нибудь по другому исполнение продумать?, потому что скрипт в общем интересный...big_smile.gif

Автор: Артём 26.12.2009, 21:13

Цитата(TiGRpp @ 26.12.2009, 20:03) *
... однако при выборе меню "Угадайте страну (всем хабом)...big_smile.gif Массово были отправлены лички...big_smile.gif как из пулемета. У меня клиент повис на несколько мгновений...

big_smile1.gif кстати да! У меня тоже два или три раза такое произошло, из-за этого пришлось игру отключить, хотя юзерам она понравилась. what.gif

Автор: Nickolya 1.1.2010, 17:30

Посмотрел я скрипт, сделан он конечно в духе мутора, ничего толком не понятно big_smile.gif Расскажите поподробнее, какие у вас настройки и при каких условиях что происходит!?

Автор: Артём 1.1.2010, 18:17

Цитата(Nickolya @ 1.1.2010, 16:30) *
... big_smile.gif Расскажите поподробнее, какие у вас настройки и при каких условиях что происходит!?

Раскрывающийся текст
--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) *
Посмотрел я скрипт, сделан он конечно в духе мутора, ничего толком не понятно big_smile.gif Расскажите поподробнее, какие у вас настройки и при каких условиях что происходит!?

Хотелось бы сделать несколько вариантов совместной игры: по приглашению (одного или нескольких юзеров), в общем чате...может быть еще как, ведь скриптик на самом деле хороший, занимательный.

А еще добавить:"Выйти из игры" или "Остановить игру"

Автор: Артём 14.4.2010, 3:36

Я понял в чём причина отправки массовых сообщений eyes_droped.gif
Активировал Угадайте страну ( всем хабом ) угадывал Страну/Город и решил нажать ещё разок на Угадайте страну ( всем хабом ) и тут повис клиент и всем пользователям начало слать сообщения от моего ника shocked.gif

Автор: Nickolya 14.4.2010, 11:43

Стал я копать скрипт... Нашел в нем очень интересную штуку big_smile.gif В скрипт вшит ник админа, которому при игре отправляется название страны, которая загадана big_smile.gif
Зашито это тут:

Код
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. И потом этому нику отсылается страна:
Код
Core.SendToNick(Gc.M,"<"..Gc.Bot.."> "..Country[x].."|")
Забавно, да? big_smile.gif Чтобы вы стали тем кому шлется название страны впишите после строки
Код
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
Спасибо, вроде помогло big_smile.gif
P.S. Скрипт перезалил в первом посте big_smile.gif
P.S. Теперь в одиночной игре отсылает массые сообщения shocked.gif , сделать на подобие первого случая?

Код
return ChkGuess(user.sNick)

на ?
Код
local al = ChkGuess(user.sNick)
            return al,true

Автор: Nickolya 14.4.2010, 21:02

Да, попробуй так, надо проделать подобные замены везде. Странный вообще это скрипт big_smile.gif Или у мутора слегка другой луа secret_smile.gif

Автор: Артём 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

Спасибо, теперь играть могут каждый в отдельности. Надеюсь больше массовых скрипт рассылать не будет big_smile.gif
P.S Перезалил в первом посте
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:'-( да что же ему теперь не хватает
extreme_sexy_girl.gif опять шлёт всем сообщения, дс виснит, наверно скрипт лучше в топку отправлять crying.gif

Автор: Nickolya 15.4.2010, 20:38

При каких условиях он это делает сейчас? Попробуй посмотреть что происходит при включенном CMD-отладчике в клиенте и скинь сюда что получится когда клиент "зависает".

Автор: Артём 15.4.2010, 20:50

Nickolya из-за этого флуда ЛС меня юзеры скоро найдут и на кол посадят, пришлось скрипт снести к ёмаме crying.gif

Автор: 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)Название файла где будут хранится очки
Вроде бы так big_smile.gif

Автор: DrakonSP 17.4.2010, 15:30

Когда жмешь менюху "Поcмотреть очки игроков" то какой бы ник не вводи он будет выводить только твой.
Т.е я жму менюху выскакивает окошко Ник (пусто = ваши очки).
Оставляю пустым, то выводит стату моего ника, или ввожу например другой ник, а он всё равно выводит стату моего ника.

Автор: yura 28.2.2012, 20:31

Поставил скрипт, но на команду !allguess 0 реакций, в чем может быть проблема?

Автор: Артём 28.2.2012, 21:48

yura, Битва экстрасенсов проходит не на этом форуме bad_smile.gif
а вообще, написал бы какие скрипты стоят, какая версия хаба. big_smile.gif

Автор: yura 29.2.2012, 15:39

Верю, что не экстрасенсы)
Version: PtokaX DC Hub 0.4.1.2 built on Feb 24 2012 22:54:05
OS: Linux 2.6.32.9 (armv6l)
Скрипты:
- [ 1 ] regme.lua (115 kB)
- [ 1 ] Citaty.lua (475 kB)
- [ 1 ] Ekzekutor.lua (1639 kB)
- [ 1 ] HubMenu.lua (147 kB)
- [ 1 ] Guess_Country.lua (169 kB)
- [ 1 ] cs.lua (275 kB)
- [ 1 ] Deistviya.lua (125 kB)
- [ 1 ] Snowball_5.1.lua (132 kB)
- [ 1 ] gonki.lua (132 kB)
- [ 1 ] victorina_api2.lua (205 kB)
- [ 1 ] Temperature.lua (140 kB)

Автор: yura 1.3.2012, 19:44

UP!
Есть тут вообще кто нибудь?

Автор: Артём 1.3.2012, 21:53

yura, попробуй выше экзекутора подвинуть скрипт.

Автор: yura 1.3.2012, 22:45

Подвинул, 0 эмоций beat_brick.gif

Автор: Артём 1.3.2012, 23:24

yura, отключи все скрипты, а этот оставь и проверь, может какой-то блокирует.

Автор: yura 2.3.2012, 23:03

Тоже не помогло :(