Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74
Melisse
В NWN 1 это вроде движковая штука...свойство фамильяра - управляемость и поэтому никак не сделать.
С этой "штукой" кстати багов тьма...
virusman
Хм.. надо будет поиграться с "вселением".. smile.gif
Melisse
Очень было бы кстати, а то некоторые интересные заклинания из пхб- например "проекция" - не сделать) ^_^
Sailar
А из NPC если ему заменить дефолтные скрипты на фамилярочьи некак? хотя я так и ненашол скрипт фамиляров. Тлько несколько и то они странные какието на смену контроля нет ни намека
Я тестил вот эту функцию по описанию вроде должна менять лидера партии
Neverwinter Script
AssignCommand(oPC, AddToParty(oPC,oHench) );
и если сделать юнита фамиляром хотя я беспонятия как то
Neverwinter Script
AssignCommand(oPC,UnpossessFamiliar(oHech));
но от них результатов 0. Значит они для другого наверно.?....

В NWN 2 есть функция CONTROL.....

При том странно что биовары это в движок кинули я смотрел спелки они в скриптах хотя это не спелка а команда.

Был как вариант сделать морф PC но все бы хорошо только у PC имя вроде нельзя сменить скриптого и эти баффы(иконки) эффектов видны их бы скрыть тогда. + если в 2da добовлять морфы то начинаються миниглюки то игра виснет, или вылетает иногда хак неподгружаеться почемуто и Polymorph не с нужнеым индексом числа неподгружаеться. И морфам вроде можно только 3 способности дать правдо незнаю если я в 2da бы дописал еще способности они бы работали, типо SPELL 4, 5,6 итд? + есть недостаток что специализация во время морфа остаеться оснавная можно только дописать РАссовый тип. Тагже все особые способности у полиморфа бесконечьные хз как число можно было бы установить.
Впрочим может у комуто удовалось всеже сделать управление NPC, или хотя бы безглючный морф чтобы все вышепиричисленые проблемы фиксиировались очень надо у меня мод из-за этого остановился.
Ilerien
Скрипты фамилиаров с вселением не помогут. Максимум, с чем они помогут - так это непись сможет подчиняться голосовым командам.
Цитата
Neverwinter Script
AddToParty(oPC,oHench);
Эта функция добавляет существо к партии.
Цитата
Neverwinter Script
UnpossessFamiliar(oHech);
А эта - выселяет игрока из фамилиара.

Управление можно сделать с помощью НВНХ.
shadowdweller
Цитата(denis0k @ May 19 2008, 21:08) *
Фит можно повесить на шкурку и одеть ее игроку

Айв говорил, что это делается при старте модуля. А в какой-то другой момент можно это сделать, например, из диалога?
Ilerien
В любой smile.gif
Lex
Айв скорее всего имел ввиду шкурку. Те ее лучше в начале модуля и потом весь модуль на нее вешать что нужно. Хотя это и не обязательно, можно повесить когда станет нужным. Просто тогда игрок может заметить что он получил и одел предмет который не видит в инвентаре. Но если такая мелочь не смущает - одевать можно когда угодно.
Sailar
НВНХ что это такое? поподробнее пожалуста. Это прога или че? Если прога где скачать можно?
virusman
http://www.nwnx.org/
shadowdweller
Цитата(Lex @ May 29 2008, 00:22) *
Просто тогда игрок может заметить что он получил и одел предмет который не видит в инвентаре.

А игрок и должен заметить, потому что это вознаграждение за квест. Спасибо всем за помощь. Теперь буду пытаться сваять скрипт. Так что скоро вернусь в тему ныть и мучить. biggrin.gif
Sailar
Спасибо все скачал а NWNX работает только если играть одному чрез интернет? т.е заходить в игру через подключение или работает тагже с одиночьным модуль или кампанией. Да и какой плагин к NWN X надо скачивать что бы функции управления NPC были чета я ненашол таких
virusman
Цитата(Sailar @ May 30 2008, 03:42) *
Спасибо все скачал а NWNX работает только если играть одному чрез интернет? т.е заходить в игру через подключение или работает тагже с одиночьным модуль или кампанией. Да и какой плагин к NWN X надо скачивать что бы функции управления NPC были чета я ненашол таких
Да, NWNX - это серверная примочка.
Какой плагин и как управлять - это к Ilerien'у. Я тоже не совсем понял.
denis0k
Нет такого плагина. И я сомневаюсь если честно, что появится. Слишком много костылей городить. Например, GetFirst/NextPC() будут возвращать новую кричу (не будут - поломает большинство скриптовых систем), старая (исходная) станет неписем. Действия над исходной (убийство к примеру) не пропишутся в бд сервера (в случае с фамом перед смертью тебя кидают в родное тельце). Даже если сделать 2 PC, это уже всплывает проблема идентификации. И это самое простое, что пришло в голову, там граблей еще больше.

