Город Мастеров
IPB

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
 
Ответить в эту темуОткрыть новую тему
> Помошь -> способы дебага
Tonakien
сообщение Jul 30 2005, 14:32
Сообщение #1


Level 1


Класс: Маг
Характер: True Neutral
Раса: Эльф



Просьба о помощи...
Кто как дебагит модуль если он здоровый, а нужно оказаться в определенном месте с определенными значениями на тебе и на мире? :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 30 2005, 18:38
Сообщение #2


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Ну, у меня есть пара итемов, а что мне надо от них я прописываю в скрипте. Заюзал - получи результат. А что именно тебя интересует? Просто вопрос некорректный. А вообще, у меня дебаг везеде. Каждый маловажнецкий актион мне отписывает НПС.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 30 2005, 21:33
Сообщение #3


Level 9
Иконки Групп

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Tonakien тебе следует в скриптах дебаги прописывать везде, где выполняются наиболее важные и тяжелые скрипты, а потом либо логи смотреть, либо просматривать с помощью определенной опции, которая делает доступным просмотр дебага для определенного персонажа. Я сам еще не делал подобное в своем модуле, но все собираюсь.

Кстати, обратил внимание, что иногда скрипты визуально работают совершенно не так, как того ожидаешь, и простые дебаги позволяют это хорошо увидеть.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 31 2005, 09:15
Сообщение #4


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Если тебе поможет, вот моя инклюда.
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Name: am_inc_debug
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
          БИБЛИОТЕКА ДЛЯ ОТЛАДКИ СКРИПТОВ
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan      Aiwan@e-mail.ru
//:: Created On: 30.05.2005
//:://////////////////////////////////////////////

// СООБЩЕНИЯ ДЛЯ ПРОВЕРКИ (ИСПОЛЬЗУЮТСЯ В СЛУЖЕБНЫХ ЦЕЛЯХ ДЛЯ ОТЛАДКИ КОДА СКРИПТОВ)
// А ТАК ЖЕ ДЛЯ ДМ-ов
// LocalInt - "DEBAG_PC" на модуле, отключит дебаг игрокам
// LocalInt - "DEBAG_DM" на модуле, отключит дебаг DM-ам
void Debug(string message);
// Выводит в Debug: TAG, ResRef и Name объекта.
void DebugObject(object oObject);

//------------------------------------------------------------------------------
void Debug(string message)
{
    object oPC = GetFirstPC();
    if (!GetLocalInt(GetModule(), "DEBAG_PC"))
    {
      SendMessageToPC(oPC, "Debag message: "+message);
    }
    if (!GetLocalInt(GetModule(), "DEBAG_DM"))
          {
            SendMessageToAllDMs("Debag message to DMs: "+message);
          }
}
void DebugObject(object oObject)
{
    string sTag = GetTag(oObject);
    string sResRef = GetResRef(oObject);
    string sName = GetName(oObject);
    Debug ("TAG = "+sTag+", ResRef = "+sResRef+",  Name = "+sName+".");
}
/*
void main(){}


В коде просто ставь проверки и мессаги. К примеру объект который взял итем или последний кто умер или сказал... Продебагь его. И часто оказывается что это не тот о ком ты думал. :D Удачи!

ВНИЗУ ПРИМРЫ КАК Я ИСПОЛЬЗУЮ ЭТИ ФУНКЦИИ.

Neverwinter Script Source
//========================== HEARTBEAT EVENT  =================================
  if (nEvent == 1001// Стандартный сигнал
      {
      Debug("EVENT_HEARTBEAT");
      if (GetLocalInt(OBJECT_SELF, "START_CONVERSATION")==FALSE)
        {
          Debug("RETURN");
          return;
          }
      object oEnemy = OBJECT_SELF;
      object oPC = GetNearestPC(oEnemy);
      if (GetIsInCombat(oPC) || GetIsInCombat(oEnemy) || IsInConversation(oPC))
          {
          Debug("РС или НПС занят, что то мешает им поговорить.");
          return;
          }
          if (GetLocalInt(oEnemy, "START_CONVERSATION")==TRUE
              && GetLocalInt(oEnemy, "REPEAT")==TRUE)
              {
              AssignCommand(oEnemy, ClearAllActions());
              AssignCommand(oEnemy, ActionForceMoveToObject(oPC,TRUE, 2.0, 15.0));
              AssignCommand(oEnemy, ActionStartConversation(oPC));
              Debug("Если главарь не смог подойти и поговорить, напомним об этом");
              SetLocalInt(oEnemy, "REPEAT", FALSE);
              DelayCommand(15.0, SetLocalInt(oEnemy, "REPEAT", TRUE));
              }
      }


Neverwinter Script Source
//------------------------------------------------------------------------------
    if (GetHasInventory(oDestr) && GetTag(oDestr)=="BodyBag")
    {
      object oItem = GetFirstItemInInventory(oDestr);
      while (GetIsObjectValid(oItem))
      {
        string sTag = GetTag(oItem); // Debag message
        Debug("Destroy Item - "+sTag);
        DestroyObject(oItem);
        oItem = GetNextItemInInventory(oDestr);
      }
      string sTag = GetTag(oDestr); // Debag message
      string sResRef = GetResRef(oDestr);
      Debug("Destroy Object - "+sTag+" Resref-"+sResRef); // Debag message
      DestroyObject(oDestr);
    }
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jul 31 2005, 16:25
Сообщение #5


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Надеюсь, хоть в НВН2 дебаг скриптов будет гораздо удобнее.
Я юзаю SendMessageToPC при тесте на живом шарде и пишу в лог при локальном тестировании.

Сообщение отредактировал virusman - Jul 31 2005, 16:39
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Jul 31 2005, 16:33
Сообщение #6


Level 5
Иконки Групп

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



У меня в модуле система рычагов для отображения тех или иных событий :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 27th April 2024 - 11:39