myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Trivia Mod, API2 | Игра "Викторина"

Рейтинг 5 V
alex82
сообщение 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). big_smile.gif Изменения относительно оригинального скрипта:
* Перевод на 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. Убедительная просьба сообщать о найденных ошибках.
Go to the top of the page
+Quote Post
8 страниц V   1 2 3 > »   
Начать новую тему
Ответов
Setuper
сообщение 20.2.2009, 17:44
Сообщение #2


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Хм... Убрав методы, не думаю, что скрипт ускорит свою работу.
Абсолютные пути не прописаны.
Go to the top of the page
+Quote Post
alex82
сообщение 20.2.2009, 17:49
Сообщение #3


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Цитата(Setuper @ 20.2.2009, 16:44) *
Хм... Убрав методы, не думаю, что скрипт ускорит свою работу.
Функции выполняются медленнее чем методы?

Цитата(Setuper @ 20.2.2009, 16:44) *
Абсолютные пути не прописаны.
PtokaX прекрасно понимает относительные.


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 20.2.2009, 18:00
Сообщение #4


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Дело в передаче параметров. В функции передача осуществляется через копирование в стек, а в методе передача первого параметра осуществляется по ссылке (без копирования и с непосредственным обращением к адресу памяти).

Абсолютные пути правильно работают в любой версии ptokax, а вот относительные пути в версии 0.4.1.0 работают от папки с ptokax.exe, а в остальных версиях от папки scripts. Всё же мне кажется лучше писать универсальные скрипты, работающие на любой версии, тогда и меньше вопросов будет: "а почему у меня не работает?"
Go to the top of the page
+Quote Post
alex82
сообщение 20.2.2009, 18:18
Сообщение #5


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




По поводу путей. Если админ хаба не в состоянии исправить ОДИН параметр в настройках скрипта для того, чтобы скрипт заработал на его устаревшей версии птоки, то такой админ хабу не нужен, хаб проживёт и без него.

А элементы ООП убраны вовсе не из соображений оптимизации, а для лучшей читаемости кода.


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 20.2.2009, 19:29
Сообщение #6


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Почему ты так игнорируешь абсолютные пути? Ведь даже на линуксе скрипт работать с относительными путями не будет. Зачем игнорировать если есть возможность сделать скрипт универсальным. Может есть какая-то приина по который ты пытаешься использовать относительный путь?

По поводу ООП я бы так не сказал, скорее это всё же некая эмуляция ООП))) И с методами читаемость кода вовсе не хуже.
Go to the top of the page
+Quote Post
alex82
сообщение 20.2.2009, 20:38
Сообщение #7


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Потому что, как ты сам знаешь, вызывать Core.GetPtokaXPath() непосредственно в настройках нельзя, а если перенести его в OnStartup, то туда же прийдётся вынести и настройки файлов, либо переопределять их. Так что я не игнорирую абсолютные пути, я просто стараюсь избегать излишнего усложнения. А фанаты абсолютных путей и линуксоиды (которым вообще не привыкать стучать по клаве - им ведь даже для того чтобы посмотреть текстовый файл, наверное, приходится прописывать зависимости и пересобирать ядро big_smile.gif ) могут без проблем прописать путь в переменной path.

Цитата
По поводу ООП я бы так не сказал, скорее это всё же некая эмуляция ООП

Скорее пародия ). Судя по всему, NRJ пытался копировать стиль автора оригинального скрипта. И наваял нечто жуткое.
Go to the top of the page
+Quote Post
Wariner
сообщение 20.2.2009, 20:44
Сообщение #8


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




а если в настройках сделать переменную sPath = "Папка скрипта" а в потом
Код
function OnStartup()
     sPath = Core.GetPtokaXPath().."scripts/"..sPath
      ...
end
Go to the top of the page
+Quote Post
alex82
сообщение 20.2.2009, 21:01
Сообщение #9


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Цитата(Wariner @ 20.2.2009, 19:44) *
а если в настройках сделать переменную sPath = "Папка скрипта" а в потом
Код
function OnStartup()
     sPath = Core.GetPtokaXPath().."scripts/"..sPath
      ...
end

А если в настройках
Цитата
File = sPath.."filename.lua"

Тогда не катит


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 20.2.2009, 22:19
Сообщение #10


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Цитата(alex82 @ 20.2.2009, 20:38) *
Потому что, как ты сам знаешь, вызывать Core.GetPtokaXPath() непосредственно в настройках нельзя, а если перенести его в OnStartup, то туда же прийдётся вынести и настройки файлов, либо переопределять их. Так что я не игнорирую абсолютные пути, я просто стараюсь избегать излишнего усложнения. А фанаты абсолютных путей и линуксоиды (которым вообще не привыкать стучать по клаве - им ведь даже для того чтобы посмотреть текстовый файл, наверное, приходится прописывать зависимости и пересобирать ядро big_smile.gif ) могут без проблем прописать путь в переменной path.


Скорее пародия ). Судя по всему, NRJ пытался копировать стиль автора оригинального скрипта. И наваял нечто жуткое.


Твоя позиция насчёт путей мне ясна, но однако я не считаю, что одна дополнительная строчка в функции OnStartup, которая переопределит пути, сильно усложнит скрипт)))