P.S. Играйте в нвн2.
Sailar
Блин что только как сервак это плохо т.к я кампанию делаю мне надо что-бы это можно было делать в режиме кампании. И NextPC() чето нефига неработает не выбираеться NPC хотя как я понимаю этого и недолжно быть т.к только в сети. Если нельзя выберать игрока обычным способом то можно ли сделать так в 2da создать фамиляра только что бы он потом непоявлялся при создании мага когда тот выберает какого фамиляра взять себе. И в игре скриптого зайти в управление фамиляром??? так можно хотя бы? Если нет то жаль придеться забить на NWN и искать РПГ движок где так можно сделать.
P/S NWN 2 была бы неплохой игрой и наверно многие делали модули по нему а не по NWN_1 там больше функций тулсера + графика современее и все бы хорошо если бы не одно но кривость рук обсидана убивает глюки от игры,с тулсероб до плагина на 3ds max в котором невозможно нормально создавать модели причина все виснит в игре все виснет, в тулсере вобще карты частенько криво сохраняються. патчи только карявят игру если оригенальную кампанию я непрошол из-за того-что она висла после битвы у крепости то аддон вобще лагает по страшному, а лазить поинтернету и искать к нему всякие исправные библиотеки мне и лом и качать надоело уже то игра навернеться то размер недецкий вобщем NWN2 это ацтой без будущего т.к я понял что там дотого глуканутый движок что ниодин патч проблему неисправит надо писать весь движок заного игра порчиная а в NWN-1 все играют так что у игры есть настоящие и небольшое будущие. А про глюки NWN2 можно говорить часами
virusman
NWNX-плагином сделать вселение, думаю, не так-то сложно. Просто ни я, ни другие разработчики таких плагинов не делали.
В любом случае, NWNX - это для сервера (пока что, по крайней мере). Если хочется сделать возможность управления хенчем в сингле - советую посмотреть OHS:
http://nwvault.ign.com/View.php?view=Scrip...ail&id=2568
Ilerien
Цитата
Какой плагин и как управлять - это к Ilerien'у. Я тоже не совсем понял.
Я и имел в виду, что его можно написать smile.gif
virusman
Цитата(Ilerien @ May 31 2008, 18:22) *
Я и имел в виду, что его можно написать smile.gif
Добрый. biggrin.gif Послал новичка NWNX-плагины писать. crazy.gif
Ilerien
Цитата(virusman @ May 31 2008, 17:24) *
Добрый. biggrin.gif Послал новичка NWNX-плагины писать. crazy.gif
А то ph34r.gif Доброты не занимать prankster2.gif
shadowdweller
Возникла такая проблема. По идее, этот скрипт заставляет потенциального хенча, который еще не присоединен к партии, при виде игрока сказать фразу, нечто подобное было в оригинальной кампании (откуда был содран и слегка видоизменен). Раньше работал, теперь вдруг перестал, хотя компилируется.
Скрипт стоит на OnEnter триггера.
Строка, которую должен сказать хенч, в списке диалогов имеется.

Neverwinter Script
void main()
{
    string sTag = "HENCH_1";
    object oHenchman = GetNearestObjectByTag(sTag);
    object oEnter = GetEnteringObject();
    if (GetIsObjectValid(oHenchman) &&
        IsInConversation(oHenchman) == FALSE &&
        GetIsObjectValid(GetMaster(oHenchman)) == FALSE &&
        GetLocalInt(oEnter,"NW_L_Hailed_" + sTag) == FALSE)
    {
        SetLocalInt(oEnter,"NW_L_Hailed_" + sTag,TRUE);
        AssignCommand(oHenchman,SetFacingPoint(GetPosition
(oEnter)));
        AssignCommand(oHenchman,SpeakOneLinerConversation("Hen1_Hail"));
    }
}

Это глюк тулса/игры или все-таки в скрипте ошибка?
Ilerien
Возможно, перестал существовать диалог Hen1_Hail
shadowdweller
Я тоже уже об этом думала. Да в том-то и дело, что диалог цел и невредим... sad.gif и даже название у него совпадает с тем, что указано в скрипте
Sugo77
Большое спасибо одному скриптеру,он помог разобраться с фракциями.

С этим вопрос тоже закрыт почти,но входе него выплыл другой вопрос,даже 3:

1-После убийства монстрами моей же фракции меня,если я атаковал монстров своей же фракции,(ну можно сказать например ту же фракцию тороговцы)они мне не перестают быть враждебны,даже после моей смерти от них,или после их смерти от меня,новый выходящий среспившийся моб по прежнему враждебен мне(эта фракция стает враждебной мне навсегда,а я знаю 100% что этого можно избежать,видел на буржуйских серверах,только незнаю как,этого добиться),как можно это сбросить(например после моей смерти)?чтобы новый респавнющийся монстр был мне снова дружественный,подскажите плиз скриптик знающие это люди?.
2-Как после перехода на тригер,игроки моей же фракции(такой же какую выбрал и я),автоматически присоединялись ко мне в отряд?,кто знает такой скрипт и куда его вставлять?.Отпоститесь сдесь плиз.
3-как после смерти сделать так чтоб я воскрешался на какуто другую точку,а не лежал там где и убили?
Neakris
Цитата
чтобы новый респавнющийся монстр был мне снова дружественный,подскажите плиз скриптик знающие это люди?.

Тут и скриптиков не надо... лезем в редактировать->свойства модуля->события->событие OnPlayerDead. Изменяй дефолтный (стоящий по умолчанию) скрипт. Там ищи строчки в конце SetStandardFactionReputation(STANDARD_FACTION_COMM
ONER, 80, oPlayer); и т.д. - именно они отвечают за то,чтобы после смерти игрока существа, принадлежащие (в этой строчке) к фракции обывателей, стали нейтральными по отношению к игроку. Меняй на здоровье. Единственное, плохо, что у тебя нестандартная фракция - функции для редактирования репутации в нестандартной фракции я не понмю.
Но, скажи, если у тебя 3 воюющие стороны, то что мешает тебе использовать стандартные, внутриигровые фракции? Скажем, терране - обыватели, зерги - враждебные, а протосы - торговцы. Потом просто меняешь им отношение на нужное и все) А вместо защитников можешь поставить, скажем, торговцев в лагерях, которых не будут атаковать ворвавшиеся в лагерь воины.
Цитата
как после смерти сделать так чтоб я воскрешался на какуто другую точку,а не лежал там где и убили?

