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

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

 
Ответить в эту темуОткрыть новую тему
> Дислайки, PvP на шарде
Huk
сообщение Apr 4 2005, 20:49
Сообщение #1


Level 2
*

Класс: Монах
Характер: Lawful Neutral
Раса: Человек



Для оживления жизни на шарде, пришла мысль организовать следующее.
Хочется создать 3(4\5\6 - не суть) стороны, не любящих друг друга, например

Elf - подраса Drow
Dwarf - подраса Duergar
Любая иная раса - без подрасы

Что хочется видеть в итоге - Drow + Duergar'ы против остальных.
Проблема - отсутствие представления, как расставить PC на основе поля Subrace like\dislike по отношению к другим PC.
Из умных мыслей - пихать скрипт на х\б... на этом мысли кончились :swoon:
Подскажите, как сие реализовать возможно?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
balrog
сообщение Apr 4 2005, 21:04
Сообщение #2


Великий хранитель фотоальбома
Иконки Групп

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Тварь
МАСТЕР Кисти



QUOTE
Drow + Duergar'ы против остальных.

Корче, скоро ангелы с демонами будут под ручку ходить :lol:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Huk
сообщение Apr 4 2005, 22:19
Сообщение #3


Level 2
*

Класс: Монах
Характер: Lawful Neutral
Раса: Человек



QUOTE (balrog @ Apr 4 2005, 21:04)
Корче, скоро ангелы с демонами будут под ручку ходить :lol:

да хоть кайрик с мистрой целоваться будут - не суть
взято глубоко от балды в качестве примера
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 6 2005, 15:54
Сообщение #4


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



По-моему никак, только через плагин к NWNEX2
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Apr 7 2005, 22:29
Сообщение #5


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



Репутация и функции работы с ней реализованы довольно криво для мультика. По хорошему ничего не выйдет, но извратиться можно всегда :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Apr 15 2005, 11:36
Сообщение #6


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



На OnClientEnter проверять субрасу, проходиться по всем остальным игрокам и делать SetPCDislike, где нужно.
(Не делал и не проверял, но теоретически должно работать.)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
slavaz
сообщение Apr 15 2005, 12:03
Сообщение #7


Пингвиноид
Иконки Групп

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



virusman кстати, чего это на вполне безобидное
<img src="http://www.rpgplanet.ru/forums/style_avatars/virusman.gif" alt="" border="0" height="115" width="102"> (аватарка)
требует кукисов? Колись, картинка там, или нет?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Apr 20 2005, 08:28
Сообщение #8


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

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Не знаю, это какая-то проблема с rpgplanet.. Закачал аватар сюда.
А вообще, такие сообщения лучше отправлять в приват.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 20 2005, 13:00
Сообщение #9


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



А я, вот, на Nighfall Dreams извратнулся, скрипт автодиза, для Хеартбита модуля, в целом работает, но не без глюков, которых, найти не смог... Скрипт щас используется на шарде.
Neverwinter Script Source
/////////////////////////
/***********************/
/***Created by Buldog***/
/***********************/
/*** Date: 04.04.2005***/
/***********************/
/////////////////////////

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();
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 20 2005, 13:10
Сообщение #10


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Бедный шард... Точнее игроки с лагами...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 20 2005, 13:15
Сообщение #11


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



Да нет, лагов не больше чем было до введения скрипта. Единственные жалобы, которые были, так это то, что теперь чары не могут ходить в пати с "врагами" :)

Сообщение отредактировал Buldog - Apr 20 2005, 13:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 20 2005, 13:21
Сообщение #12


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Тем не менее можно было сделать с меньшей нагрузкой на сервак.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 20 2005, 13:29
Сообщение #13


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



В принципе можно переделать скрипт под ОнЕнтер, но тогда ни что не будет мешать игрокам отменить вар и так же ходить в одной пати. Возможно, в чем то, это даже лучше... Надо обмозговать как следует :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 20 2005, 13:32
Сообщение #14


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



А что такого? Типо помирились :), чтобы экспы больше вместе нарубить :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 20 2005, 13:37
Сообщение #15


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



Угу, экспа щас вообще больной вопрос, но не будем тут про нее :))
Добавлено в [mergetime]1114005436[/mergetime]
Переписал скрипт автодтзлайка на ОнЕнтер модуля, при желании игрок сможет снять дизлайк.
Neverwinter Script Source
/////////////////////////////////////
//*********************************//
//********Created by Buldog********//
//*********************************//
//*********Date: 04.04.2005********//
//*********************************//
//*******Modified by Buldog********//
//*********************************//
//*********Date: 20.04.2005********//
//*********************************//
/////////////////////////////////////

