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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 152 153 154 155 156 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Aiwan
сообщение Jul 18 2008, 19:24
Сообщение #3826


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

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



Вот модуль, в нем используется стандартные еванты. Посмотри любого НПС у него в слотах спавна и юзердеф и хертбит стоят мои скрипты. Твоя задача на парне который занимается ковром (в моем модуле он шкипер). Анимацию можешь сама изменить. В принципе, в этом модуле достаточно стандартных действий НПС что бы ты могла оживить весь модуль. Очень внимательно прочитай скрипт am_csp_common - в нем подробно распиано что будет делать НПС в том или ином случае. На НПС надо вешать локалки типа FLAG_RANGED и НПС становится атакующим рейнджером:
Neverwinter Script
//==================================================
============================

//      Атакующие свойства НПС - устанавливается ТОЛЬКО ОДНО ИЗ НИХ!
//==================================================
============================

    //--------------------------------------------------------------------------
    //  Старается атаковать издали, дальнобойным оружием.
    //--------------------------------------------------------------------------
    if (GetLocalInt(OBJECT_SELF, "FLAG_RANGED") == TRUE)
        {SetCombatCondition(X0_COMBAT_FLAG_RANGED);}
    //--------------------------------------------------------------------------
    //  Использует защитные фиты и паррирование
    //--------------------------------------------------------------------------
    if (GetLocalInt(OBJECT_SELF, "FLAG_DEFENSIVE") == TRUE)
        {SetCombatCondition(X0_COMBAT_FLAG_DEFENSIVE);}
    //--------------------------------------------------------------------------
    //  Будет невидимым и попытается атаковать, выйдет из невидимости и снова
    //  будет пытаться атаковать.
    //--------------------------------------------------------------------------
    if (GetLocalInt(OBJECT_SELF, "FLAG_AMBUSHER") == TRUE)
        {SetCombatCondition(X0_COMBAT_FLAG_AMBUSHER);}
    //--------------------------------------------------------------------------
    //  При атаке убегает
    //--------------------------------------------------------------------------
    if (GetLocalInt(OBJECT_SELF, "FLAG_COWARDLY") == TRUE)
        {SetCombatCondition(X0_COMBAT_FLAG_COWARDLY);}


Либо стандартные еванты. ЧТо бы НПС замечал игрока, и прочее, надо ему раскомментировать свойства. Например хертбит запускаем так: присваиваем на НПС локалку FLAG_HEARTBEAT == 1 в свойствах на локации. В общем смотри НПС там все расписано с комментариями..
Neverwinter Script
//==================================================
============================

//                  Запускаем стандартные еванты на НПС
//==================================================
============================

    //--------------------------------------------------------------------------
    // Если вы присвоите локальную переменную "FLAG_USER_DEFINED_EVENT" равную
    // TRUE, то все еванты присвоятся сразу. В противном случае присваивайте
    // По одному для каждого события.
    //--------------------------------------------------------------------------
    int iUserDef = GetLocalInt(OBJECT_SELF, "FLAG_USER_DEFINED_EVENT");

    // * Fire User Defined Event 1001 in the OnHeartbeat
    if (iUserDef==TRUE || GetLocalInt(OBJECT_SELF, "FLAG_HEARTBEAT") == TRUE)
        {SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT);}

    // * Fire User Defined Event 1002
    if (iUserDef==TRUE || GetLocalInt(OBJECT_SELF, "FLAG_PERCIEVE") == TRUE)
        {SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT);}

Прикрепленный файл  modules_npc.zip ( 564.76 килобайт ) Кол-во скачиваний: 14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Jul 19 2008, 17:58
Сообщение #3827


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

Класс: Вор
Характер: Chaotic Good
Раса: Эльф
МАСТЕР Переводов



Спасибо, Айв!