смотришь редактировать->свойства модуля->события->событие OnPlayerRespawn. В самом конце есть строчки:
object oSpawnPoint = GetObjectByTag(sDestTag);
AssignCommand(oRespawner,JumpToLocation(GetLocatio
n(oSpawnPoint)));
Вот они-то и отвечают за то, чтобы игрок отправился в нужную точку после респавна. Точка - это местоположение объекта с тэгом sDestTag.
Чтобы заработало создай объект с таким тэгом (или со своим, только в скрипте тогда его поменяй) и вынеси, если не заработет, эти строчки из-за скобок оператора if (а то я в скрипте этом не особо разбирался), т.е. поставь в самый конец, перед самой последней фигурной скобочкой.
Цитата
ак после перехода на тригер,игроки моей же фракции(такой же какую выбрал и я),автоматически присоединялись ко мне в отряд?,кто знает такой скрипт и куда его вставлять?.Отпоститесь сдесь плиз.

Использовать функцию AddHenchman, если нужно сделать из них полноценных сторонников (тогда и сторонникам этим нужно хенчманские скрипты вставить, какие - смотри в теме скрипты для новичков). А если просто чтобы они побежали за тобой - используй функцию ActionForceFollowObject. Единственное, я не знаю как сделать так, чтобы ВСЕ твои сторонники к тебе присоединились. Тут нужно использовать цикл while, а я сним не силен работать.
Sugo77
Вот тот суперскй рабочи скрипт с фракциями
Neverwinter Script
void main()
{
object oPC = GetEnteringObject();

object oFactionMember = GetObjectByTag("fact_1");
if(GetIsPC(oPC))
      AdjustReputation(oPC, oFactionMember,-100);

oFactionMember = GetObjectByTag("fact_2");
if(GetIsPC(oPC))
      AdjustReputation(oPC, oFactionMember, 100);

oFactionMember = GetObjectByTag("fact_3");
if(GetIsPC(oPC))
      AdjustReputation(oPC, oFactionMember, -100);
      }

Но если атаковал своего же моба он остается враждебным!
Я вообшем удалил нестандартные фракции свои и заменил на 3 стандартных для всех мобов Торговец Зашитник и Враждебный как и писал Neakris но он почему то срабатывает только для одной стороны!Может я нетак значения применил проверьте,значения исходя из первого моего главного скрипта по 100 и -100
Neverwinter Script
// * Note: waiting for Sophia to make SetStandardFactionReptuation to clear all personal reputation
    if (GetStandardFactionReputation(STANDARD_FACTION_COM
MONER, oPlayer) <= 10)
    {  SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_COMM
ONER, 100, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_MER
CHANT, oPlayer) <= 10)
    {  SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_MERC
HANT,-100, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_DEF
ENDER, oPlayer) <= 10)
    {  SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_DEFE
NDER, 100, oPlayer);
    }

    DelayCommand(2.5, PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH));

}


Может его надо 3 раза прописать но вопрос тогда куда вставлять?
azathoth
Цитата
Но если атаковал своего же моба он остается враждебным!

Правильно, кому понравиться, что его бьют? vava.gif смотри "repadjust.2da" - хз какое поле за что отвечает, но смена отношения там.

Neverwinter Script
if (GetStandardFactionReputation(STANDARD_FACTION_MER
CHANT, oPlayer) <= 10)
    {  SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_MERC
HANT,-100, oPlayer);
    }

тут как я понял говорится о том, что "если торговец вас ненавидит - заставить ненавидеть вас ещё сильнее". по умолчанию торговцы не такие уж и буки.
Sugo77
убрал я у себя фракцию враждебный так как в этом скрипте ее нету,я его перевел на руский сдес защитник простолюдин и торговец,я такие фракции и сделал ,но всеравно он работает тока с торговцами,получается что вообще неработает так как торговцы и без этого скрипта возвращаются в дружественные отношения после убийства ими игрока, чтоже нетак непойму?

Да а кстати глобальный эффект что означает во фракциях?Я его поставил для всех фракции.
А также шкала П-незнаю что такое ето?но она у меня на 50 стоит,я поставил для всех фракций,ее вообше как надо ставить?

Neverwinter Script
// * make friendly to Each of the 3 common factions
    AssignCommand(oPlayer, ClearAllActions());
    // * Note: waiting for Sophia to make SetStandardFactionReptuation to clear all personal reputation
    if (GetStandardFactionReputation(STANDARD_FACTION_COM
MONER, oPlayer) <=-100)
    {  SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 100); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_COMM
ONER, 100, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_MER
CHANT, oPlayer) <=100)
    {  SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad",-100); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_MERC
HANT, 100, oPlayer);
    }
    if (GetStandardFactionReputation(STANDARD_FACTION_DEF
ENDER, oPlayer) <=-100)
    {  SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 100); // * Player bad
        SetStandardFactionReputation(STANDARD_FACTION_DEFE
NDER, 100, oPlayer);
    }

    DelayCommand(2.5, PopUpGUIPanel(oPlayer,GUI_PANEL_PLAYER_DEATH));

}




Еше подскажите скрипт на дислайк при нажатии на тригер OnClick также для трех фракций
Я толко вот какойто отрывок нашел но толку от него ноль без полного скрипта,кто работал с дислайками? помогите плиз создать этот скрипт

