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

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

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




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

Зарегистрирован: 22-09, 13:20
Сообщения: 437
Ну в моем примере функция StoneCurseCast не определена (не путать с _KERNEL bool CastStoneCurse( const CSpell* spell, int power, CastType castType, const char* args )), а так это и есть рабочий пример ) Скопипастено из файла )


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

Зарегистрирован: 22-09, 01:42
Сообщения: 12
Мекор писал(а):
Ну в моем примере функция StoneCurseCast не определена (не путать с _KERNEL bool CastStoneCurse( const CSpell* spell, int power, CastType castType, const char* args )), а так это и есть рабочий пример ) Скопипастено из файла )


Да я всю логику заменил на вывод логов, что бы узнать что отрабатывает, но вывод ничего не вывел.
Боюсь у меня где-то в настройках проекта проблема. Мне бы маленький проект с работающей переопределенной логикой у мобов создаваемых репопом.


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

Зарегистрирован: 18-07, 14:31
Сообщения: 478
Откуда: Home.Saratov.Russia
Вообще вся проблемма с созданием динамического моба в том, что за ним нужно следить самому (освобождать динамическую память).

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

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


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

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

Поищу, вышли мыло приватом по форуму.

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


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

Зарегистрирован: 22-09, 01:42
Сообщения: 12
Насчет создания моба с переопределенным AI у меня тут догадка появилась.
Время появится - попробую проверить.
Суть в том, что для нормальной работы переопределенных функций свой класс мобов надо делать не от базового класса а от класса уже существующего, и что бы его тип совпадал в описании зоны и в dll зоны.
Когда проверял пример у меня тип другой был. :)

Это конечно не есть хорошо, так как проблематично сделать полностью новый тип (ну что бы и в описании зоны ставить новый тип), но по крайней мере будет работать.

А насчет удаления. Так это можно было бы логами (или еще как) выяснить для мобов с нормальным репопом и сделать так же для мобов созданных вручную.

Насчет памяти. Меня смущает отсутствие виртуальных деструкторов. В linux gcc от этого память начинает терять а здесь?


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

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

А на счет виртуального деструктора ты все же не прав, деструктор у мобов виртуальный:
Код:
virtual ~CChar();

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


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

Зарегистрирован: 22-09, 01:42
Сообщения: 12
Roko писал(а):
А на счет виртуального деструктора ты все же не прав, деструктор у мобов виртуальный:
Код:
virtual ~CChar();


Да, был не прав. Не туда посмотрел.

Просто как-то пытался измененные заголовочники подсунуть:).
Не мог понять почему функция Send переопределяется а какая-то другая - не хочет.
Очевидно проблема с несоответсвием класса моба в описании и класса в dll у меня выливалась и в неработу некоторых переопределяемых функций.


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

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

Вообще на изучение заголовков уходит слишком много времени. И чем больше их изучаешь, тем больше хочется все поменять =)
Я бы даже свой код уже 10 раз поменял бы =)

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


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

Зарегистрирован: 22-09, 01:42
Сообщения: 12
Roko писал(а):
Я дома посмотрел:
простое наследование класса CharMob и переопределение фабрики должно работать правильно. Пришлешь мыло, вышлю пример на почту.

Вообще на изучение заголовков уходит слишком много времени. И чем больше их изучаешь, тем больше хочется все поменять =)
Я бы даже свой код уже 10 раз поменял бы =)


Мыло:
serb[злобана собака]mail.ru


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

Зарегистрирован: 18-07, 14:31
Сообщения: 478
Откуда: Home.Saratov.Russia
ok, вечером вышлю

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


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

Зарегистрирован: 30-08, 02:22
Сообщения: 116
Откуда: Москва
Объясни плиз как сделать, чтобы моб отвечал на фразу игрока?

_________________
Изображение


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

Зарегистрирован: 11-08, 09:19
Сообщения: 41
Откуда: Планета Земля
MTRG_SPEAK посмотри в хидерах


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

Зарегистрирован: 03-08, 02:29
Сообщения: 135
Откуда: Spb
А планируется ли написание/подключение скриптового языка? Решило бы многие проблемы.


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

Зарегистрирован: 30-08, 02:22
Сообщения: 116
Откуда: Москва
Код:
int MobTrigger_103010(CMobTriggerData* data)
{
   if(data->m_type==MTRG_SPEAK)
   {
      CSpeakMobTriggerData* cData = (CSpeakMobTriggerData*)data;
      if( cData->m_text == привет)
      {
        cData->m_mob->ExecCmd("г Даров...\n");
       
         cData->m_mob->GiveAwardMoney(500, cData->m_char);
      } 
    }   
   return 0;
}       


Плод рысканья по MTRG_SPEAK, проблема - моб не отвечает на фразу.
Мб я не понимаю структуру создания трига из данного в хидерах?
Как мне правильно написать триг из этого описания?
Код:
// Данные тригера моба MTRG_SPEAK
class CSpeakMobTriggerData : public CMobTriggerData
{
 public : // Конструктор

   CSpeakMobTriggerData( CCharMob* mob, CCharPlayer* c, const char* text ) :
     CMobTriggerData( MTRG_SPEAK, mob ),
     m_char( c ),
     m_text( text )
   {}

 public : // Даннные
 
   CCharPlayer* m_char;  // Персонаж, сказавший фразу
   CString m_text; // Фраза
};


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

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

Подключается триггер в методе LoadTriggers(), например так:
g_trgMng.LoadMobTrigger(103010, MTRG_SPEAK, MobTrigger_103010);

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


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

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


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

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


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

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