Город Мастеров
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:
Подскажите, как сие реализовать возможно?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
Buldog
сообщение Apr 20 2005, 13:00
Сообщение #2


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

Сообщений в этой теме
- Huk   Дислайки   Apr 4 2005, 20:49
- - balrog   QUOTE Drow + Duergar'ы против остальных. Корч...   Apr 4 2005, 21:04
- - Huk   QUOTE (balrog @ Apr 4 2005, 21:04) Корче, скоро ан...   Apr 4 2005, 22:19
- - RiPPeR   По-моему никак, только через плагин к NWNEX2   Apr 6 2005, 15:54
- - _kaa_   Репутация и функции работы с ней реализованы довол...   Apr 7 2005, 22:29
- - virusman   На OnClientEnter проверять субрасу, проходиться по...   Apr 15 2005, 11:36
- - slavaz   virusman кстати, чего это на вполне безобидное ...   Apr 15 2005, 12:03
- - virusman   Не знаю, это какая-то проблема с rpgplanet.. Закач...   Apr 20 2005, 08:28
- - Buldog   А я, вот, на Nighfall Dreams извратнулся, скрипт а...   Apr 20 2005, 13:00
- - RiPPeR   Бедный шард... Точнее игроки с лагами...   Apr 20 2005, 13:10
- - Buldog   Да нет, лагов не больше чем было до введения скрип...   Apr 20 2005, 13:15
- - RiPPeR   Тем не менее можно было сделать с меньшей нагрузко...   Apr 20 2005, 13:21
- - Buldog   В принципе можно переделать скрипт под ОнЕнтер, но...   Apr 20 2005, 13:29
- - RiPPeR   А что такого? Типо помирились , чтобы экспы больше...   Apr 20 2005, 13:32
- - Buldog   Угу, экспа щас вообще больной вопрос, но не будем ...   Apr 20 2005, 13:37
- - Lex   Не, имхо если у вас ориентация на то, что есть нес...   Apr 20 2005, 18:05
- - RiPPeR   Как я понял у них не РПшный шард, так что им пойде...   Apr 20 2005, 18:10
- - Buldog   У нас смешанный шард, сошлись на направлении РП Пв...   Apr 20 2005, 19:34
- - Huk   не знаю, насчет кривости и ресурсоемкости, но в об...   Apr 21 2005, 16:37
- - Buldog   Хм, интересная идея, а что в инклюде? Про "на...   Apr 22 2005, 12:56
- - Huk   AnDenix Another Dynamic Arrays 0.2c http://nwvault...   Apr 24 2005, 11:34
- - _kaa_   На самом деле игроку не нужно ставить дизлайк для ...   Apr 27 2005, 09:23
- - Buldog   Тоже мысль, вот только замучаемся скрипты в локаци...   Apr 27 2005, 12:19
- - RiPPeR   QUOTE Тоже мысль, вот только замучаемся скрипты в ...   Apr 28 2005, 15:45
- - Buldog   Нет, ну это понятно, что на все локи 1 скрипт, но ...   Apr 28 2005, 18:33


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

 



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