void SetPCDislike(object oPlayer, object oTarget)
Sailar
Подскажите пожалуста тогда как написать такой плагин? я знаю немного Borland c++ Builder и все. Тока мне надо чтоб плагин не тока в сетевой игре работал но и в кампании если какиенибудь исходные коды как их делать? я тут находил плагин позволяющий писать букву "Я"
Он без NWNX работает мнеб типа такого только добавляющий функцию управления NPC как преблизительно его написать или функцию эту где узнать напишите пожалуста если не сложно поподробнее....... scratch_one-s_head.gif
virusman
Никак..
Sailar
Блин а можно тогда переименовать главного героя скриптом и при морфе сделат больше 3ех родных абил и еще бы конечными их сделать.... Или может есть какаянибудь альтернатива?
virusman
Я уже давал ссылку.
http://nwvault.ign.com/View.php?view=Scrip...ail&id=2568
Sugo77
Ну помогите же с написанием скрипта на дислайки плиз,чтоб нажав на тригер игрок был враждебен к дргим двум разным игрокам,других фракций.

вот это вступление скрипта

void main
SetPCDislike(object oPlayer, object oTarget)

azathoth
После такого вступления требуется виртуозное исполнение! Я сейчас дорабатываю свою библиотеку функций распарсивания строк (получается интересная возможность писать "полускрипты" и создавать "мягкий" код). Ваш вопрос побудил меня задуматься над совершением ещё одного шага вперёд от ExecuteCommand(string sCommand) к DoStuff(string sWhat, int bAndDoItGood), где мы переходим от искуственного машинного языка к литературному. Сравните:
Neverwinter Script
ExecuteCommand("if (on_trigger AND $[0] == %PC%) foreach AbstractNwnPlayer player FROM `factions` WHERE `ID` <> %PC%["FACTION"] player->Instance()->ModAV 'Disposition' -100");

и
Neverwinter Script
DoStuff("чтоб нажав на тригер игрок был враждебен к дргим двум разным игрокам,других фракций", TRUE);

Не правда ли небо и земля? Трезво оценивая свои силы, думаю, что шансов реализовать задуманое до стечения века почти нет. Но мало ли - вдруг.
virusman
Очень интересно. smile.gif
Я для таких вещей встроил в НВН скриптовый интерпретируемый язык Ruby и собираюсь сделать веб-интерфейс, в котором визуально выбираешь логику - и на её основе генерируется скрипт, который сразу же подхватывается сервером.
Sugo77
Neverwinter Script
ExecuteCommand("if (on_trigger AND $[0] == %PC%) foreach AbstractNwnPlayer player FROM `factions` WHERE `ID` <> %PC%["FACTION"] player->Instance()->ModAV 'Disposition' -100");


Это скрипт на дислайки?
Пробовал вставлять в OnClick тригера,выдает ошибки на f7

Помогите написать етот скрипт в конце корнцов((((((((кто нибудь из скриптеров,я застрял на этом,в создании модуля
Lex
этот скрипт "на дислайки" требует для своей работы еще и парсера нормального, которого Аза тут конечно не выложил smile.gif
В чем проблема использовать SetPCDislike то? Выставил кому надо и готов твой скрипт на дислайк. Правда игрок ручками все поменять обратно может.
Pryanik
Друзья а можете подсказать где взять а может уже кто и использует в своих PW скрипт на Area Reset (аналог Reset Instances из Мира Варкрафта). Мне нужен любой скрипт обнуляющий заданную Area и расставляющий в ней все заново(существ, вейпоинты, плейсеблс). Хочу припаять его к Камню перед пещерой на On_Used. А то я замучался нашел несколько скриптов но они существ не резетят, только энкаутеры, а мне так нельзя у меня много мобов по вейпоинтам бегает. Заранее спасибо rolleyes.gif
Sugo77
Lex,дорогой,дак а где он находиться SetPCDislake?
И как правилно его настроить?но мне бы сперва его найти
по словам так просто но незнающему человеку (мне) не просто разобраться с дислаками сначало найти бы еше,помоги плиз с етим вопросом.А то работа встала на етом(запускаю через интернет сервер для теста и только с мобами порядок,а игроки других двух фракций невраждебны мне.Помоги плиз с этим вопросом.
Ilerien
Pryanik, для этого нужно знать структуру того, что у тебя на локе лежит. Лучше всего пометить каждую стартовую точку, на которой должен создаваться обжект, особым вейпоинтом, и локалками на нём указать, что за обжект.
Sugo77
Ну подскажите плиз со скриптом set pc dislike
работа стоит а очень охото дальше над шардом работать
Sugo77
Вот тут наконецто нашел много скриптов на дислайки но

http://www.city-of-masters.ru/forums/lofiv....php?t1195.html

как выбрать подходящий мне?

вот этот полный скрипт?
Neverwinter Script
object oEnter = GetEnteringObject();
if (!GetIsPC(oEnter)) return;
object oNextPC;
int i=2;
do
{
    oNextPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYE
R_CHAR_IS_PC,oEnter,i);
    i++;
    <тут проверка расы и выставление дизлайка если надо>
} while(GetIsPC(oNextPC));


Его можно изменить на OnClick локи?потому что на он интер у меня другой

вот еше тут полно
http://nwn.gamerland.ru/lofiversion/index.php/t47-100.html

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

    if (GetIsDM(oPC))
    {
        return;
    }

    object oPlayer = GetFirstPC();
    while (GetIsObjectValid(oPlayer))
    {

        if (PK_Enable(oPlayer,oPC))
        {
            SetPCDislike(oPlayer,oPC);
        }
        else
        {
            SetPCLike(oPlayer,oPC);
        }

        if (PK_Enable(oPC,oPlayer))
        {
            SetPCDislike(oPC,oPlayer);
        }
        else
        {
            SetPCLike(oPlayer,oPC);
        }

        oPC = GetNextPC();
    }

    int PK_Enable(object oMatou,object oMorreu){
    return
    (
        GetIsDM(oMatou) ||
        GetIsDM(oMorreu) ||
        GetIsDMPossessed(oMatou) |
        GetIsDMPossessed(oMorreu) ||
        (oMatou == oMorreu) ||
        !GetIsPC(oMatou) ||
        (oMatou == GetModule())
    );
}
}


и этот
Neverwinter Script
// The PC who entered the trigger is set to dislike all the PC's in the module
void main()
{
    // Get entering PC
    object oEnterer = GetEnteringObject();

    // make sure they are not a DM
    if(GetIsPC(oEnterer) && !GetIsDM(oEnterer))
    {
        // Loop all PC's in the module and set this PC to dislike them - uh oh
        object oPC = GetFirstPC();
        while(GetIsObjectValid(oPC))
        {
            // Set to dislike
            SetPCDislike(oEnterer, oPC);

            // Get next PC
            oPC = GetNextPC();
        }
    }
}


Какой больше подходит для моего случая для 3 ех сторон и как его изменить подскажите плиз Гренд-мастера(

Вот моя работа на он клицк тригера проверьте для 3 ех фракций
Neverwinter Script
// The PC who entered the trigger is set to dislike all the PC's in the module
void main()
{
    // Get entering PC
    object oClicker = GetClickingObject();

    // make sure they are not a DM
    if(GetIsPC(oClicker) && !GetIsDM(oClicker))
    {
        // Loop all PC's in the module and set this PC to dislike them - uh oh
        object oPC = GetFirstPC();
        while(GetIsObjectValid(oPC))
        {
            // Set to dislike
            SetPCDislike(oClicker, oPC);

            // Get next PC
            oPC = GetNextPC();
        }
    }
}


ошибок при ф 7 невыдает но как будет работать хз

Нет тригер перестает работать(портировать)после етого скрипта хз почему
azathoth
Цитата
но как будет работать хз

дык запусти и посмотри

Цитата
тригер перестает работать(портировать)после етого скрипта

onClick срабатывает при нажатии на триггер, а не при проходе через него. либо использовать онТранзакшен (или как его там) или делать Jump в нужное место вручную.
Sugo77
Вроде етот срабатывает на он интер,я просто добавил специальную переходную локу с другими тригерами отдельными для такого дела ,но есть одно НО(((,он срабатывает и на мою фракцию это почему же так?
Neverwinter Script
// The PC who entered the trigger is set to dislike all the PC's in the module
void main()
{
    // Get entering PC
    object oEnterer = GetEnteringObject();

    // make sure they are not a DM
    if(GetIsPC(oEnterer) && !GetIsDM(oEnterer))
    {
        // Loop all PC's in the module and set this PC to dislike them - uh oh
        object oPC = GetFirstPC();
        while(GetIsObjectValid(oPC))
        {
            // Set to dislike
            SetPCDislike(oEnterer, oPC);

            // Get next PC
            oPC = GetNextPC();
        }
    }


То есть мне стают враждебными абсолютно все,и свои,и враги.
Подскажите как этот рабочий скрипт доработать чтобы моя фракция мне небыла враждебна только остальные 2


А вот этот ну очень большой скрипт на дислайки можно настроить как то под мой модуль,и если да то как

Neverwinter Script
void CheckParty(object oPC1, object oPC2)
{
    object oPM = GetFirstFactionMember(oPC1);
    object oGood, oEvil;

    int g = 0, e = 0, nRace, nAlign;
    int nAlign1 = GetAlignmentGoodEvil(oPC1);
    int nRace1 = GetRacialType(oPC1);

    string sSR1 = GetStringUpperCase(GetSubRace(oPC1));
    string sSR;

    if(nRace1 == RACIAL_TYPE_HALFORC ||
      nRace1 == RACIAL_TYPE_ELF && TestStringAgainstPattern("**DROW**", sSR1) ||
      nRace1 == RACIAL_TYPE_ELF && TestStringAgainstPattern("**DARK**", sSR1) ||
      nRace1 == RACIAL_TYPE_HUMAN && nAlign1 == ALIGNMENT_EVIL)
    { oEvil = oPC1; oGood = oPC2; }
    else
    { oEvil = oPC2; oGood = oPC1; }

    while(GetIsObjectValid(oPM))
    {
        nRace = GetRacialType(oPM);
        nAlign = GetAlignmentGoodEvil(oPM);
        sSR = GetStringUpperCase(GetSubRace(oPM));

        if(nRace == RACIAL_TYPE_HALFORC ||
          nRace == RACIAL_TYPE_ELF && TestStringAgainstPattern("**DROW**", sSR) ||
          nRace == RACIAL_TYPE_ELF && TestStringAgainstPattern("**DARK**", sSR) ||
          nRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_EVIL)
        { e++; }
        else
        { g++; }

        oPM = GetNextFactionMember(oPC1);
    }

    if(e > g) { RemoveFromParty(oGood); }
    else { RemoveFromParty(oEvil); }
}

void SetDislike(object oTest)
{
    object oFL, oTFL, oPC = GetFirstPC();

    int nPCRace, nTRace, nLike, nTLike, nAlign, nTAlign;

    string sSubRace, sTSubRace, sArea;

    nTRace = GetRacialType(oTest);
    nTAlign = GetAlignmentGoodEvil(oTest);
    sTSubRace = GetStringUpperCase(GetSubRace(oTest));
    sArea = GetTag(GetArea(oTest));
    oTFL = GetFactionLeader(oTest);

    while(GetIsObjectValid(oPC))
    {
        nPCRace = GetRacialType(oPC);
        nAlign = GetAlignmentGoodEvil(oPC);
        nLike = GetIsEnemy(oTest, oPC);
        nTLike = GetIsEnemy(oPC, oTest);
        sSubRace = GetStringUpperCase(GetSubRace(oPC));
        oFL = GetFactionLeader(oPC);

        if(nLike && !nTLike) SetPCLike(oTest, oPC);
        if(!nLike && nTLike) SetPCLike(oPC, oTest);

        if(!nLike && sArea != "Arena" && oPC != oTest && !GetIsDM(oPC))
        {
            if(nTRace == RACIAL_TYPE_HUMAN && nTAlign == ALIGNMENT_GOOD)
            {
                if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_EVIL)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_HALFORC)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF)
                {
                    if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                      TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                }
            }
            if(nTRace == RACIAL_TYPE_HUMAN && nTAlign == ALIGNMENT_NEUTRAL)
            {
                if(nPCRace == RACIAL_TYPE_HALFORC)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF)
                {
                    if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                      TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                }
            }
            if(nTRace == RACIAL_TYPE_HUMAN && nTAlign == ALIGNMENT_EVIL)
            {
                if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_GOOD)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF || nPCRace == RACIAL_TYPE_HALFELF)
                {
                    if(!TestStringAgainstPattern("**DROW**", sSubRace) &&
                      !TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                }
                if(nPCRace == RACIAL_TYPE_HALFLING)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
            }
            if(nTRace == RACIAL_TYPE_ELF || nTRace == RACIAL_TYPE_HALFELF)
            {
                if(TestStringAgainstPattern("**DROW**", sTSubRace) ||
                  TestStringAgainstPattern("**DARK**", sTSubRace))
                {
                    if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_GOOD ||
                      nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_NEUTRAL)
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                    if(nPCRace == RACIAL_TYPE_ELF || nPCRace == RACIAL_TYPE_HALFELF)
                    {
                        if(!TestStringAgainstPattern("**DROW**", sSubRace) &&
                          !TestStringAgainstPattern("**DARK**", sSubRace))
                        {
                            if(oTFL == oFL) CheckParty(oTest, oPC);
                            SetPCDislike(oTest, oPC);
                        }
                    }
                    if(nPCRace == RACIAL_TYPE_HALFLING)
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                }
                else
                {
                    if(nPCRace == RACIAL_TYPE_ELF)
                    {
                        if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                          TestStringAgainstPattern("**DARK**", sSubRace))
                        {
                            if(oTFL == oFL) CheckParty(oTest, oPC);
                            SetPCDislike(oTest, oPC);
                        }
                    }
                    if(nPCRace == RACIAL_TYPE_HALFORC)
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                    if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_EVIL)
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                }
            }
            if(nTRace == RACIAL_TYPE_HALFLING)
            {
                if(nPCRace == RACIAL_TYPE_ELF)
                {
                    if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                      TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                }
                if(nPCRace == RACIAL_TYPE_HALFORC)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_EVIL)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
            }
            if(nTRace == RACIAL_TYPE_HALFORC)
            {
                if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_GOOD ||
                  nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_NEUTRAL)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF || nPCRace == RACIAL_TYPE_HALFELF)
                {
                    if(!TestStringAgainstPattern("**DROW**", sSubRace) &&
                      !TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        if(oTFL == oFL) CheckParty(oTest, oPC);
                        SetPCDislike(oTest, oPC);
                    }
                }
                if(nPCRace == RACIAL_TYPE_HALFLING)
                {
                    if(oTFL == oFL) CheckParty(oTest, oPC);
                    SetPCDislike(oTest, oPC);
                }
            }
        }
        oPC = GetNextPC();
    }
}

void main()
{
    //Autodislike
    object oPC = GetFirstPC();

    while(GetIsObjectValid(oPC))
    {
        if(!GetIsDM(oPC)) SetDislike(oPC);
        oPC = GetNextPC();
    }
}

Я в нем вижу очень много лишнего Дроу там и тд у меня их непланируеться надо какуюто часть правильно удолить,или исправить помогите плиз,у меня как я уже описывал 3 фракции
Aiwan
Sugo77, вот тебе библа, она все делает что тебе надо. Вставить функцию сможешь?
Neverwinter Script
//:://////////////////////////////////////////////
//:: OnExit  am_inc_battle
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
              БОЕВАЯ БИБЛИОТЕКА
*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 27.05.2005
//:://///////////////////////////////////////////

// ФУНКЦИЯ ОЧИСТКИ РЕПУТАЦИИ И СМЕНА ВСЕХ НПС НА ЛОКАЦИИ ФРАКЦИИ ВРАГА
// НА НЕЙТРАЛЬНУЮ
// object oPlayer - Игрок к которому враждебен oEnemy
// object oNetral - Объект с новой фракцией
// Если не указать кто именно, просто очистит репутацию
void ChangeEnemyToNetral(object oPlayer, object oNetral);
// ФУНКЦИЯ ПЕРЕВОДИТ ВСЕХ НПС НА ЛОКАЦИИ ОДНОЙ ФРАКЦИИ oLeader
// ВО ВРАЖДЕБНУЮ - STANDARD_FACTION_HOSTILE
// object oPlayer - Объект к кому будут фраждебны
// object oLeader=OBJECT_SELF - Если не указать кто именно
void ChangeNetralToEnemy(object oPlayer, object oLeader=OBJECT_SELF);

// ФУНКЦИЯ ОЧИСТКИ РЕПУТАЦИИ И СМЕНА ФРАКЦИИ ВРАГА НА СТАНДАРТНУЮ STANDARD_FACTION_*
// object oObjectToChangeFaction - наш враждебный элемент
// Указать стандартную фракцию nStandardFaction: STANDARD_FACTION_*
void ChangeEnemyToStandard(object oObjectToChangeFaction, int nStandardFaction);

// ФУНКЦИЯ ОЧИЩАЕТ ВСЮ ПЕРСОНАЛЬНУЮ РЕПУТАЦИЮ У ФРАКЦИИ
void ClearFactionReputation(object oPC, object oFaction=OBJECT_SELF);

// ФУНКЦИЯ ОЧИЩАЕМ РЕПУТУТАЦИЮ ПОМОЩНИКОВ И ИГРОКА К oSource
// iClearAllActions - очищает все акции включая боевые
void ClearAllPersonalReputation(object oMaster, object oSource=OBJECT_SELF, int iClearAllActions = FALSE);

// ФУНКЦИЯ УДАЛЕНИЯ ВСЕХ МОНСТРОВ ИЗ ЭНКАУЧЕРОВ
// В локации объекта oTarget
void DestroyEncounterCreature(object oTarget = OBJECT_SELF);

//**************************************************
****************************

void ChangeEnemyToNetral(object oPlayer, object oNetral)
{
    object oArea  = GetArea(oPlayer);
    object oEnemy = GetFirstObjectInArea(oArea);
    object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPlayer);
    object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPlayer);
    object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPlayer);
    object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPlayer);
    effect eEffect = EffectVisualEffect(VFX_IMP_UNSUMMON);
    while (GetIsObjectValid(oEnemy))
    {
      if (GetIsEnemy(oPlayer,oEnemy))
      {

/*
//------------------------------------------------------------------------------
// Если пойдет что-то не так. Будут жалобы игроков, то помощников НПС буду удалять...
//------------------------------------------------------------------------------
                  int iNum = 1;
                  while(iNum < 6)
                  {
                  object oAssociate = GetAssociate(iNum, oEnemy);
                  if(GetIsObjectValid(oAssociate))
                  {
                    ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oAssociate);
                    DestroyObject(oAssociate, 0.5);
                  }
                  iNum++;
                  }
*/


//----------------------- Обработка помощников игрока -------------------------//
                if(oAnimal != OBJECT_INVALID) {
                AssignCommand(oAnimal,ClearAllActions(TRUE));
                ClearPersonalReputation(oAnimal,oEnemy);}
                if(oDominated != OBJECT_INVALID){
                AssignCommand(oDominated,ClearAllActions(TRUE));
                ClearPersonalReputation(oDominated,oEnemy);}
                if(oFamiliar != OBJECT_INVALID){
                AssignCommand(oFamiliar,ClearAllActions(TRUE));
                ClearPersonalReputation(oFamiliar,oEnemy);}
                if(oSummoned != OBJECT_INVALID){
                AssignCommand(oSummoned,ClearAllActions(TRUE));
                ClearPersonalReputation(oSummoned,oEnemy);}
                int i = 1;
                object oHench = GetHenchman(oPlayer, i);
                  while(oHench != OBJECT_INVALID)
                    {
                    AssignCommand(oHench,ClearAllActions(TRUE));
                    ClearPersonalReputation(oHench,oEnemy);
                    i++;
                    oHench = GetHenchman(oPlayer, i);
                    }
                AssignCommand(oEnemy,ClearAllActions(TRUE));
                ClearPersonalReputation(oPlayer,oEnemy);
                ChangeFaction(oEnemy,oNetral);
      }
      oEnemy = GetNextObjectInArea(oArea);
    }
}
//------------------------------------------------------------------------------
void ChangeNetralToEnemy(object oPlayer, object oLeader=OBJECT_SELF)
{
    object oArea  = GetArea(oPlayer);
    object oEnemy = GetFirstObjectInArea(oArea);
    while (GetIsObjectValid(oEnemy))
        {
          if (GetFactionEqual(oEnemy, oLeader) && oEnemy != oLeader  && oEnemy!=oPlayer)
          {
            AssignCommand(oEnemy,ClearAllActions(TRUE));
            ClearPersonalReputation(oPlayer,oEnemy);
            ChangeToStandardFaction(oEnemy,STANDARD_FACTION_HO
STILE);
          }
        oEnemy = GetNextObjectInArea(oArea);
        }
    DelayCommand(1.0, AssignCommand(oLeader,ClearAllActions(TRUE)));
    DelayCommand(1.0, ChangeToStandardFaction(oLeader,STANDARD_FACTION_H
OSTILE));
}
//------------------------------------------------------------------------------
void ChangeEnemyToStandard(object oObjectToChangeFaction, int nStandardFaction)
{
    object oPlayer = GetFirstPC();
    object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oPlayer);
    object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oPlayer);
    object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oPlayer);
    object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oPlayer);
    if (GetIsObjectValid(oObjectToChangeFaction))
    {
              if (GetIsEnemy(oPlayer,oObjectToChangeFaction))
                {
//----------------------- Обработка помощников -------------------------------//
                if(oAnimal != OBJECT_INVALID) {
                AssignCommand(oAnimal,ClearAllActions(TRUE));
                ClearPersonalReputation(oAnimal,oObjectToChangeFac
tion);}
                if(oDominated != OBJECT_INVALID){
                AssignCommand(oDominated,ClearAllActions(TRUE));
                ClearPersonalReputation(oDominated,oObjectToChange
Faction);}
                if(oFamiliar != OBJECT_INVALID){
                AssignCommand(oFamiliar,ClearAllActions(TRUE));
                ClearPersonalReputation(oFamiliar,oObjectToChangeF
action);}
                if(oSummoned != OBJECT_INVALID){
                AssignCommand(oSummoned,ClearAllActions(TRUE));
                ClearPersonalReputation(oSummoned,oObjectToChangeF
action);}
                int i = 1;
                object oHench = GetHenchman(oPlayer, i);
                  while(oHench != OBJECT_INVALID)
                    {
                    AssignCommand(oHench,ClearAllActions(TRUE));
                    ClearPersonalReputation(oHench,oObjectToChangeFact
ion);
                    i++;
                    oHench = GetHenchman(oPlayer, i);
                    }
                AssignCommand(oObjectToChangeFaction,ClearAllActio
ns(TRUE));
                ClearPersonalReputation(oPlayer,oObjectToChangeFac
tion);
                ChangeToStandardFaction(oObjectToChangeFaction, nStandardFaction);
                  }
    }
}
//------------------------------------------------------------------------------
void ClearFactionReputation(object oPC, object oFaction=OBJECT_SELF)
{
    object oMember = GetFirstFactionMember(oFaction, FALSE);

    while (oMember != OBJECT_INVALID)
    {
        ClearPersonalReputation(oPC, oMember);
        oMember = GetNextFactionMember(oFaction, FALSE);
    }
}
//------------------------------------------------------------------------------
void ClearAllPersonalReputation(object oMaster, object oSource=OBJECT_SELF, int iClearAllActions = FALSE)
{
    object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION, oMaster);
    object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED, oMaster);
    object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR, oMaster);
    object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED, oMaster);

    if(iClearAllActions = TRUE)
    AssignCommand(oMaster,ClearAllActions(TRUE));
    ClearPersonalReputation(oMaster, oSource);

    if(oAnimal != OBJECT_INVALID)
    {
      if(iClearAllActions = TRUE)
      AssignCommand(oAnimal,ClearAllActions(TRUE));
      ClearPersonalReputation(oAnimal, oSource);
    }
    if(oDominated != OBJECT_INVALID)
    {
      if(iClearAllActions = TRUE)
      AssignCommand(oDominated,ClearAllActions(TRUE));
      ClearPersonalReputation(oDominated, oSource);
    }
    if(oFamiliar != OBJECT_INVALID)
    {
      if(iClearAllActions = TRUE)
      AssignCommand(oFamiliar,ClearAllActions(TRUE));
      ClearPersonalReputation(oFamiliar, oSource);
    }
    if(oSummoned != OBJECT_INVALID)
    {
      if(iClearAllActions = TRUE)
      AssignCommand(oSummoned,ClearAllActions(TRUE));
      ClearPersonalReputation(oSummoned, oSource);
    }
    int i = 1;
    object oHenchman = GetHenchman(oMaster, i);
    while(oHenchman != OBJECT_INVALID)
    {
      if(iClearAllActions = TRUE)
      AssignCommand(oHenchman,ClearAllActions(TRUE));
      ClearPersonalReputation(oHenchman, oSource);
      i++;
      oHenchman = GetHenchman(oMaster, i);
    }
}
void DestroyEncounterCreature(object oTarget = OBJECT_SELF)
{
object oCreaturse = GetFirstObjectInArea(GetArea(oTarget));
while (oCreaturse!=OBJECT_INVALID)
{
    if(GetIsEncounterCreature(oCreaturse) == TRUE)
    {
      DestroyObject(oCreaturse);
    }
    oCreaturse = GetNextObjectInArea(GetArea(oTarget));
}
}
//------------------------------------------------------------------------------
/*
void main(){}
Ogneslav
Товарищи, я бы хотел сделать заклинание glyph of warding(символ охраны) эпическим, тоесть усилить его, в принцыпе это для меня было не сложно, вопрос возник в скриптах, так как я в скриптах не разбираюсь вообще(недавно только самоучитель скачал),
я хочу вас попросить написать мне пример этого скрипта обьяснить где что менять и куда писать потом адрес на скрипт!
kreon
Ogneslav, все спеллы (точнее, последствия их применения) лежат во встроенных в нвн скриптах. Ставишь галочку в тулсете "Показывать все ресурсы", находишь скрипт *_glyph* (nw\xp1\xp2), открываешь и видишь там циферки дамага. Меняешь, компилишь и сохраняешь скрипт. Усё.
По причине временного отсутствия тулсета под рукой пример кинуть не могу.
DanaVolgograd
Как можно заставить объект двигаться к определенной точке. Наподобие ActionMoveToObject только не для НПС, а для объекта? (необходимо сделать движение стенобитного орудия к воротам-вейпоинту).
greye
Нет, тебе надо перенести файлы appearance от плейса в creature, потом отредактировать appearance.2da(или как-то так), тогда ты сможешь создать существо такого вида, применить к нему ActionMoveToLocation(). Работу с инвентарем там уж можно будет организовать, скажем, через торговлю.
DanaVolgograd
дада, именно smile.gif
прочитала тут следующее:
Цитата
ВОПРОС
Как сделать чтоб корабль плыл (ковер-самолет летал, повозка ездила и т.д.)?

ОТВЕТЫ
Для этого необходимо переделать плейс (placeable) корабля в крича (creature). Тогда этим объектом можно будет управлять с помощью процедуры ActionMoveToObject(). Однако, по воде передвигать корабль всё равно не получится, т.к. по воде нельзя двигаться вообще - это запрещено движком.

Это "с нуля"? То бишь CreateObject? Ну допустим сделаю я это, а как мне привязать те события что были к непу потом? К примеру, на этом плейсовом таране (стенобитном орудии) стоит флажок имеет инвентарь, и соответвенно при нажатии на него - вылазит окно инвентаря. Так же стоит событие OnClose для проверки при закрытии инвентаря... как с этим быть?
Ilerien
Можно создавать рядом невидимый плейс с инвентарём и с ним уже работать.
П. С. Моё почтение гемовскому игроку smile.gif Сорри, не удержался wink3.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.