//Drows - Humans Good, Humans Neutral, Elfs, Halflings
//Half-Elfs - Half-Orcs, Drows, Humans Evil
//Halflings - Half-Orcs, Drows, Humans Evil
//Half-Orcs - Elfs, Humans Good, Halflings
//Humans Good - Half-Orcs, Drows, Humans Evil
//Humans Evil - Elfs, Humans Good, Halflings
//Humans Neutral - Half-Orcs, Drows
//Elfs - Half-Orcs, Drows, Humans Evil
//Gnomes, Dwarfs - No enemies

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)
                {
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_HALFORC)
                {
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF)
                {
                    if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                      TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        SetPCDislike(oTest, oPC);
                    }
                }
            }
            if(nTRace == RACIAL_TYPE_HUMAN && nTAlign == ALIGNMENT_NEUTRAL)
            {
                if(nPCRace == RACIAL_TYPE_HALFORC)
                {
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF)
                {
                    if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                      TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        SetPCDislike(oTest, oPC);
                    }
                }
            }
            if(nTRace == RACIAL_TYPE_HUMAN && nTAlign == ALIGNMENT_EVIL)
            {
                if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_GOOD)
                {
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF || nPCRace == RACIAL_TYPE_HALFELF)
                {
                    if(!TestStringAgainstPattern("**DROW**", sSubRace) &&
                      !TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        SetPCDislike(oTest, oPC);
                    }
                }
                if(nPCRace == RACIAL_TYPE_HALFLING)
                {
                    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)
                    {
                        SetPCDislike(oTest, oPC);
                    }
                    if(nPCRace == RACIAL_TYPE_ELF || nPCRace == RACIAL_TYPE_HALFELF)
                    {
                        if(!TestStringAgainstPattern("**DROW**", sSubRace) &&
                          !TestStringAgainstPattern("**DARK**", sSubRace))
                        {
                            SetPCDislike(oTest, oPC);
                        }
                    }
                    if(nPCRace == RACIAL_TYPE_HALFLING)
                    {
                        SetPCDislike(oTest, oPC);
                    }
                }
                else
                {
                    if(nPCRace == RACIAL_TYPE_ELF)
                    {
                        if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                          TestStringAgainstPattern("**DARK**", sSubRace))
                        {
                            SetPCDislike(oTest, oPC);
                        }
                    }
                    if(nPCRace == RACIAL_TYPE_HALFORC)
                    {
                        SetPCDislike(oTest, oPC);
                    }
                    if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_EVIL)
                    {
                        SetPCDislike(oTest, oPC);
                    }
                }
            }
            if(nTRace == RACIAL_TYPE_HALFLING)
            {
                if(nPCRace == RACIAL_TYPE_ELF)
                {
                    if(TestStringAgainstPattern("**DROW**", sSubRace) ||
                      TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        SetPCDislike(oTest, oPC);
                    }
                }
                if(nPCRace == RACIAL_TYPE_HALFORC)
                {
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_EVIL)
                {
                    SetPCDislike(oTest, oPC);
                }
            }
            if(nTRace == RACIAL_TYPE_HALFORC)
            {
                if(nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_GOOD ||
                  nPCRace == RACIAL_TYPE_HUMAN && nAlign == ALIGNMENT_NEUTRAL)
                {
                    SetPCDislike(oTest, oPC);
                }
                if(nPCRace == RACIAL_TYPE_ELF || nPCRace == RACIAL_TYPE_HALFELF)
                {
                    if(!TestStringAgainstPattern("**DROW**", sSubRace) &&
                      !TestStringAgainstPattern("**DARK**", sSubRace))
                    {
                        SetPCDislike(oTest, oPC);
                    }
                }
                if(nPCRace == RACIAL_TYPE_HALFLING)
                {
                    SetPCDislike(oTest, oPC);
                }
            }
        }
        oPC = GetNextPC();
    }
}

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

    if(GetIsPC(oPC) && !GetIsDM(oPC)) SetDislike(oPC);
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 20 2005, 18:05
Сообщение #16


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

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