*Утащила мод, обернулась, не видел ли кто, и пошла ковырять* (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lirulin
сообщение Jul 24 2008, 16:06
Сообщение #3828


Level 3
*

Класс: Клерик
Характер: Chaotic Good
Раса: Эльф



Вот помню, что об этом уже спрашивали, но не могу найти, где это было - как организовать проверку на то, наступила ли в игре определенная дата?

Цитата(Aiwan @ Jul 10 2008, 23:09) *
Нет. Ставится на юзердеф. Perception срабаатывает и дает сигнал НПС дял скрипта. Надо?

Надо, надо! Полезный скрипт лишним не бывает!!!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jul 25 2008, 11:13
Сообщение #3829


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

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Есть функции GetCalendarYear/Month/Day. Соотвественно, нужно проверять
Neverwinter Script
if(GetCalendarYear() > <год> || (GetCalendarYear() == <год> && GetCalendarMonth() > <месяц>)  || (GetCalendarYear() == <год> && GetCalendarMonth() == <месяц> && GetCalendarDay() >= <день>))
    ...


Сообщение отредактировал Ilerien - Jul 25 2008, 11:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lirulin
сообщение Jul 25 2008, 18:20
Сообщение #3830


Level 3
*

Класс: Клерик
Характер: Chaotic Good
Раса: Эльф



Цитата(Ilerien @ Jul 25 2008, 13:13) *
Есть функции GetCalendarYear/Month/Day. Соотвественно, нужно проверять
Neverwinter Script
if(GetCalendarYear() > <год> || (GetCalendarYear() == <год> && GetCalendarMonth() > <месяц>)  || (GetCalendarYear() == <год> && GetCalendarMonth() == <месяц> && GetCalendarDay() >= <день>))
    ...


Ну вот, а я искал, искал... (учить надо (IMG:style_emoticons/kolobok_light/unsure.gif) ). Спасибо! Пошел делать дальше!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 28 2008, 07:10
Сообщение #3831


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



У меня вопрос про скрипт который вылажен на "Скрипты для новичков"
И вот в первом скрипте я уже сильно напутал (IMG:style_emoticons/kolobok_light/smile.gif)
Цитата
CreateItemOnObject("ResRef_cloth025", oPC, 1);

Как я понел надаобыло писать так, но почемуто вешь вобше непоевляется в инвинтаре а вот если написать...
Цитата
CreateItemOnObject("NW_CLOTH024", oPC, 1);

если писать только тег, то вещь появляется но не одевается при входе в игру...

Вот скрипт попрошу показать где я намудрил (IMG:style_emoticons/kolobok_light/crazy.gif) (я даже самые элементарные скрипты незнаю потому просто вырезаю всё ненужное и надеюсь, что это будит рабтоть (IMG:style_emoticons/kolobok_light/rolleyes.gif) )

Цитата
void main()
{
object oMod = GetModule();
object oPC = GetEnteringObject();

if (!GetIsPC(oPC) || GetLocalInt(oMod, "START_GAME"))
{return;}
{
SetLocalInt(oMod, "START_GAME", TRUE);


object oItem = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItem))
{
DestroyObject(oItem);
oItem = GetNextItemInInventory(oPC);
}


int i=0;
while(i<14)
{
DestroyObject(GetItemInSlot(i, oPC)); //
i++;

}

CreateItemOnObject("NW_CLOTH027", oPC, 1);



object oItemCr = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItemCr))
{
SetIdentified(oItemCr,TRUE);
oItemCr = GetNextItemInInventory(oPC);
}

{
SetXP(oPC, 15);
}


AssignCommand(oPC, ActionEquipMostEffectiveArmor());

}
}


Сообщение отредактировал Артём - Jul 28 2008, 07:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 28 2008, 09:10
Сообщение #3832


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

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



Артём, эта функция создает вещи не по тэгу, а по резрефу вещи. Поэтому по стандарту во всех вещах и объектах Биовари тэг = резрефу, чтобы не было путаницы. Чтобы твоя вещь создалась, сделай тэг и резреф одинаковыми. Например: тэг = ait_item_armor, резреф = ait_item_armor (резреф ограничен 16 символами). И не делай такие тэги, иначе быстро запутаешься, что у тебя за вещь, если будешь их просматривать по резрефам.

