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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 119 120 121 122 123 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение Jun 13 2008, 13:41
Сообщение #2986


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



этот скрипт "на дислайки" требует для своей работы еще и парсера нормального, которого Аза тут конечно не выложил (IMG:style_emoticons/kolobok_light/smile.gif)
В чем проблема использовать SetPCDislike то? Выставил кому надо и готов твой скрипт на дислайк. Правда игрок ручками все поменять обратно может.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Pryanik
сообщение 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)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sugo77
сообщение Jun 15 2008, 10:56
Сообщение #2988


Level 3
*

Класс: Монах
Характер: Lawful Good
Раса: Эльф



Lex,дорогой,дак а где он находиться SetPCDislake?
И как правилно его настроить?но мне бы сперва его найти
по словам так просто но незнающему человеку (мне) не просто разобраться с дислаками сначало найти бы еше,помоги плиз с етим вопросом.А то работа встала на етом(запускаю через интернет сервер для теста и только с мобами порядок,а игроки других двух фракций невраждебны мне.Помоги плиз с этим вопросом.

Сообщение отредактировал Sugo77 - Jun 15 2008, 11:02
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Jun 15 2008, 12:32
Сообщение #2989


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

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



Pryanik, для этого нужно знать структуру того, что у тебя на локе лежит. Лучше всего пометить каждую стартовую точку, на которой должен создаваться обжект, особым вейпоинтом, и локалками на нём указать, что за обжект.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sugo77
сообщение Jun 23 2008, 19:52
Сообщение #2990


Level 3
*

Класс: Монах
Характер: Lawful Good
Раса: Эльф



Ну подскажите плиз со скриптом set pc dislike
работа стоит а очень охото дальше над шардом работать
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sugo77
сообщение 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
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jun 24 2008, 22:30
Сообщение #2992


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



Цитата
но как будет работать хз

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

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

onClick срабатывает при нажатии на триггер, а не при проходе через него. либо использовать онТранзакшен (или как его там) или делать Jump в нужное место вручную.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sugo77
сообщение 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
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение 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(){}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ogneslav
сообщение Jul 10 2008, 09:08
Сообщение #2995


Level 4
**

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



Товарищи, я бы хотел сделать заклинание glyph of warding(символ охраны) эпическим, тоесть усилить его, в принцыпе это для меня было не сложно, вопрос возник в скриптах, так как я в скриптах не разбираюсь вообще(недавно только самоучитель скачал),
я хочу вас попросить написать мне пример этого скрипта обьяснить где что менять и куда писать потом адрес на скрипт!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Oct 8 2008, 03:24
Сообщение #2996


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



Ogneslav, все спеллы (точнее, последствия их применения) лежат во встроенных в нвн скриптах. Ставишь галочку в тулсете "Показывать все ресурсы", находишь скрипт *_glyph* (nw\xp1\xp2), открываешь и видишь там циферки дамага. Меняешь, компилишь и сохраняешь скрипт. Усё.
По причине временного отсутствия тулсета под рукой пример кинуть не могу.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DanaVolgograd
сообщение Nov 5 2008, 21:45
Сообщение #2997


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



Как можно заставить объект двигаться к определенной точке. Наподобие ActionMoveToObject только не для НПС, а для объекта? (необходимо сделать движение стенобитного орудия к воротам-вейпоинту).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Nov 5 2008, 22:10
Сообщение #2998


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Нет, тебе надо перенести файлы appearance от плейса в creature, потом отредактировать appearance.2da(или как-то так), тогда ты сможешь создать существо такого вида, применить к нему ActionMoveToLocation(). Работу с инвентарем там уж можно будет организовать, скажем, через торговлю.

Сообщение отредактировал greye - Nov 5 2008, 23:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DanaVolgograd
сообщение Nov 5 2008, 22:20
Сообщение #2999


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



дада, именно (IMG:style_emoticons/kolobok_light/smile.gif)
прочитала тут следующее:
Цитата
ВОПРОС
Как сделать чтоб корабль плыл (ковер-самолет летал, повозка ездила и т.д.)?

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

Это "с нуля"? То бишь CreateObject? Ну допустим сделаю я это, а как мне привязать те события что были к непу потом? К примеру, на этом плейсовом таране (стенобитном орудии) стоит флажок имеет инвентарь, и соответвенно при нажатии на него - вылазит окно инвентаря. Так же стоит событие OnClose для проверки при закрытии инвентаря... как с этим быть?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение 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)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Nov 6 2008, 06:35
Сообщение #3001


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Цитата(DanaVolgograd @ Nov 5 2008, 23:45) *
Как можно заставить объект двигаться к определенной точке.
Правда иногда пропадают кадры, т.е. плейсы...
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)));
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DanaVolgograd
сообщение Nov 8 2008, 18:18
Сообщение #3002


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