Не, имхо если у вас ориентация на то, что есть несколько враждующих групп, то нало, чтобы дизы снять было нельзя...
Ходить в пати с врагами чтобы прокачацца... Не, это как-то не РПшно :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 20 2005, 18:10
Сообщение #17


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Как я понял у них не РПшный шард, так что им пойдет :).
Но все же лучше предоставить это в руки игроков и карать тех, кто собирается скачем компанией Вампиромов и Паладинов и идет качаЦЦа и бить мобоФФ. Тем более скажем вампира в тяжелой кирасе, со шлемом на башке трудно отличить от обычного воина, пусть игроки и мучаются.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 20 2005, 19:34
Сообщение #18


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



У нас смешанный шард, сошлись на направлении РП ПвП :) Но второй скрипт, все же, подойдет больше, наверно :)

Сообщение отредактировал Buldog - Apr 20 2005, 19:35
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Huk
сообщение Apr 21 2005, 16:37
Сообщение #19


Level 2
*

Класс: Монах
Характер: Lawful Neutral
Раса: Человек



не знаю, насчет кривости и ресурсоемкости, но в общем пришел я к следующему
1) теория
берем набор скриптов AnDenix'a - Another yet Dynamic Arrays
на хартбите загоняем всех пс в массив
для кажлдого пс в массиве смотрим подрасу, если она равна заданной прогоняем еще раз через массив, выставляя дислайки

2) практика (на заданном в первом посте примере)
Neverwinter Script Source
#include "inc_adarrays"

void main()
{
  object oMod = GetModule();
  //удаляем существующий массив с игроками...
  oArrDel(oMod, "onlinePlayers");
  //...и создаем новый
  object oPlayer = GetFirstPC();
  while(GetIsObjectValid(oPlayer)) {
    oArrAdd(oMod, "onlinePlayers", oPlayer);
    oPlayer = GetNextPC();
  }

  object oSource;
  object oTarget;
  string sSourceSubrace;
  string sTargetSubrace;

  int nNumPlayers = oArrLen(oMod, "onlinePlayers");

  int i;
  for (i=1; i<=nNumPlayers; i++) {

    oSource = oArrGet(oMod, "onlinePlayers", i);
    sSourceSubrace = GetSubRace(oSource);

    //если у пс нужная подраса...
    if(sSourceSubrace=="Drow" || sSourceSubrace=="Duergar") {
      int n;
    //...выставляем дислайк "чужим"
      for ( n=1 ; n <= nNumPlayers ; n++ ) {
        oTarget = oArrGet(oMod, "onlinePlayers", n);
        sTargetSubrace = GetSubRace(oTarget);
        if(sTargetSubrace != "Drow" && sTargetSubrace != "Duergar") {
          SetPCDislike(oSource, oTarget);
        }
      }
    }
  }
  }

работает, как ни странно :buba:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 22 2005, 12:56
Сообщение #20


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



Хм, интересная идея, а что в инклюде? Про "набор скриптов AnDenix'a - Another yet Dynamic Arrays", я ничего не слышал...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Huk
сообщение Apr 24 2005, 11:34
Сообщение #21


Level 2
*

Класс: Монах
Характер: Lawful Neutral
Раса: Человек



AnDenix Another Dynamic Arrays 0.2c
http://nwvault.ign.com/Files/scripts/data/...834174562.shtml
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Apr 27 2005, 09:23
Сообщение #22


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



На самом деле игроку не нужно ставить дизлайк для _всех_, достаточно только для тех, что на той-же локации. И вставить скрипт мне кажется разумным в onEnter локации, а не шарда.
В скрипте удобно использовать функцию GetNearestCreature():
Neverwinter Script Source
object oEnter = GetEnteringObject();
if (!GetIsPC(oEnter)) return;
object oNextPC;
int i=2;
do
{
    oNextPC = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR,PLAYER_CHAR_IS_PC,oEnter,i);
    i++;
    <тут проверка расы и выставление дизлайка если надо>
} while(GetIsPC(oNextPC));

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 27 2005, 12:19
Сообщение #23


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



Тоже мысль, вот только замучаемся скрипты в локации распихивать :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 28 2005, 15:45
Сообщение #24


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE
Тоже мысль, вот только замучаемся скрипты в локации распихивать

Я сразу ставил на все локи 1 скрипт, теперь легко все править :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 28 2005, 18:33
Сообщение #25


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



Нет, ну это понятно, что на все локи 1 скрипт, но локи, то сейчас без этого серипта, тоесть надо заходить в свойства каждой локи и вставлять скрипт, а у нас их болше двух сотен :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25th April 2024 - 22:20