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/