нипаняяяяяятна:
Событие OnDeath того же плейса (тарана):
Код
void main()
{
ActionCastSpellAtLocation(SPELL_EARTHQUAKE, GetLocation(GetWaypointByTag("taran_wp")), METAMAGIC_MAXIMIZE, 1, PROJECTILE_PATH_TYPE_DEFAULT, TRUE);
}

НИ-ЧЕ-ГО не происходит...
А если поставить этот КастСпелл, скажем в другой обработчик (ну за пару секунд до дестроя итема), то все нормально - земля трясется, град сыпется...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Nov 8 2008, 18:32
Сообщение #3003


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

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



Всё верно, плейс не успевает выполнить экшен.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DanaVolgograd
сообщение Nov 8 2008, 18:38
Сообщение #3004


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



и каг быть? )

разобралась...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Nov 8 2008, 18:43
Сообщение #3005


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

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



Перевесить этот экшен на что-нибудь рядом и живое (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DanaVolgograd
сообщение Nov 8 2008, 18:55
Сообщение #3006


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



так он и так, сам экшн повешен на Вейпоинт, который находится рядом с плейсом (который и уничтожается).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
greye
сообщение Nov 8 2008, 18:59
Сообщение #3007


Level 7
**

Класс: Некромант
Характер: True Neutral
Раса: Нежить



Нет, ты кастуешь на этот вэйпоинт, а плейс не успевает собственно сотворить заклинание перед смертью.
Можно попробовать ExecuteScript, думаю.

Сообщение отредактировал greye - Nov 8 2008, 19:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilerien
сообщение Nov 8 2008, 19:02
Сообщение #3008


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

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



Neverwinter Script
object oWP = GetWaypointByTag("taran_wp");
    AssignCommand(oWP, ActionCastSpellAtLocation(SPELL_EARTHQUAKE, GetLocation(oWP), METAMAGIC_MAXIMIZE, 1, PROJECTILE_PATH_TYPE_DEFAULT, TRUE));
Можно попробовать так. Чёрт его знает, выполнит ли вейпоинт экшен, если нет - надо плейс невидимый рядом создать и на него перевесить (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 9 2008, 05:25
Сообщение #3009


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

Класс: Обыватель
Характер: Lawful Neutral
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



щас (на 1.69) хз, но раньше через вэйпы такую штуку было нельзя протащить.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sugo77
сообщение Nov 17 2008, 19:06
Сообщение #3010


Level 3
*

Класс: Монах
Характер: Lawful Good
Раса: Эльф



И снова всем привет.

Так и не вышло у меня со скриптом для враждебности к трем фракциям игроков,но не их монстрам, хотя знаю что возможно, так как видел подобное на Американских серверах(К примеру Серевер:"Alestorm LOTR Team PvP", вообщем вот мой модуль, если кто то может с моим проектом я буду счастлив, но сейчас я застрял на враждебности, игроков друг к другу.

Пожалуйста посмотрите мой модуль, со скриптами, завершённый на 50%, и помогите с завершающим скриптом, дальше я его доделаю сам, но если кто то присоединится к моему проекту, и будет помощником, я буду очень счастлив:
http://narutoandothers.ucoz.ru/Files/STARC...aFinishOn60.zip

Так же я могу создать для этого сервера, свой сайт, форум и всё что угодно, с этим у меня нет проблем.

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

147 страниц V  « < 119 120 121 122 123 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 1st May 2025 - 10:15