![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#2986
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
этот скрипт "на дислайки" требует для своей работы еще и парсера нормального, которого Аза тут конечно не выложил (IMG:style_emoticons/kolobok_light/smile.gif)
В чем проблема использовать SetPCDislike то? Выставил кому надо и готов твой скрипт на дислайк. Правда игрок ручками все поменять обратно может. |
![]()
Сообщение
#2987
|
|
Level 1 Класс: Обыватель Характер: Chaotic Good Раса: Элементаль ![]() |
Друзья а можете подсказать где взять а может уже кто и использует в своих PW скрипт на Area Reset (аналог Reset Instances из Мира Варкрафта). Мне нужен любой скрипт обнуляющий заданную Area и расставляющий в ней все заново(существ, вейпоинты, плейсеблс). Хочу припаять его к Камню перед пещерой на On_Used. А то я замучался нашел несколько скриптов но они существ не резетят, только энкаутеры, а мне так нельзя у меня много мобов по вейпоинтам бегает. Заранее спасибо (IMG:style_emoticons/kolobok_light/rolleyes.gif)
|
![]()
Сообщение
#2988
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Lex,дорогой,дак а где он находиться SetPCDislake?
И как правилно его настроить?но мне бы сперва его найти по словам так просто но незнающему человеку (мне) не просто разобраться с дислаками сначало найти бы еше,помоги плиз с етим вопросом.А то работа встала на етом(запускаю через интернет сервер для теста и только с мобами порядок,а игроки других двух фракций невраждебны мне.Помоги плиз с этим вопросом. Сообщение отредактировал Sugo77 - Jun 15 2008, 11:02 |
![]()
Сообщение
#2989
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Pryanik, для этого нужно знать структуру того, что у тебя на локе лежит. Лучше всего пометить каждую стартовую точку, на которой должен создаваться обжект, особым вейпоинтом, и локалками на нём указать, что за обжект.
|
![]()
Сообщение
#2990
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Ну подскажите плиз со скриптом set pc dislike
работа стоит а очень охото дальше над шардом работать |
![]()
Сообщение
#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 |
![]()
Сообщение
#2992
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Цитата но как будет работать хз дык запусти и посмотри Цитата тригер перестает работать(портировать)после етого скрипта onClick срабатывает при нажатии на триггер, а не при проходе через него. либо использовать онТранзакшен (или как его там) или делать Jump в нужное место вручную. |
![]()
Сообщение
#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 |
![]()
Сообщение
#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(){} |
![]()
Сообщение
#2995
|
|
Level 4 ![]() ![]() Класс: Друид Характер: True Neutral Раса: Человек ![]() |
Товарищи, я бы хотел сделать заклинание glyph of warding(символ охраны) эпическим, тоесть усилить его, в принцыпе это для меня было не сложно, вопрос возник в скриптах, так как я в скриптах не разбираюсь вообще(недавно только самоучитель скачал),
я хочу вас попросить написать мне пример этого скрипта обьяснить где что менять и куда писать потом адрес на скрипт! |
![]()
Сообщение
#2996
|
|
Level 8 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Ogneslav, все спеллы (точнее, последствия их применения) лежат во встроенных в нвн скриптах. Ставишь галочку в тулсете "Показывать все ресурсы", находишь скрипт *_glyph* (nw\xp1\xp2), открываешь и видишь там циферки дамага. Меняешь, компилишь и сохраняешь скрипт. Усё.
По причине временного отсутствия тулсета под рукой пример кинуть не могу. |
![]()
Сообщение
#2997
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Как можно заставить объект двигаться к определенной точке. Наподобие ActionMoveToObject только не для НПС, а для объекта? (необходимо сделать движение стенобитного орудия к воротам-вейпоинту).
|
![]()
Сообщение
#2998
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Нет, тебе надо перенести файлы appearance от плейса в creature, потом отредактировать appearance.2da(или как-то так), тогда ты сможешь создать существо такого вида, применить к нему ActionMoveToLocation(). Работу с инвентарем там уж можно будет организовать, скажем, через торговлю.
Сообщение отредактировал greye - Nov 5 2008, 23:17 |
![]()
Сообщение
#2999
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
дада, именно (IMG:style_emoticons/kolobok_light/smile.gif)
прочитала тут следующее: Цитата ВОПРОС Как сделать чтоб корабль плыл (ковер-самолет летал, повозка ездила и т.д.)? ОТВЕТЫ Для этого необходимо переделать плейс (placeable) корабля в крича (creature). Тогда этим объектом можно будет управлять с помощью процедуры ActionMoveToObject(). Однако, по воде передвигать корабль всё равно не получится, т.к. по воде нельзя двигаться вообще - это запрещено движком. Это "с нуля"? То бишь CreateObject? Ну допустим сделаю я это, а как мне привязать те события что были к непу потом? К примеру, на этом плейсовом таране (стенобитном орудии) стоит флажок имеет инвентарь, и соответвенно при нажатии на него - вылазит окно инвентаря. Так же стоит событие OnClose для проверки при закрытии инвентаря... как с этим быть? |
![]()
Сообщение
#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) |
![]()
Сообщение
#3001
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Как можно заставить объект двигаться к определенной точке. Правда иногда пропадают кадры, т.е. плейсы...Neverwinter Script //ПЕРЕДВИЖЕНИЕ ПЛЕЙСА
// object oSelf - Объект управлЯющий передвижением // string sGtTag - тэг передвигаемого объекта // float fDist=0.1 - дистанциЯ одного шага // float fSpeed=0.3 - скорость кадра // int iShag=20 количество создаваемых объектов (кадров) // float fOrient=180.0 - направление движениЯ void multik(object oSelf, string sGtTag, float fDist=0.1, float fSpeed=0.3, int iShag=20, float fOrient=180.0); //____________________ ПЕРЕДВИЖЕНИЕ ПЛЕЙСА _____________________________________ void multik(object oSelf, string sGtTag, float fDist=0.1, float fSpeed=0.3, int iShag=20, float fOrient=180.0) { if (GetLocalInt(oSelf,"STENA") == 1) return; object oPlace = GetNearestObjectByTag(sGtTag, oSelf); effect eVis = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); // невидимость effect eIskra = EffectVisualEffect(VFX_COM_SPARKS_PARRY); int i; AssignCommand(oSelf, ClearAllActions()); AssignCommand(oSelf, ActionPlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE )); ApplyEffectToObject(DURATION_TYPE_INSTANT, eIskra, oSelf); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, oPlace)); for (i=1; i<iShag; i++) { vector vSpawn = GetPosition(oPlace); float fFacing = GetFacing(oPlace); vSpawn.x += cos(fFacing) * fDist*i; vSpawn.y += sin(fFacing) * fDist*i; // Если отрицательное значение, то locSpawn позади oPC location locSpawn = Location(GetArea(oPlace), vSpawn, fOrient+fFacing); object oNew = CreateObject(OBJECT_TYPE_PLACEABLE, GetResRef(oPlace), locSpawn, FALSE, sGtTag); SetPlotFlag(oNew, TRUE); // Сюжетный ApplyEffectToObject(DURATION_TYPE_PERMANENT, eVis, oNew); AssignCommand(oSelf, ActionDoCommand(RemoveEffect(oNew, GetFirstEffect(oNew)))); if (i<(iShag-1)) { if (i<3) AssignCommand(oSelf, ActionWait(1.0)); else AssignCommand(oSelf, ActionWait(fSpeed)); AssignCommand(oSelf, ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_ PERMANENT, eVis, oNew))); AssignCommand(oSelf, ActionDoCommand(DestroyObject(oNew, 0.5))); } } AssignCommand(oPlace,PlaySound("al_cv_millwheel1")); DelayCommand(4.0, AssignCommand(oPlace,PlaySound("as_cv_minercar1"))); SetLocalInt(oSelf,"STENA",1); AssignCommand(oSelf, ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_ INSTANT, eIskra, oSelf))); AssignCommand(oSelf, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)) ; AssignCommand(oSelf, ActionDoCommand(SetLocalInt(oSelf,"STENA",0))); AssignCommand(oSelf, ActionDoCommand(DestroyObject(oPlace))); } |
![]()
Сообщение
#3002
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
нипаняяяяяятна:
Событие OnDeath того же плейса (тарана): Код void main() { ActionCastSpellAtLocation(SPELL_EARTHQUAKE, GetLocation(GetWaypointByTag("taran_wp")), METAMAGIC_MAXIMIZE, 1, PROJECTILE_PATH_TYPE_DEFAULT, TRUE); } НИ-ЧЕ-ГО не происходит... А если поставить этот КастСпелл, скажем в другой обработчик (ну за пару секунд до дестроя итема), то все нормально - земля трясется, град сыпется... |
![]()
Сообщение
#3003
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Всё верно, плейс не успевает выполнить экшен.
|
![]()
Сообщение
#3004
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
и каг быть? )
разобралась... |
![]()
Сообщение
#3005
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Перевесить этот экшен на что-нибудь рядом и живое (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3006
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
так он и так, сам экшн повешен на Вейпоинт, который находится рядом с плейсом (который и уничтожается).
|
![]()
Сообщение
#3007
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Нет, ты кастуешь на этот вэйпоинт, а плейс не успевает собственно сотворить заклинание перед смертью.
Можно попробовать ExecuteScript, думаю. Сообщение отредактировал greye - Nov 8 2008, 19:00 |
![]()
Сообщение
#3008
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Neverwinter Script object oWP = GetWaypointByTag("taran_wp"); Можно попробовать так. Чёрт его знает, выполнит ли вейпоинт экшен, если нет - надо плейс невидимый рядом создать и на него перевесить (IMG:style_emoticons/kolobok_light/smile.gif)
AssignCommand(oWP, ActionCastSpellAtLocation(SPELL_EARTHQUAKE, GetLocation(oWP), METAMAGIC_MAXIMIZE, 1, PROJECTILE_PATH_TYPE_DEFAULT, TRUE)); |
![]()
Сообщение
#3009
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
щас (на 1.69) хз, но раньше через вэйпы такую штуку было нельзя протащить.
|
![]()
Сообщение
#3010
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
И снова всем привет.
Так и не вышло у меня со скриптом для враждебности к трем фракциям игроков,но не их монстрам, хотя знаю что возможно, так как видел подобное на Американских серверах(К примеру Серевер:"Alestorm LOTR Team PvP", вообщем вот мой модуль, если кто то может с моим проектом я буду счастлив, но сейчас я застрял на враждебности, игроков друг к другу. Пожалуйста посмотрите мой модуль, со скриптами, завершённый на 50%, и помогите с завершающим скриптом, дальше я его доделаю сам, но если кто то присоединится к моему проекту, и будет помощником, я буду очень счастлив: http://narutoandothers.ucoz.ru/Files/STARC...aFinishOn60.zip Так же я могу создать для этого сервера, свой сайт, форум и всё что угодно, с этим у меня нет проблем. Сообщение отредактировал Sugo77 - Nov 18 2008, 18:16 |
![]() ![]() |
Текстовая версия | Сейчас: 1st May 2025 - 10:15 |