Trivia Mod, API2 | Игра "Викторина" |
Здравствуйте, гость ( Вход | Регистрация )
Trivia Mod, API2 | Игра "Викторина" |
20.2.2009, 17:06
Сообщение
#1
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Название скрипта: Trivia Mod
Версия: 1.02 Версия API: API2 Автор: alex82 Информация: Скрипт создан на основе Викторины 1.6 (by NRJ), которая в свою очередь основывается на скрипте Trivia (by chill). Изменения относительно оригинального скрипта: * Перевод на API2 * Оптимизация и уплотнение кода * Некоторые изменения функционала: - Запоминание последнего состояния игры - Юзеры могут самостоятельно включать Викторину (отдельные настройки автоотключения) Trivia_Mod_v1.02.rar ( 172.88 килобайт ) Кол-во скачиваний: 877 Trivia_Mod_v1.02.7z ( 203.96 килобайт ) Кол-во скачиваний: 397 Версия, поддерживающая Lua 5.3: Trivia_Mod_v1.02a.7z ( 204.04 килобайт ) Кол-во скачиваний: 57 PS. Убедительная просьба сообщать о найденных ошибках. |
|
|
20.2.2009, 17:44
Сообщение
#2
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Хм... Убрав методы, не думаю, что скрипт ускорит свою работу.
Абсолютные пути не прописаны. |
|
|
20.2.2009, 17:49
Сообщение
#3
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Хм... Убрав методы, не думаю, что скрипт ускорит свою работу. Функции выполняются медленнее чем методы?Абсолютные пути не прописаны. PtokaX прекрасно понимает относительные.
|
|
|
20.2.2009, 18:00
Сообщение
#4
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Дело в передаче параметров. В функции передача осуществляется через копирование в стек, а в методе передача первого параметра осуществляется по ссылке (без копирования и с непосредственным обращением к адресу памяти).
Абсолютные пути правильно работают в любой версии ptokax, а вот относительные пути в версии 0.4.1.0 работают от папки с ptokax.exe, а в остальных версиях от папки scripts. Всё же мне кажется лучше писать универсальные скрипты, работающие на любой версии, тогда и меньше вопросов будет: "а почему у меня не работает?" |
|
|
20.2.2009, 18:18
Сообщение
#5
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
По поводу путей. Если админ хаба не в состоянии исправить ОДИН параметр в настройках скрипта для того, чтобы скрипт заработал на его устаревшей версии птоки, то такой админ хабу не нужен, хаб проживёт и без него.
А элементы ООП убраны вовсе не из соображений оптимизации, а для лучшей читаемости кода. |
|
|
20.2.2009, 19:29
Сообщение
#6
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Почему ты так игнорируешь абсолютные пути? Ведь даже на линуксе скрипт работать с относительными путями не будет. Зачем игнорировать если есть возможность сделать скрипт универсальным. Может есть какая-то приина по который ты пытаешься использовать относительный путь?
По поводу ООП я бы так не сказал, скорее это всё же некая эмуляция ООП))) И с методами читаемость кода вовсе не хуже. |
|
|
20.2.2009, 20:38
Сообщение
#7
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Потому что, как ты сам знаешь, вызывать Core.GetPtokaXPath() непосредственно в настройках нельзя, а если перенести его в OnStartup, то туда же прийдётся вынести и настройки файлов, либо переопределять их. Так что я не игнорирую абсолютные пути, я просто стараюсь избегать излишнего усложнения. А фанаты абсолютных путей и линуксоиды (которым вообще не привыкать стучать по клаве - им ведь даже для того чтобы посмотреть текстовый файл, наверное, приходится прописывать зависимости и пересобирать ядро ) могут без проблем прописать путь в переменной path.
Цитата По поводу ООП я бы так не сказал, скорее это всё же некая эмуляция ООП Скорее пародия ). Судя по всему, NRJ пытался копировать стиль автора оригинального скрипта. И наваял нечто жуткое. |
|
|
20.2.2009, 20:44
Сообщение
#8
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
а если в настройках сделать переменную sPath = "Папка скрипта" а в потом
Код function OnStartup()
sPath = Core.GetPtokaXPath().."scripts/"..sPath ... end |
|
|
20.2.2009, 21:01
Сообщение
#9
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
а если в настройках сделать переменную sPath = "Папка скрипта" а в потом Код function OnStartup() sPath = Core.GetPtokaXPath().."scripts/"..sPath ... end А если в настройках Цитата File = sPath.."filename.lua" Тогда не катит |
|
|
20.2.2009, 22:19
Сообщение
#10
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Потому что, как ты сам знаешь, вызывать Core.GetPtokaXPath() непосредственно в настройках нельзя, а если перенести его в OnStartup, то туда же прийдётся вынести и настройки файлов, либо переопределять их. Так что я не игнорирую абсолютные пути, я просто стараюсь избегать излишнего усложнения. А фанаты абсолютных путей и линуксоиды (которым вообще не привыкать стучать по клаве - им ведь даже для того чтобы посмотреть текстовый файл, наверное, приходится прописывать зависимости и пересобирать ядро ) могут без проблем прописать путь в переменной path. Скорее пародия ). Судя по всему, NRJ пытался копировать стиль автора оригинального скрипта. И наваял нечто жуткое. Твоя позиция насчёт путей мне ясна, но однако я не считаю, что одна дополнительная строчка в функции OnStartup, которая переопределит пути, сильно усложнит скрипт))) NRJ не пытался ничего копировать. Он просто переводил скрипт с lua4 под lua5 + переводил на русский язык + фиксил некоторые баги + кое что дописывал, но основные принципы построения скрипта он не изменял. А автор скрипта не просто так писал методы, он знал как эффективнее написать код для оптимальной работы скрипта. Может и не столь модульно и наглядно выглядит код, но всё же оптимизированно, а тот кто разбирается в lua, тот должен понять код, как бы заумно он не был написан. По себе могу сказать, что чем больше пишешь, тем всё больше и больше стараешься написать более оптимизированный, красивый и универсальный код и порой находишь простые решения, которые до этого не видел и не воспринимал. Я конечно не хочу навязывать свои принципы, но всё же советую обращать внимание на замечательные (необычные) реализации))))) |
|
|
20.2.2009, 23:06
Сообщение
#11
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Цитата NRJ не пытался ничего копировать. Он просто переводил скрипт с lua4 под lua5 + переводил на русский язык + фиксил некоторые баги + кое что дописывал, но основные принципы построения скрипта он не изменял. Насколько я понимаю, почти весь класс TrivEx - дело рук NRJ, ну а curTriv - из оригинального скрипта. Если сомневаешься - почитай чейнджлог викторины на проце. Я ничего не имею против "необычных" реализаций, но какой, черт возьми, смысл в этой функции: Код function curTriv:GetGetQues() if (self.getques == 1) then return 1 end end Не проще ли взять взять значение переменной напрямую? Или это такой способ оптимизации? И подобных моментов в скрипте было довольно много. |
|
|
20.2.2009, 23:34
Сообщение
#12
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Согласен, что это не оптимизированный кусок кода, но смысл в этом был следующий: любой хороший программист сначала делает некоторый так называемый макет программы. Он ещё не знает будет ли он использовать ту или иную функцию, будет ли на данное место дописан какой-то код. Делаются так называемые функции-заглушки, которые ничего не выполняют, и на место которых должны будут встать функции, которые что-то будут делать. В программе предусматриваются разные варианты и только потом при самой реализации выбирается какой-то один вариант. Так вот в этой функции сначала видимо предполагалось, что после выполнения этого условия должно быть некоторое действие, а не просто возврат значения. Согласен, что после написания стабильной версии должен идти этап оптимизации, который порой бывает затяжным. Но смысл данных кусков кода думаю должен быть понятен.
Принцип написания эффективной программы состоит в тщательном планировании. В С++, в частности, это выражается в величайшем изобретении - наследовании - в построении неких базовых классов, которые потом расширяются. |
|
|
20.2.2009, 23:56
Сообщение
#13
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
В данном случае мне видится несколько иное обьяснение - NRJ просто не знал как взять значение переменной из другого класса (в оригинальном скрипте она обьявлялась как self.getques, а за пределами класса была, естественно, curTriv.getques). Сие предположение ни в коем случае не бросает тень на вышеназванного кодера, а говорит лишь о том, что он начал модифицировать скрипт на ранних стадиях развития своего программерского таланта.
|
|
|
7.3.2009, 19:17
Сообщение
#14
|
|
Освоившийся участник Группа: Пользователи Сообщений: 314 Регистрация: 13.10.2008 Пользователь №: 791 Спасибо сказали: 9 раз |
когда инрает только один человек - то всё нормально. заходит второй (третий и так далее )
то почему то при игре не реагирует на правильные ответы. и очки не плюсуе. только вопросы шлёт и ответы с подсказками пишет |
|
|
7.3.2009, 19:26
Сообщение
#15
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Попробуй подвинуть скрипт в самый верх.
|
|
|
7.3.2009, 19:32
Сообщение
#16
|
|
Освоившийся участник Группа: Пользователи Сообщений: 314 Регистрация: 13.10.2008 Пользователь №: 791 Спасибо сказали: 9 раз |
не помогло
|
|
|
7.3.2009, 19:35
Сообщение
#17
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
|
|
|
7.3.2009, 19:36
Сообщение
#18
|
|
Освоившийся участник Группа: Пользователи Сообщений: 314 Регистрация: 13.10.2008 Пользователь №: 791 Спасибо сказали: 9 раз |
только к тем кто присоединился. игра в личке. бот не зарегистрирован на хабе.
вопрос: как можно сделать так чтобы можно было видеть ответы (игро комната) других пользователей? |
|
|
7.3.2009, 20:15
Сообщение
#19
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
Цитата игра в личке. бот не зарегистрирован на хабе. Так не может быть. Бот ВСЕГДА регистрируется если игра ведётся в личке, вне зависимости от настроек. Проверил режим игры в личке - ошибок не заметил, сообщения нормально ретранслируются всем игрокам. |
|
|
7.3.2009, 20:38
Сообщение
#20
|
|
Продвинутый участник Группа: Пользователи Сообщений: 137 Регистрация: 22.2.2009 Из: Минск, Беларусь Пользователь №: 2 321 Спасибо сказали: 12 раз |
т.е. викторину можно не пускать в мэйн а играть в привате?
так это, получается, один играть будешь или все кто хочет? и буду лия например видеть, что отвечают другие? |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
От: Trivia От темы с ID: 3596 |
0 | qqqqqq | 3 876 | 2.1.2012, 16:59 Посл. сообщение: qqqqqq | |
Trivia Викторина |
0 | Артём | 6 327 | 30.6.2010, 20:59 Посл. сообщение: Артём | |
От: Trivia Mod От темы с ID: 1377 |
0 | Ksan | 5 004 | 12.5.2010, 18:22 Посл. сообщение: Ksan | |
От: Trivia Mod От темы с ID: 1377 |
0 | TiGRpp | 5 393 | 15.11.2009, 8:20 Посл. сообщение: TiGRpp | |
От: Trivia Mod От темы с ID: 1377 |
0 | Wariner | 5 209 | 23.3.2009, 0:22 Посл. сообщение: Wariner |
|
Сейчас: 23.11.2024, 1:15 |