Скрипты, Все вопросы и ответы по скриптам |
Здравствуйте, гость ( Вход | Регистрация )
Скрипты, Все вопросы и ответы по скриптам |
Jun 1 2008, 14:34
Сообщение
#2976
|
|
Level 12 Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] |
Цитата Но если атаковал своего же моба он остается враждебным! Правильно, кому понравиться, что его бьют? (IMG:style_emoticons/kolobok_light/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); } тут как я понял говорится о том, что "если торговец вас ненавидит - заставить ненавидеть вас ещё сильнее". по умолчанию торговцы не такие уж и буки. |
Jun 1 2008, 16:50
Сообщение
#2977
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
убрал я у себя фракцию враждебный так как в этом скрипте ее нету,я его перевел на руский сдес защитник простолюдин и торговец,я такие фракции и сделал ,но всеравно он работает тока с торговцами,получается что вообще неработает так как торговцы и без этого скрипта возвращаются в дружественные отношения после убийства ими игрока, чтоже нетак непойму?
Да а кстати глобальный эффект что означает во фракциях?Я его поставил для всех фракции. А также шкала П-незнаю что такое ето?но она у меня на 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) Сообщение отредактировал Sugo77 - Jun 1 2008, 23:32 |
Jun 8 2008, 11:19
Сообщение
#2978
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек |
Подскажите пожалуста тогда как написать такой плагин? я знаю немного Borland c++ Builder и все. Тока мне надо чтоб плагин не тока в сетевой игре работал но и в кампании если какиенибудь исходные коды как их делать? я тут находил плагин позволяющий писать букву "Я"
Он без NWNX работает мнеб типа такого только добавляющий функцию управления NPC как преблизительно его написать или функцию эту где узнать напишите пожалуста если не сложно поподробнее....... (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) |
Jun 8 2008, 17:23
Сообщение
#2979
|
|
Level 17 Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX |
Никак..
|
Jun 8 2008, 18:17
Сообщение
#2980
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек |
Блин а можно тогда переименовать главного героя скриптом и при морфе сделат больше 3ех родных абил и еще бы конечными их сделать.... Или может есть какаянибудь альтернатива?
|
Jun 8 2008, 19:56
Сообщение
#2981
|
|
Level 17 Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX |
Я уже давал ссылку.
http://nwvault.ign.com/View.php?view=Scrip...ail&id=2568 |
Jun 8 2008, 20:43
Сообщение
#2982
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
Ну помогите же с написанием скрипта на дислайки плиз,чтоб нажав на тригер игрок был враждебен к дргим двум разным игрокам,других фракций.
вот это вступление скрипта void main SetPCDislike(object oPlayer, object oTarget) Сообщение отредактировал Sugo77 - Jun 8 2008, 20:45 |
Jun 8 2008, 23:29
Сообщение
#2983
|
|
Level 12 Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] |
После такого вступления требуется виртуозное исполнение! Я сейчас дорабатываю свою библиотеку функций распарсивания строк (получается интересная возможность писать "полускрипты" и создавать "мягкий" код). Ваш вопрос побудил меня задуматься над совершением ещё одного шага вперёд от 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); Не правда ли небо и земля? Трезво оценивая свои силы, думаю, что шансов реализовать задуманое до стечения века почти нет. Но мало ли - вдруг. |
Jun 8 2008, 23:49
Сообщение
#2984
|
|
Level 17 Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX |
Очень интересно. (IMG:style_emoticons/kolobok_light/smile.gif)
Я для таких вещей встроил в НВН скриптовый интерпретируемый язык Ruby и собираюсь сделать веб-интерфейс, в котором визуально выбираешь логику - и на её основе генерируется скрипт, который сразу же подхватывается сервером. |
Jun 12 2008, 14:11
Сообщение
#2985
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
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 Помогите написать етот скрипт в конце корнцов((((((((кто нибудь из скриптеров,я застрял на этом,в создании модуля Сообщение отредактировал Sugo77 - Jun 12 2008, 14:19 |
Jun 13 2008, 13:41
Сообщение
#2986
|
|
Level 5 Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
этот скрипт "на дислайки" требует для своей работы еще и парсера нормального, которого Аза тут конечно не выложил (IMG:style_emoticons/kolobok_light/smile.gif)
В чем проблема использовать SetPCDislike то? Выставил кому надо и готов твой скрипт на дислайк. Правда игрок ручками все поменять обратно может. |
Jun 15 2008, 02:23
Сообщение
#2987
|
|
Level 1 Класс: Обыватель Характер: Chaotic Good Раса: Элементаль |
Друзья а можете подсказать где взять а может уже кто и использует в своих PW скрипт на Area Reset (аналог Reset Instances из Мира Варкрафта). Мне нужен любой скрипт обнуляющий заданную Area и расставляющий в ней все заново(существ, вейпоинты, плейсеблс). Хочу припаять его к Камню перед пещерой на On_Used. А то я замучался нашел несколько скриптов но они существ не резетят, только энкаутеры, а мне так нельзя у меня много мобов по вейпоинтам бегает. Заранее спасибо (IMG:style_emoticons/kolobok_light/rolleyes.gif)
|
Jun 15 2008, 10:56
Сообщение
#2988
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
Lex,дорогой,дак а где он находиться SetPCDislake?
И как правилно его настроить?но мне бы сперва его найти по словам так просто но незнающему человеку (мне) не просто разобраться с дислаками сначало найти бы еше,помоги плиз с етим вопросом.А то работа встала на етом(запускаю через интернет сервер для теста и только с мобами порядок,а игроки других двух фракций невраждебны мне.Помоги плиз с этим вопросом. Сообщение отредактировал Sugo77 - Jun 15 2008, 11:02 |
Jun 15 2008, 12:32
Сообщение
#2989
|
|
Level 11 Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North |
Pryanik, для этого нужно знать структуру того, что у тебя на локе лежит. Лучше всего пометить каждую стартовую точку, на которой должен создаваться обжект, особым вейпоинтом, и локалками на нём указать, что за обжект.
|
Jun 23 2008, 19:52
Сообщение
#2990
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
Ну подскажите плиз со скриптом set pc dislike
работа стоит а очень охото дальше над шардом работать |
Jun 24 2008, 22:09
Сообщение
#2991
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
Вот тут наконецто нашел много скриптов на дислайки но
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 невыдает но как будет работать хз Нет тригер перестает работать(портировать)после етого скрипта хз почему Сообщение отредактировал Sugo77 - Jun 24 2008, 21:58 |
Jun 24 2008, 22:30
Сообщение
#2992
|
|
Level 12 Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] |
Цитата но как будет работать хз дык запусти и посмотри Цитата тригер перестает работать(портировать)после етого скрипта onClick срабатывает при нажатии на триггер, а не при проходе через него. либо использовать онТранзакшен (или как его там) или делать Jump в нужное место вручную. |
Jun 24 2008, 22:52
Сообщение
#2993
|
|
Level 3 Класс: Монах Характер: Lawful Good Раса: Эльф |
Вроде етот срабатывает на он интер,я просто добавил специальную переходную локу с другими тригерами отдельными для такого дела ,но есть одно НО(((,он срабатывает и на мою фракцию это почему же так?
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 фракции Сообщение отредактировал Sugo77 - Jun 24 2008, 23:16 |
Jun 25 2008, 10:01
Сообщение
#2994
|
|
Миловидный Бегрюссунг Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени |
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(){} |
Jul 10 2008, 09:08
Сообщение
#2995
|
|
Level 4 Класс: Друид Характер: True Neutral Раса: Человек |
Товарищи, я бы хотел сделать заклинание glyph of warding(символ охраны) эпическим, тоесть усилить его, в принцыпе это для меня было не сложно, вопрос возник в скриптах, так как я в скриптах не разбираюсь вообще(недавно только самоучитель скачал),
я хочу вас попросить написать мне пример этого скрипта обьяснить где что менять и куда писать потом адрес на скрипт! |
Oct 8 2008, 03:24
Сообщение
#2996
|
|
Level 8 Класс: Некромант Характер: Chaotic Evil Раса: Дракон NWN: Скриптинг [PW] |
Ogneslav, все спеллы (точнее, последствия их применения) лежат во встроенных в нвн скриптах. Ставишь галочку в тулсете "Показывать все ресурсы", находишь скрипт *_glyph* (nw\xp1\xp2), открываешь и видишь там циферки дамага. Меняешь, компилишь и сохраняешь скрипт. Усё.
По причине временного отсутствия тулсета под рукой пример кинуть не могу. |
Nov 5 2008, 21:45
Сообщение
#2997
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек |
Как можно заставить объект двигаться к определенной точке. Наподобие ActionMoveToObject только не для НПС, а для объекта? (необходимо сделать движение стенобитного орудия к воротам-вейпоинту).
|
Nov 5 2008, 22:10
Сообщение
#2998
|
|
Level 7 Класс: Некромант Характер: True Neutral Раса: Нежить |
Нет, тебе надо перенести файлы appearance от плейса в creature, потом отредактировать appearance.2da(или как-то так), тогда ты сможешь создать существо такого вида, применить к нему ActionMoveToLocation(). Работу с инвентарем там уж можно будет организовать, скажем, через торговлю.
Сообщение отредактировал greye - Nov 5 2008, 23:17 |
Nov 5 2008, 22:20
Сообщение
#2999
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек |
дада, именно (IMG:style_emoticons/kolobok_light/smile.gif)
прочитала тут следующее: Цитата ВОПРОС Как сделать чтоб корабль плыл (ковер-самолет летал, повозка ездила и т.д.)? ОТВЕТЫ Для этого необходимо переделать плейс (placeable) корабля в крича (creature). Тогда этим объектом можно будет управлять с помощью процедуры ActionMoveToObject(). Однако, по воде передвигать корабль всё равно не получится, т.к. по воде нельзя двигаться вообще - это запрещено движком. Это "с нуля"? То бишь CreateObject? Ну допустим сделаю я это, а как мне привязать те события что были к непу потом? К примеру, на этом плейсовом таране (стенобитном орудии) стоит флажок имеет инвентарь, и соответвенно при нажатии на него - вылазит окно инвентаря. Так же стоит событие OnClose для проверки при закрытии инвентаря... как с этим быть? |
Nov 5 2008, 23:30
Сообщение
#3000
|
|
Level 11 Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North |
Можно создавать рядом невидимый плейс с инвентарём и с ним уже работать.
П. С. Моё почтение гемовскому игроку (IMG:style_emoticons/kolobok_light/smile.gif) Сорри, не удержался (IMG:style_emoticons/kolobok_light/wink3.gif) |
Текстовая версия | Сейчас: 29th April 2024 - 00:42 |