www.mudconnector.su https://forum.mudconnector.su/ |
|
Несколько мад-движков https://forum.mudconnector.su/viewtopic.php?f=3&t=771 |
Страница 2 из 3 |
Автор: | Бодрич [ Ср окт 01, 2014 4:14 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
KadVar писал(а): Чего хорошего от питона, кроме тормозов вы получите ? Или там очень качественный и продуманный API ? 1) Тормоза ?:) При текущем соотношении цена/характеристики сервера для мада тормозов не должно быть. 2) Скорость разработки, простота языка. Для мада это очень критично, так как обычно лишь несколько людей что-то делают и вышеперечисленные параметры существенно ускоряют разработку/допиливание мада. 3) Гибкость. Примеры: Вот примерно такой формат имеет файл .mob (кусок из него) Код: me.aux("stats").names = ['Сила', 'Ловкость', 'Ум', 'Тело', 'Жизни'] me.aux("stats").values = [1, 2, 1, 1, 3] К примеру, можно сделать рандомную силу: Код: me.aux("stats").values = [random(0,5), 2, 1, 1, 3] Или добавить новых характеристик: Код: me.aux("stats").names = ['Сила', 'Ловкость', 'Ум', 'Тело', 'Жизни', 'Мудрость'] Сам формат зон похож на формат зон CircleMUD Пример игровой команды afk Код: def remove_afk(ch): ''Для удаления префикса AFK''' if ch.prfs == 'АFK': ch.prfs = 'none' else: prfs = ch.prfs.split(', ') prfs.remove('AFK') ch.prfs = ', '.join(prfs) # очень удобно, у каждого чара есть такой ассоциативный динамический массив, который вроде даже умеет сохранятся после ребута ch.delvar('afkmessage') ch.send('Вы вернулись к нам.') def set_afk(ch): '''Установка статуса afk чару.''' if ch.prfs == 'none': ch.prfs = 'AFK' else: ch.prfs += ', AFK' ch.send('Вы отошли от клавиатуры') def afk_event(owner, void, info): '''Событие, которое устанавливает AFK для неактивных игроков''' # доступ к сокетам можно получить из python'a # насколько я понял, через питон можно вообще реализовать ВСЕ for sock in mudsock.socket_list(): if sock.idle_time >= 300: if sock.account != None: if sock.ch != None: set_afk(sock.ch) event.start_event(None, 300, afk_event, None, '') def afk_command_hook(info): '''Удаляем AFK у игрока''' ch, cmd, arg = hooks.parse_info(info) #no point in continue if not ch.hasPrefs('AFK') or ch.is_npc or cmd == 'AFK': return remove_afk(ch) def afk_from_game(info): ''Удаляем флаг у игрока, если он вышел''' ch, = hooks.parse_info(info) #no point in continue if not ch.hasPrefs('AFK') or ch.is_npc: return remove_afk(ch) def setafk_hook(info): '''Добавляем евент в список евентов''' event.start_event(None, 300, afk_event, None, '') def cmd_afk(ch, cmd, arg): '''Использование: afk [сообщение] Устанавливает режим afk'' if ch.hasPrefs('AFK'): remove_afk(ch) else: set_afk(ch) if len(arg) > 0: ch.setvar('afkmessage', arg) ch.send('Во время AFK вы будете отвечать:: ' + arg) # добавляем команду в список команд mudsys.add_cmd('afk', None, cmd_afk, 'player', False) # создаем поле у чара mudsys.create_bit('char_prfs', 'afk') # вешаем события hooks.add('char_from_game', afk_from_game) hooks.add('command', afk_command_hook) hooks.add('start', setafk_hook) # кстати, очень удобно для того, чтобы не ребутать мад, если изменили код def __unload__(): '''removes the hooks for afk mode.''' hooks.remove('char_from_game', afk_from_game) hooks.remove('command', afk_command_hook) hooks.remove('start', setafk_hook) |
Автор: | KadVar [ Ср окт 01, 2014 4:24 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
Не знаю, если вам проще писать на питоне, то мне на С# (к примеру). Уж не знаю чем питон существенно лучше для описанной вами задачи. Есть какие-то причины, по которым он лучше ? Какие ? Как там с сериализацие ? С дебагом всего этого ? Что происходит при ошибках в скриптах ? Предоставленный код мягко говоря не то, что я хотел бы поддерживать. Логика работы команды также осталась для меня непонятной, она что хранит в текстовом виде afk персонаж или нет ? Единственное место где скрипт-языки имеют большой смысл - специфичное поведение в зонах, возможно еще описание базового АИ. И то за счет своей упрощенности. ЗЫ. Вы зря пытаетесь найти "золотую пулю". Всё равно придется вкалывать, и немало. Без этого "не взлетит". |
Автор: | KadVar [ Ср окт 01, 2014 4:26 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
Код: if ch.prfs == 'АFK': ch.prfs = 'none' else: prfs = ch.prfs.split(', ') prfs.remove('AFK') ch.prfs = ', '.join(prfs) Это... ммм... что такое и что оно делает и зачем ? Что такое ch.prfs ? ЗЫ. И да, надежды на то, что "как ни пиши - производительности хватит" - беспочвенны. Всего пяток строк написанных идиотом сожрут ЛЮБОЙ сервак. Вижу такое регулярно. |
Автор: | Бодрич [ Ср окт 01, 2014 6:51 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
KadVar писал(а): Какие ? Он проще Для Вас может быть и нет. С дебагом в питоне все нормально. KadVar писал(а): Что такое ch.prfs ? Титул персонажа. |
Автор: | ArtistSpb [ Ср окт 01, 2014 7:37 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
KadVar писал(а): Это... ммм... что такое и что оно делает и зачем ? Судя по коду - добавление статуса AFK в строку. Если в статусе только AFK, то делаем статус none. (Пустой ???, почему строкой none ?) Иначе рззбиваем на подстроки по делителю запятая, удаляем подстроку с AFK, и опять клеим их в одну строку, через запятую. |
Автор: | KadVar [ Чт окт 02, 2014 12:08 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
Бодрич писал(а): Титул персонажа. Да вы охренели ? Почему это не character.title -то ? Это - пример удобного api ? Нафига вообще трогать title ? Тут конечно вопрос связности, но яб уж лучше в части вывода титула сделал эти изменения. |
Автор: | KadVar [ Чт окт 02, 2014 12:09 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
ArtistSpb писал(а): KadVar писал(а): Это... ммм... что такое и что оно делает и зачем ? Судя по коду - добавление статуса AFK в строку. Если в статусе только AFK, то делаем статус none. (Пустой ???, почему строкой none ?) Иначе рззбиваем на подстроки по делителю запятая, удаляем подстроку с AFK, и опять клеим их в одну строку, через запятую. Только мне кажется, что это... немного... черезчур.... ? Что можно завести некий флаг типа bool показывающий afk человек или нет и проверять его ? Что для определения истинности или ложности чего-либо делать массивные операции со строками... как-то ну... не очень верно что-ли ? |
Автор: | Бодрич [ Чт окт 02, 2014 2:50 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
KadVar писал(а): ну... не очень верно что-ли ? И это говорит человек, у которого в маде выбор место начального респавна персонажа сделан через обычную руму с тремя выходами. |
Автор: | KadVar [ Чт окт 02, 2014 3:05 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
Бодрич писал(а): KadVar писал(а): ну... не очень верно что-ли ? И это говорит человек, у которого в маде выбор место начального респавна персонажа сделан через обычную руму с тремя выходами. Цитата: И вообще, разве нас может интересовать мнение человека лысого, с таким носом? Пусть сначала исправит нос, отрастит волосы, а потом и выскажется. (с) ЖванецкийЧто я еще могу вам сказать... вижу вы заинтересованы в самолюбовании, а не в улучшении своих способностей писать нормальный код. Я в эту игру не играю. Извините. Пишите что хотите, хоть на питоне, хоть на braifucking-е. |
Автор: | Бодрич [ Пт окт 03, 2014 8:47 pm ] |
Заголовок сообщения: | Re: Несколько мад-движков |
KadVar писал(а): Что я еще могу вам сказать... вижу вы заинтересованы в самолюбовании, а не в улучшении своих способностей писать нормальный код. Я в эту игру не играю. Извините. Пишите что хотите, хоть на питоне, хоть на braifucking-е. Эм, что ? Кстати, Вы так ничего нормального из своего кода не показали. Логично, что я пошел смотреть на Ваш единственный доступный проект - мад (Ведь тут форум про мады, верно ?) И что же я вижу - мад прямиком из нулевых (версия былин 2000 года находится примерно на том же развитии, что и Ваш мад). На сайте дела не лучше (редактор зон работает вообще только под !дос!). |
Страница 2 из 3 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |