Форумы онлайн-игры "Сфера Миров"

Форумы посвящены онлайн-игре MUD "Сфера Миров", ее игровому миру и просто общению игроков.
Текущее время: 26-04, 21:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 01-12, 21:48 
Не в сети
хайлевел

Зарегистрирован: 22-09, 13:20
Сообщения: 437
А еще у тя кажецо слово "привет" бес кавычек )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02-12, 00:25 
Не в сети
Старший Майар
Аватара пользователя

Зарегистрирован: 30-08, 02:22
Сообщения: 116
Откуда: Москва
Усем пасиб, с тем разобрался)
Еще вопросик:
У меня все триггера в одном коде, как мне его подключить?
Код:
 g_trgMng.LoadMobTrigger( 103001, MTRG_INCOMING_LEADER, MobTrigger_103001 );
 g_trgMng.LoadMobTrigger( 103001, MTRG_GIVE_OBJ, MobTrigger_103001 );
 g_trgMng.LoadMobTrigger( 103001, MTRG_SPEAK, MobTrigger_103001 );

Если писать так, то сервер пишет, что произошло двойное подключение триггера моба.
Код:
 g_trgMng.LoadMobTrigger( 103001, MTRG_INCOMING_LEADER, MTRG_GIVE_OBJ, MTRG_SPEAK, MobTrigger_103001 );

А если так, то пишеться, что функция не принимает 5 аргументов.
Помогите плз.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 02-12, 14:26 
Не в сети
хайлевел

Зарегистрирован: 22-09, 13:20
Сообщения: 437
Нада песать черес "|":
Код:
g_trgMng.LoadMobTrigger( 103001, MTRG_INCOMING_LEADER | MTRG_GIVE_OBJ | MTRG_SPEAK, MobTrigger_103001 );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03-12, 14:11 
Не в сети
хайлевел
Аватара пользователя

Зарегистрирован: 18-07, 14:31
Сообщения: 478
Откуда: Home.Saratov.Russia
Если посмотреть файл констант (types.h), то увидишь, что все константы на события - это степень двойки.
Можно использовать и "+" вместо операции "|" (побитовое или). Результат будет такой же.

Я вообще скольняюсь к разработке некоторых стандартных решений "на все случаи жизни".
Например, для квест-мастера можно завести триггер, который реагирует на события:
- персонаж вошел
- персонаж что-то сказал
- персонаж дал предмет (деньги, как вариант, но это еще + событие)

для мобов такого типа определяем класс триггеров, например так:
Код:
class MobTrigger {
public:
    // Метод обработки события на вход лидера.
    virtual int onIncomingLeader(CIncomingLeaderMobTriggerData* data) { return 0; }

    // Аналогичные методы на другие события.

    // Процедура обработки триггера.
    int processTrigger(CMobTriggerData* data) {
        // Тут надо позоботиться об удалении данных,
        // но некоторые события требуют не удалять их.
        // Можно воспользоваться классом std::auto_ptr, подробнее в MSDN.
        switch (data->m_type) {
            case MTRG_INCOMING_LEADER:
                return onIncomingLeader(
                    (CIncomingLeaderMobTriggerData*) data
                );
                // Удаление data будет сделано в деструкторе переменной std::auto_ptr
            // другие case для триггеров моба.
        }
        // Необязательно делать сдесь return, можно ипользовать default в операторе switch
        return 0;
    }

    // Метод возвращает флаги обработчика
    // второй пареметр для g_trgMng.LoadMobTrigger
    virtual int getTriggerFlags() { return 0; }

    // Статический метод обработки триггера, обеспечивает вызов метода processTrigger
    // третий пареметр для g_trgMng.LoadMobTrigger
    static int callTrigger(CMobTriggerData* data) {
        // Тут не скажу ... возможно потом
    }
};

class QuestMasterTrigger : public MobTrigger {
public:
    int onIncomingLeader(CIncomingLeaderMobTriggerData* data) {
        // Логика триггера.
        return 0;
    }

    int onSpeak(CSpeakMobTriggerData* data) {
        // Логика триггера.
        return 0;
    }

    int onGiveObject(CGiveObjMobTriggerData* data) {
        // Логика триггера.
        return 0;
    }

    int getTriggerFlags() {
        return (MTRG_INCOMING_LEADER | MTRG_SPEAK | MTRG_GIVE_OBJ);
    }
};


Как прикрепить эти методы к мобу я не скажу, думайте сами
Ну или скажу, потом...
Используйте наследование и получите отличный механизм написания триггеров.
А так же, значительно более понятный и читаемый код.
Таких шаблонов я насчитал как минимум 10, и привел один из них в качестве примера.

_________________
не суйте пальцы в разетку


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05-12, 00:10 
Не в сети
КАРЛИКОВЫЙ ВАРВАР
Аватара пользователя

Зарегистрирован: 12-07, 18:23
Сообщения: 457
Откуда: Moscow
Эх, мои мозги окончательно испорчены поганым VBA...
Обидно примерно понимать, как работает - но тратить несколько суток, чтобы изобразить что-либо хотя бы отдалённо похожее...
Это я к тому, что кодеры (кодер?) Сферы - башковитые ребята)
Как и любой нормальный человек, всегда уважал тех, кто может то, что не могу сделать я.
Наверное, именно поэтому получилось то, что получилось...

_________________
Disclamer: если кому-то по каким-то невероятным причинам в моих написанных на этом форуме словах видится критика администрации севера Сферы... так вот: НЕ ИЩИТЕ - ЕЁ ТУТ НЕТ!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05-12, 00:28 
Не в сети
хайлевел
Аватара пользователя

Зарегистрирован: 18-07, 14:31
Сообщения: 478
Откуда: Home.Saratov.Russia
Повторюсь, кодер - это чернорабочий, он ничего не проектирует, он просто умеет "класть кирпич".
Здание, которое выкладывают каменьшики, они не проектируют...
С кодом совы, кодеры не работают.
Хочу лишний раз намекнуть, что назвать программиста кодером - это то же самое что архитектора - каменьщиком

_________________
не суйте пальцы в разетку


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 05-12, 02:12 
Не в сети
КАРЛИКОВЫЙ ВАРВАР
Аватара пользователя

Зарегистрирован: 12-07, 18:23
Сообщения: 457
Откуда: Moscow
Roko писал(а):
он просто умеет "класть кирпич".

а я вот не умею...

П.С. А куда дели у Роки "падшего майора"?)

_________________
Disclamer: если кому-то по каким-то невероятным причинам в моих написанных на этом форуме словах видится критика администрации севера Сферы... так вот: НЕ ИЩИТЕ - ЕЁ ТУТ НЕТ!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23-12, 09:12 
Не в сети
ньюб

Зарегистрирован: 23-12, 08:46
Сообщения: 1
сори вопрос может не в тему.. Я немного знаком с Visual Basic , Pascal - c их помощью можно воять триггеры ? .. полный ньюб в этом вопросе ... Около полугода назад ооочень хотел сделать зону , но неумение писать триги - остановило :(..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23-12, 14:58 
Не в сети
ньюб

Зарегистрирован: 15-12, 02:12
Сообщения: 78
Откуда: Питер
Необязательно писать триги чтоб делать зону - качай редактор пиши зону опиши триги отошли иммам сделают


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23-12, 15:30 
Не в сети
мидл
Аватара пользователя

Зарегистрирован: 03-08, 02:29
Сообщения: 135
Откуда: Spb
Эоай писал(а):
Необязательно писать триги чтоб делать зону - качай редактор пиши зону опиши триги отошли иммам сделают

При таком варианте вероятность подключения немногим выше 0. На просьбы написать триги к зоне следует ответ "дождаться своей очереди" что конечно логично, но сути не меняет... Если хочется увидеть свою зону подключенной, лучше написать триги самому или попросить знакомых :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23-12, 15:33 
Не в сети
ньюб

Зарегистрирован: 15-12, 02:12
Сообщения: 78
Откуда: Питер
если триги не сложные и в количестве 2-4 штук . в данном отрезке времени вероятность подключения порядка 80%
а триги будут все равно проверятся - а это столько же работы


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23-12, 15:42 
Не в сети
хайлевел

Зарегистрирован: 22-09, 13:20
Сообщения: 437
Цитата:
сори вопрос может не в тему.. Я немного знаком с Visual Basic , Pascal - c их помощью можно воять триггеры ?

На скока йа знаю низя. Триггера пишуцо на С++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25-12, 10:54 
Не в сети
мидл

Зарегистрирован: 18-12, 15:04
Сообщения: 236
Откуда: Хабаровск
"Воять" триггеры можно на чём угодно.
Ваять триггеры для Сферы Миров можно только на Borland С++

П.С. под словом "триггеры" подразумеваются внутренние триггеры для игровых зон, а не то, чья совокупность иначе называется "конфиг"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25-12, 11:59 
Не в сети
мидл

Зарегистрирован: 25-08, 16:00
Сообщения: 292
Откуда: Ижевск
А при чем тут Borland? Мне вот, например, так и не удалось скомпилить триггер с помощью компилера из поставки Builder. Может, просто руки кривые.
Короче, триггера пишутся на C++ и компилятся микрософтовским компилером (ну то есть им-то точно).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25-12, 12:00 
Не в сети
ньюб

Зарегистрирован: 13-07, 15:54
Сообщения: 67
Апочему только на Borland С++?
В вижуал студио нельзя воять? :)
Авообще тригера представляют собой dll, и имея достаточно извращенный ум можно попробовать написать тригер на другом языке. (а может я ошибаюсь).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 75 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by Forumenko © 2006–2014
Русская поддержка phpBB