NRJ не пытался ничего копировать. Он просто переводил скрипт с lua4 под lua5 + переводил на русский язык + фиксил некоторые баги + кое что дописывал, но основные принципы построения скрипта он не изменял. А автор скрипта не просто так писал методы, он знал как эффективнее написать код для оптимальной работы скрипта. Может и не столь модульно и наглядно выглядит код, но всё же оптимизированно, а тот кто разбирается в lua, тот должен понять код, как бы заумно он не был написан. По себе могу сказать, что чем больше пишешь, тем всё больше и больше стараешься написать более оптимизированный, красивый и универсальный код и порой находишь простые решения, которые до этого не видел и не воспринимал. Я конечно не хочу навязывать свои принципы, но всё же советую обращать внимание на замечательные (необычные) реализации)))))
Go to the top of the page
+Quote Post
alex82
сообщение 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

Не проще ли взять взять значение переменной напрямую? Или это такой способ оптимизации? И подобных моментов в скрипте было довольно много.


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 20.2.2009, 23:34
Сообщение #12


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Согласен, что это не оптимизированный кусок кода, но смысл в этом был следующий: любой хороший программист сначала делает некоторый так называемый макет программы. Он ещё не знает будет ли он использовать ту или иную функцию, будет ли на данное место дописан какой-то код. Делаются так называемые функции-заглушки, которые ничего не выполняют, и на место которых должны будут встать функции, которые что-то будут делать. В программе предусматриваются разные варианты и только потом при самой реализации выбирается какой-то один вариант. Так вот в этой функции сначала видимо предполагалось, что после выполнения этого условия должно быть некоторое действие, а не просто возврат значения. Согласен, что после написания стабильной версии должен идти этап оптимизации, который порой бывает затяжным. Но смысл данных кусков кода думаю должен быть понятен.

Принцип написания эффективной программы состоит в тщательном планировании. В С++, в частности, это выражается в величайшем изобретении - наследовании - в построении неких базовых классов, которые потом расширяются.
Go to the top of the page
+Quote Post
alex82
сообщение 20.2.2009, 23:56
Сообщение #13


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




В данном случае мне видится несколько иное обьяснение - NRJ просто не знал как взять значение переменной из другого класса (в оригинальном скрипте она обьявлялась как self.getques, а за пределами класса была, естественно, curTriv.getques). Сие предположение ни в коем случае не бросает тень на вышеназванного кодера, а говорит лишь о том, что он начал модифицировать скрипт на ранних стадиях развития своего программерского таланта.
Go to the top of the page
+Quote Post
MEXAHuK
сообщение 7.3.2009, 19:17
Сообщение #14


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 314
Регистрация: 13.10.2008
Пользователь №: 791
Спасибо сказали: 9 раз




когда инрает только один человек - то всё нормально. заходит второй (третий и так далее )
то почему то при игре не реагирует на правильные ответы. и очки не плюсуе. только вопросы шлёт и ответы с подсказками пишет
Go to the top of the page
+Quote Post
alex82
сообщение 7.3.2009, 19:26
Сообщение #15


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Попробуй подвинуть скрипт в самый верх.


Спасибо сказали:
Go to the top of the page
+Quote Post
MEXAHuK
сообщение 7.3.2009, 19:32
Сообщение #16


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 314
Регистрация: 13.10.2008
Пользователь №: 791
Спасибо сказали: 9 раз




не помогло
Go to the top of the page
+Quote Post
alex82
сообщение 7.3.2009, 19:35
Сообщение #17


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Цитата(MEXAHuK @ 7.3.2009, 18:32) *
не помогло

В каком режиме работает? Игра всем доступна, или только тем, кто присоединился?
Go to the top of the page
+Quote Post
MEXAHuK
сообщение 7.3.2009, 19:36
Сообщение #18


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 314
Регистрация: 13.10.2008
Пользователь №: 791
Спасибо сказали: 9 раз




только к тем кто присоединился. игра в личке. бот не зарегистрирован на хабе.
вопрос: как можно сделать так чтобы можно было видеть ответы (игро комната) других пользователей?
Go to the top of the page
+Quote Post
alex82
сообщение 7.3.2009, 20:15
Сообщение #19


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1406 раз




Цитата
игра в личке. бот не зарегистрирован на хабе.

Так не может быть. Бот ВСЕГДА регистрируется если игра ведётся в личке, вне зависимости от настроек.

Проверил режим игры в личке - ошибок не заметил, сообщения нормально ретранслируются всем игрокам.


Спасибо сказали:
Go to the top of the page
+Quote Post
li4nost
сообщение 7.3.2009, 20:38
Сообщение #20


Продвинутый участник
****

Группа: Пользователи
Сообщений: 137
Регистрация: 22.2.2009
Из: Минск, Беларусь
Пользователь №: 2 321
Спасибо сказали: 12 раз




т.е. викторину можно не пускать в мэйн а играть в привате?
так это, получается, один играть будешь или все кто хочет? и буду лия например видеть, что отвечают другие?
Go to the top of the page
+Quote Post

8 страниц V   1 2 3 > » 
Ответить в данную темуНачать новую тему
7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts От: Trivia
От темы с ID: 3596
0 qqqqqq 3 893 2.1.2012, 16:59 Посл. сообщение: qqqqqq
No New Posts Topic has attachmentsTrivia
Викторина
0 Артём 6 346 30.6.2010, 20:59 Посл. сообщение: Артём
No New Posts От: Trivia Mod
От темы с ID: 1377
0 Ksan 5 024 12.5.2010, 18:22 Посл. сообщение: Ksan
No New Posts От: Trivia Mod
От темы с ID: 1377
0 TiGRpp 5 411 15.11.2009, 8:20 Посл. сообщение: TiGRpp
No New Posts От: Trivia Mod
От темы с ID: 1377
0 Wariner 5 230 23.3.2009, 0:22 Посл. сообщение: Wariner

 



RSS Сейчас: 27.11.2024, 2:59