Так ты не указал, какую именно вещь нужно одеть. Потом, необходима мелкая задержка между созданием и одеванием вещи, потому что функция "CreateItemOnObject" более медленная, чем функция "ActionEquipItem" или "ActionEquipMostEffectiveArmor". Да, вот еще что. Вещи не одеваются на эвенте входа. Они хорошо одеваются на эвенте локации. Сам уже не раз наступал на эти грабли. Попробуй свой скрипт повесить на эвент локации входа. Вот как я одеваю вещи на нового персонажа:

Neverwinter Script
void ClientGiveClothers(object oPC, float fDelay)
{
    string sClass, sItem;
    object oClother;

    // Выдача одежды игроку
    switch (GetClassByPosition(1, oPC))
    {
        case CLASS_TYPE_BARBARIAN:  sClass = "barbarian"break;
        case CLASS_TYPE_FIGHTER:    sClass = "fighter";    break;
        case CLASS_TYPE_MONK:      sClass = "monk";        break;
        case CLASS_TYPE_PALADIN:    sClass = "paladin";    break;
        case CLASS_TYPE_RANGER:    sClass = "ranger";      break;
        case CLASS_TYPE_ROGUE:      sClass = "rogue";      break;
        case CLASS_TYPE_BARD:      sClass = "bard";        break;
        case CLASS_TYPE_CLERIC:    sClass = "cleric";      break;
        case CLASS_TYPE_DRUID:      sClass = "druid";      break;
        case CLASS_TYPE_SORCERER:  sClass = "sorcerer";    break;
        case CLASS_TYPE_WIZARD:    sClass = "wizard";      break;
    }

    if (GetGender(oPC) == GENDER_FEMALE)    sItem = "ac_" + sClass + "_f";
    else                                    sItem = "ac_" + sClass + "_m";

    if (GetItemPossessedBy(oPC, sItem) == OBJECT_INVALID)  oClother = CreateItemOnObject(sItem, oPC);
    if (oClother == OBJECT_INVALID) oClother = GetItemPossessedBy(oPC, sItem);
    DelayCommand(fDelay, AssignCommand(oPC, ActionEquipItem(oClother, INVENTORY_SLOT_CHEST)));
}

Задержка fDelay=0.1 секунда.

Функция вызывается из общего тела скрипта в конце твоего условия:
Neverwinter Script
object oPC = GetEnteringObject();
...
ClientGiveClothers(oPC, 0.1);


Сообщение отредактировал Zirrex - Jul 28 2008, 09:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 28 2008, 10:20
Сообщение #3833


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Большое спасибо за внятный ответ (IMG:style_emoticons/kolobok_light/good.gif) (IMG:style_emoticons/kolobok_light/smile.gif) сейчас буду пробовать
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 28 2008, 22:50
Сообщение #3834


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

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



Артём, поправил твой скрипт. Проверяй. Только не забудь его повесить на событие входа в локацию. Сделай для стартовой локации отдельный скрипт.

Neverwinter Script
void main()
{
    object oPC = GetEnteringObject();
    object oArea = GetArea(oPC);

    if (GetIsPC(oPC) == FALSEreturn;
    if (oArea == OBJECT_INVALID)    return;

    if (GetXP(oPC) == FALSE)
    {
        // Удаление вещей с персонажа
        int s;
        object oSlot;

        for (s = 0; s < 18; s++)
        {
            oSlot = GetItemInSlot(s, oPC);
            if (GetIsObjectValid(oSlot)) DestroyObject(oSlot);
        }

        // Удаление вещей из рюкзака персонажа
        object oItem = GetFirstItemInInventory(oPC);

        if (oItem != OBJECT_INVALID)
        {
            while (GetIsObjectValid(oItem))
            {
                DestroyObject(oItem);
                oItem = GetNextItemInInventory(oPC);
            }
        }
        // выдачи вещи
        object oClother = CreateItemOnObject("NW_CLOTH027", oPC, 1);
        // установка флага для всех вещей в рюкзаке "Определенные"
        object oItemCr = GetFirstItemInInventory(oPC);

        while(GetIsObjectValid(oItemCr))
        {
            SetIdentified(oItemCr, TRUE);
            oItemCr = GetNextItemInInventory(oPC);
        }
        // не проще сразу выдавать определенные вещи? Лишний цикл

        SetXP(oPC, TRUE);
        // на персонажа одевается выданная вещь
        DelayCommand(0.1, AssignCommand(oPC, ActionEquipItem(oClother, INVENTORY_SLOT_CHEST)));
        // сохранение персонажа
        DelayCommand(2.0, ExportSingleCharacter(oPC));
    }
}

Переменная не нужна. Дело все том, что если эта система предназначена для шарда, то после рестарта у твоего персонажа снова заберут вещи, выдадут заново вещь, определят ее и дадут персонажу 15 опыта, затерев то значение, которое будет. Простая проверка на 0. Если опыт равен 0, то выполнить условие, если нет, то пропустить. Потом нужно следить, чтобы опыт никогда не был 0.

Сообщение отредактировал Zirrex - Jul 28 2008, 22:52
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Jul 29 2008, 02:01
Сообщение #3835


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

Класс: Вор
Характер: Chaotic Good
Раса: Эльф
МАСТЕР Переводов



Zirrex, а если получится так, что в стартовую локацию придется входить не один раз, а несколько, и каждый раз с бедного игрока будут сдирать одежду и рюкзак ему чистить? (IMG:style_emoticons/kolobok_light/smile.gif) Это я к тому, что, может, стоит переменную повесить на то, входил игрок уже в локу или нет?
У меня работает так:
Neverwinter Script
#include "nw_i0_tool"
void main()
{
object oEnter = GetEnteringObject();

if (!GetIsPC(oEnter)) return;

//вот как раз наша переменная. проверяем, не произошло ли уже это событие
int DoOnce = GetLocalInt(oEnter, GetTag(OBJECT_SELF));
// если да - скрипт не сработает, если нет - продолжаем действовать.
if (DoOnce==TRUE) return;
// устанавливаем переменную, что игрок уже однажды вошел на локацию.
SetLocalInt(oEnter, GetTag(OBJECT_SELF), TRUE);
// а дальше уже можно чистить инвентарь и проделывать с игроком все, что угодно

Заранее извиняюсь, если сморозила глупость (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал shadowdweller - Jul 29 2008, 02:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 29 2008, 08:02
Сообщение #3836


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Спасибо обоим (IMG:style_emoticons/kolobok_light/smile.gif)
Что то меня эти скрипты пугают, не берусь их учить, только лазию и ПОРОШАЙНИЧЯЮ да и варую чюжые скрипты (IMG:style_emoticons/kolobok_light/crazy.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 29 2008, 09:10
Сообщение #3837


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

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



shadowdweller, а это еще почему? Такая система работает уже несколько лет, и ничего с бедного игрока не сдирали. Переменная стирается рестартом, а игрок входит на шард всегда через стартовую локацию, поэтому твоя правка бесполезна. Достаточно двух строк:

Neverwinter Script
void main()
{
...
    if (GetXP(oPC) == FALSE)
    {
        SetXP(oPC, TRUE);
    }
}

Даже если игрок и не покинет эту локацию сразу, а перезайдет на ней, то он останется ровно с тем, что ему дали.

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

Сообщение отредактировал Zirrex - Jul 29 2008, 09:12
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
shadowdweller
сообщение Jul 29 2008, 09:28
Сообщение #3838


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

Класс: Вор
Характер: Chaotic Good
Раса: Эльф
МАСТЕР Переводов



Zirrex, ну, если о шарде речь - тогда совсем другое дело. Я-то сингл имела в виду. (IMG:style_emoticons/kolobok_light/smile.gif) Причем, я так боялась, что это будет каждый раз происходить, что в моде на стартовую локацию можно только один раз зайти, если вышел - все, не вернешься (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 29 2008, 09:53
Сообщение #3839


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

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



shadowdweller, а причем тут одиночная игра? Там еще проще. Можно всегда сохранить статус игры. Потом, именно в одиночной игре подобные скрипты вешаются на события модуля, а не локации, чтобы, как ты описала выше, не было подобных эксцессов.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 29 2008, 21:46
Сообщение #3840


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Вопрос есть скрипт который позволяет не сбивать действия? К примеру у меня НПС посли диалога идёт в указанное место, но при попытке поговорить с ним ВСЁ он стоит ступором и несоберается выполнять задоный скрипт.

P.S
Надеюсь я не сильно много задают вопросов? С таким темпом могу быстро вам надоесть (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Jul 29 2008, 22:40
Сообщение #3841


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

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Тебе нужно в хербите НПС ставить проверку GetDistanceToObject(бла,бла) >=1.0 до объекта куда нужно и если он не там пинать его командой AssignCommand(<НПС>, ActionMoveToObject(бла)); ну и соответсвующие проверки на - болтает ли, дерется, идет ли
что-то типа такого:
Neverwinter Script
....
if(GetLocalInt(...)==...)это ты в диалоге вешаешь...а в хербите если есть локалка запуститься следующие
{
oObject = <твоя точка назначения>
if(!GetIsInCombat(OBJECT_SELF) && !IsInConversation(OBJECT_SELF))
{
  if(GetDistanceToObject(oObject)>=1.5)
  {
   AssignCommand(OBJECT_SELF, ActionMoveToObject(oObject));
  }
}
}
....


Сообщение отредактировал Melisse - Jul 29 2008, 22:43
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 30 2008, 06:33
Сообщение #3842


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



А можно как нибудь поподробней для чайника. можно целый скрипт?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Jul 30 2008, 07:23
Сообщение #3843


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

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



Берешь с слота OnHerbit у НПС скрипт и в самом начале пишешь:

Neverwinter Script
if(GetLocalInt(OBJECT_SELF,"QUEST")==TRUE)
{
object oObject = GetObjectByTag("СЮДА ТЭГ ОБЪЕКТА, К КОТОРОМУ НАДО ИДТИ");
if(!GetIsInCombat(OBJECT_SELF) && !IsInConversation(OBJECT_SELF))
{
  if(GetDistanceToObject(oObject)>1.0)
  {
   AssignCommand(OBJECT_SELF, ActionMoveToObject(oObject));
  }
  else DeleteLocalInt(OBJECT_SELF,"QUEST");
}
}


и в диалоге на в тот скрипт что заставляет НПС идти к точке назначения вставь
Neverwinter Script
SetLocalInt(OBJECT_SELF,"QUEST",TRUE);


должно сработать

Сообщение отредактировал Melisse - Jul 30 2008, 08:08
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 30 2008, 08:03
Сообщение #3844


Level 5
**

Класс: Друид
Характер: Neutral Good
Раса: Человек



Спасибо сейчас буду тыкать (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lordeath
сообщение Aug 12 2008, 22:21
Сообщение #3845


Level 2
*

Класс: Оборотень
Характер: True Neutral
Раса: Эльф



Куча вопросов по реализации некоторых идей =)
Буду благодарен если мне подскажут как все сделать или кинут ссылку где это описано.
1. Появление разных рас в разных местах при первом заходе в модуль. То есть например эльфы начинают в одной локации, а люди в другой.
2. Видел в каком то модуле что была настроена рассовая агрессия. Тк модуль будет ориентирован на мультиплеер нужно сделать так чтобы союз одних рас был агрессивен по отношению к союзу других.
3. Еще хотел бы узнать как реализовать отдельный респаун каждого союза в своем городе.
4. Начисление опыта и золота за убийство игрока. ну например по формуле lvl убитого игрока x 50 , если если убитый игрок на 5 уровней ниже то опыт и золтто не дается.

Фух, пока все, надеюсь что сильные скриптеры мира сего помогут =)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ogneslav
сообщение Aug 13 2008, 07:21
Сообщение #3846


Level 4
**

Класс: Друид
Характер: True Neutral
Раса: Человек



Цитата
1. Появление разных рас в разных местах при первом заходе в модуль. То есть например эльфы начинают в одной локации, а люди в другой.


было-бы не плохо не только по рассе, но еще и по классу(мне для сингла).

Цитата
Еще хотел бы узнать как реализовать отдельный респаун каждого союза в своем городе.


тоже было-бы интересно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melisse
сообщение Aug 13 2008, 07:37
Сообщение #3847


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

Класс: Волшебник
Характер: Neutral Good
Раса: Фея
NWN: Скриптинг [PW]
Край Лесов



1. Да это то просто.
тригер ставишь в локе где появляются игроки и прямо под точку захода в модуль.
Таких скриптов тут на форуме множество - поищите поиском.
На онЭнтер тригерра ставить что-то типа такого:

Neverwinter Script
object oPC = GetEnteringObject();
object oPoint;
int nRace = GetRaticalType(oPC);


switch(nRace)
{

case RATICAL_TYPE_ELF://Если еще и по классам то сюда еще один switch просто с классами и все
{
  oPoint = GetObjectByTag("Тэг точки");
DelayCommand(1.0,AssignCommand(oPC,JumpToObject(oPoint));
break;
}
case RATICAL_TYPE_HUMAN:
.....

}


2. Не поняла, чего надо?

Сообщение отредактировал Melisse - Aug 13 2008, 07:38
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lordeath
сообщение Aug 17 2008, 14:57
Сообщение #3848


Level 2
*

Класс: Оборотень
Характер: True Neutral
Раса: Эльф



Допустим сделать так чтобы игроки-люди по умолчанию были агрессивны к игрокам-полуоркам.

За первое спасибо большое.

Сообщение отредактировал Lordeath - Aug 17 2008, 14:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Aug 17 2008, 23:56
Сообщение #3849


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

Класс: Волшебник
Характер: Lawful Evil
Раса: Эльф
NWN: Скриптинг [PW]
Gem of the North



Второе - ставим на onClientEnter модуля
Neverwinter Script
void main()
{
    object oPC = GetEnteringObject();
    object oOtherPC = GetFirstPC();
    int nRace = GetRacialType(oPC);
    int nOtherRace;
   
    while(GetIsObjectValid(oOtherPC))
    {
        nOtherRace = GetRacialType(oOtherPC);
        if((nOtherRace == RACIAL_TYPE_HUMAN && nRace == RACIAL_TYPE_HALFORC) ||
            (nRace == RACIAL_TYPE_HUMAN && nOtherRace == RACIAL_TYPE_HALFORC))
            SetPCDislike(oPC, oOtherPC);
        oOtherPC = GetNextPC();
    }
}
За способность скомпилиться не ручаюсь - не тестил. Остальное завтра - хочу спать (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал Ilerien - Aug 17 2008, 23:56
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lordeath
сообщение Aug 18 2008, 07:51
Сообщение #3850


Level 2
*

Класс: Оборотень
Характер: True Neutral
Раса: Эльф



Благодарю, попробую.
Цитата
#include "botd_teams"

int StartingConditional()
{
object oPC = GetPCSpeaker();
int nTeam = GetTeamNumber(oPC);
int nToken;
if (nTeam == BOTD_ANIEL)
nToken = 5101;
else if (nTeam == BOTD_ROSHNAK)
nToken = 5201;
else
return FALSE;

switch (GetBonusLevel(nTeam))
{
case 0:
SetCustomToken(nToken,"unexperience. We need more funds to adequately train them.");
break;
case 1:
SetCustomToken(nToken,"junior. We need more funds to adequately train them.");
break;
case 2:
SetCustomToken(nToken,"novice. We need more funds to increase their skills.");
break;
case 3:
SetCustomToken(nToken,"advanced. More funds will ensure they are in superb condition.");
break;
case 4:
SetCustomToken(nToken,"experienced. More funds will ensure they are in superb condition.");
break;
case 5:
SetCustomToken(nToken,"superior. More funds will ensure they are in superb condition.");
break;
case 6:
SetCustomToken(nToken,"vertan. More funds will ensure they are in superb condition.");
break;
case 7:
SetCustomToken(nToken,"elite. More funds will ensure they are in superb condition.");
break;
case 8:
SetCustomToken(nToken,"ultra-elite. More funds will ensure they are in superb condition.");
break;
case 9:
SetCustomToken(nToken,"maximized. There is no more advancement available.");
break;
}
return TRUE;
}

Вот разбирал тут по кусочкам один модуль, возник вопрос - не могу заменить в скрипте фразы которые в кавычках русскими словами. Это галюн именно моего редактора или Авроры в целом?

Сообщение отредактировал Lordeath - Aug 18 2008, 08:28
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 152 153 154 155 156 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 23rd April 2024 - 19:18