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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 99 100 101 102 103 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Waromon
сообщение Aug 30 2006, 09:42
Сообщение #2501


Level 4
**

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



http://www.city-of-masters.ru/forums/index...p;p=89858&#


ЗЫ: Тяжелый случай...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Aug 30 2006, 09:47
Сообщение #2502


Level 5
**

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



Мне нужен скрипт, который ставится на область, а не на непися.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waromon
сообщение Aug 30 2006, 09:55
Сообщение #2503


Level 4
**

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



QUOTE
У меня вопрос, какой нужен скрипт чтобы после смерти непися заработал новый скрипт.


И:

QUOTE
Мне нужен скрипт, который ставится на область, а не на непися.


(IMG:style_emoticons/kolobok_light/shok.gif) (IMG:style_emoticons/kolobok_light/swoon.gif) (IMG:style_emoticons/kolobok_light/shok.gif)


http://www.city-of-masters.ru/forums/index...p;p=88758&# (Сообщение #2415)


ЗЫ: http://www.city-of-masters.ru/forums/index...=Search&f=5

Сообщение отредактировал Waromon - Aug 30 2006, 09:56
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Aug 30 2006, 10:04
Сообщение #2504


Level 5
**

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



Упс.. (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Aug 31 2006, 07:34
Сообщение #2505


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



Увижу спам в этой теме, головы поотрываю. (IMG:style_emoticons/kolobok_light/big_boss.gif) Касается молодежи... Отвечать не надо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Sep 1 2006, 02:18
Сообщение #2506


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Меня этот скрипт уже бесит. Не желает он работать правильно. Вроде все верно, но значение репутации меняться по отношению к игроку не желает. Сразу обмолвлюсь, пытаюсь восстановить отношение своей (не стандартной) фракции к игроку. Скрипт:

NSS
void AdjustFactionReputation(object oPC, object oFaction, int nCurRep, int nSetRep)
{
    object oMember = GetFirstFactionMember(oFaction, FALSE);

    while (oMember != OBJECT_INVALID)
    {
        AdjustReputation(oPC, oMember, nCurRep + nSetRep);
        oMember = GetNextFactionMember(oFaction, FALSE);
    }
}

void main()
{
    object oPC = OBJECT_SELF;
    location lPC = GetLocation(oPC);
    object oNeutral = GetObjectByTag("npc_faction");

    int nCurRep, nNeutral = 50;
    object oNPC = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE);

    while (oNPC != OBJECT_INVALID)
    {
        if (GetFactionEqual(oNPC, oNeutral))
        {
            nCurRep = GetReputation(oNPC, oPC);

            if (nCurRep != nNeutral)
            {
                AdjustFactionReputation(oPC, oNPC, nCurRep, nNeutral);
            }
        }
        oNPC = GetNextObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE);
    }
}

Пробовал по-разному, работает нормально, если только "AdjustReputation" вытащить из цикла, а вместо него внести "SetIsTemporaryNeutral". Почему значение не хочет устанавливаться без второй функции, я не понимаю.

Краткое описание работы скрипта, как я его вижу. В сфере, радиусом 20 метров, ищу любых существ. Внутреннее условие проверки фракции отсекает существ, которые не подпадают под него. Значение во время смерти игрока по отношению к НПС, на которого игрок напал, равно 0. Проверяю, неравно ли полученное значение 50, если неравно, продолжаю выполнение скрипта. С помощью кастомной функции через цикл проверяю, сколько у НПС было существ в партии. Всем пытаюсь установить значение 50 по отношению к игроку.

В итоге значение как было 0, так и остается 0. Фракция не имеет глобального эффекта. Обижается только то существо, на которое напали.

Кстати, во время мучений со скриптом, заметил некоторую странность в логих. Иногда не пишут, кто же именно убил игрока. Просто фраза "Someone killed Player". Шутку не понимаю, учитывая то, что предыдущая строчка четко показывает, что игрока ударил такой-то. Баг?

Из-за этой пакости невозможно вычислить убийцу.

Сообщение отредактировал Zirrex - Sep 1 2006, 02:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Sep 1 2006, 11:08
Сообщение #2507


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



AdjustFactionReputation - лишнее. Или по крайней мере она не в том направлении работает.
Тебе не надо искать каждого НПС этой фракции и устанавливать значение общее. Тебе надо установить лидеру фракции репу в 50 у других участников фракции сделать ClearPersonalReputation(oPC,oMember); К тому же, если у твоей фракции не стоит ГЛОБАЛЬНЫЙ эффект, то ничего менять не надо в репе. Только почистить у всех и они забудут старые грешки. Не надо глобально править репутацию у всей фракции. К примеру, если у фракции стоит глобальное отслеживание репы, то меняй у главаря на 50 и чисти у тех, кто видим и все. Вот такой функцией: (примерно...)

NSS
void ClearFactionReputation(object oPC, object oFaction=OBJECT_SELF)
{
    object oMember = GetFirstFactionMember(oFaction, FALSE);

    while (oMember != OBJECT_INVALID)
    {
        ClearPersonalReputation(oPC, oMember);
        oMember = GetNextFactionMember(oFaction, FALSE);
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Sep 1 2006, 23:03
Сообщение #2508


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Aiwan, спасибо, то, что нужно было (IMG:style_emoticons/kolobok_light/smile.gif) Я как раз подумывал использовать эту функцию, тем более, когда искал на форуме что-нибудь про фракции, натолкнулся на нее в твоем скрипте, но решил вначале добить все же ту функцию, которую использовал изначально. Видимо, работает она нормально только тогда, когда эффект у фракции глобальный.

Немного усовершенствовал общий скрипт, добавить перечисление всех своих фракций с помощью цикла, а то писать объект такой-то, и впихивать их все под условие, все же не очень весело, да и лишние проверки для цикла. Получился следующий скрипт, если кому нужен на вооружение, можно использовать, я не буду против (IMG:style_emoticons/kolobok_light/smile.gif)

NSS
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 main()
{
    object oPC = OBJECT_SELF, oFaction, oNPC;
    location lPC = GetLocation(oPC);
    int i, nCurRep, nNeutral = 50;

    for (i = 1; i <= 7; i++) // значение зависит от количества своих фракций
    {
        oFaction = GetObjectByTag("factionnpc_" + IntToString(i));

        oNPC = GetFirstObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE);

        while (oNPC != OBJECT_INVALID)
        {
            if (GetFactionEqual(oNPC, oFaction))
            {
                nCurRep = GetReputation(oNPC, oPC);

                if (nCurRep != nNeutral)
                {
                    ClearFactionReputation(oPC, oNPC);
                }
            }
            oNPC = GetNextObjectInShape(SHAPE_SPHERE, 20.0, lPC, FALSE, OBJECT_TYPE_CREATURE);
        }
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Don_Beavis
сообщение Sep 2 2006, 11:08
Сообщение #2509


Level 1


Класс: Клерик
Характер: Neutral Evil
Раса: Дварф



Люди, помогите! Кинте ктонить хороший скриптик AI с описанием. Заранее спасибо! (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waromon
сообщение Sep 2 2006, 11:43
Сообщение #2510


Level 4
**

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



2 Don_Beavis

Посмотри здесь.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Noah
сообщение Sep 3 2006, 22:22
Сообщение #2511


Level 5
**

Класс: Убийца
Характер: Chaotic Neutral
Раса: Полуэльф



Получился следующий скрипт, если кому нужен на вооружение, можно использовать, я не буду против :)

а куда скрипт ставить?На персептион модуля?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Sep 4 2006, 09:46
Сообщение #2512


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

Класс: Друид
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [PW]
Амен



Нет, причем тут модуль? Тебе же скрипт не всегда необходим. Скрипт ставится на эвент смерти модуля (OnPlayerDeath), и обрабатывается только тогда, когда умирает персонаж. Чтобы после смерти фракции для персонажа не были злыми, их необходимо обновить. Не забудь сделать куклы с фракциями, которые необходимо разместить где-нибудь в модуле, чтобы скрипт мог к ним обращаться.

Сообщение отредактировал Zirrex - Sep 4 2006, 09:48
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Sep 5 2006, 16:30
Сообщение #2513


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Так как скриптера у меня *хлюп-хлюп* нету, прошу помочь бедному дроу написать скрипт на исчезновение челов из области на полдня-день в случайное время, но не слишком часто...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Sep 5 2006, 16:49
Сообщение #2514


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Опиши ситуацию ПОДРОБНО. Как и при каких обстоятельствах NPC должен исчезать (в диалоге, просто так), в какое время суток (если это критично) и т.д. Здесь нужна конкретика. (IMG:style_emoticons/kolobok_light/wink3.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Elf-Drow
сообщение Sep 5 2006, 23:44
Сообщение #2515


Level 8
***

Класс: Теневой Танцор
Характер: True Neutral
Раса: Эльф



Исчезать должны просто так, вне зависимости от времени суток.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
windhover
сообщение Sep 6 2006, 00:07
Сообщение #2516


Level 3
*

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



Доброго времени суток.
Возникла следующая проблема:
Изменил стандартный скрипт заклинания лечения к проверке на андед добавил проверку на субрасу но проверка не срабатывает. Ошибок вроде нет пробовал в отдельном скрипте - работает.
Ткните, пожалуйста носом что не так делаю, подозреваю что проблема в руках =)
Пробовал просто вносить изменения в тулсете в стандартный скрипт, пробовал вносить изменения в .nss выдраный из .bif'a и ложил его в оверрайд..
Или нужно обязательно делать отдельный скрипт и прописывать его в spells.2da?

И еще вопрос теоретический:
Какой приоритет использования ресурсов игрой? По моим предположениям: сначала в оверриде смотрит, потом
ресурсы хаков и в последнюю очередь использует стандартные ресурсы?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Sep 6 2006, 07:50
Сообщение #2517


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE(windhover @ Sep 6 2006, 03:07) [snapback]91142[/snapback]
сначала в оверриде смотрит, потом
ресурсы хаков и в последнюю очередь использует стандартные ресурсы

Верно.
Если отредактировать стандартный скрипт, то будет работать он. Никуда его класть не надо. Если удалить его из модуля то будет пахать дефолтный с таком же именем от Биовар.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
windhover
сообщение Sep 7 2006, 18:15
Сообщение #2518


Level 3
*

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



Спасибо, разобрался в чем проблема:
Я вносил изменения в скрипт nw_i0_spells - инклюд. Почитал в лексиконе, что для того чтобы изменения внесенные в инклюд вступили в силу нужно перекомпилировать ВСЕ скрипты которые ссылаються на данный инклюд. Возможно это можно какимто образом обойти? А то слишком много скриптов надо перекомпиливать. (IMG:style_emoticons/kolobok_light/sad.gif) Покачто я решил проблему так: написал свой инклюд и дал ссылку на него в тех скриптах заклинаний, которые мне нужны, перекомпилил все это дело - заработало.

Возможно есть решение данной проблемы попроще?

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 7 2006, 18:29
Сообщение #2519


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

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



QUOTE(windhover @ Sep 7 2006, 19:15) [snapback]91245[/snapback]
Возможно это можно какимто образом обойти?

нет, но это можно сделать за пару минут.
ВТулсете Build - Build Module.
Если нужна только копмиляция, ставь галочку в Compile и в Scripts, остальные галочки снимай.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
windhover
сообщение Sep 7 2006, 19:14
Сообщение #2520


Level 3
*

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



QUOTE(Lex @ Sep 7 2006, 18:29) [snapback]91246[/snapback]

нет, но это можно сделать за пару минут.
ВТулсете Build - Build Module.
Если нужна только копмиляция, ставь галочку в Compile и в Scripts, остальные галочки снимай.


Эм.. Дело в том, что в лексиконе билд модуля тоже описывается как панацея.. но не помогло. (IMG:style_emoticons/kolobok_light/unsure.gif)
Я так понял, что стандартные скрипты в которые не вносят изменений не компилируются при билде модуля.
Хотя может это у меня глюк, проверял на 1.68.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 7 2006, 19:21
Сообщение #2521


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

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



да, стандартные не билдаются, поэтому если ты вносишь изменения в стандартную библу, которая влияет на заклы, тебе еще скрипты этих заклов надо у себя в модуле пересохранить. Вродь только так.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Sep 7 2006, 21:54
Сообщение #2522


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

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



Стандартные инклюды типа nw_i0_spells, nwscript очень нежелательно изменять. Ещё раз подумай, надо ли тебе это.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
windhover
сообщение Sep 8 2006, 12:59
Сообщение #2523


Level 3
*

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



QUOTE(virusman @ Sep 7 2006, 21:54) [snapback]91271[/snapback]

Стандартные инклюды типа nw_i0_spells, nwscript очень нежелательно изменять. Ещё раз подумай, надо ли тебе это.


Да я просто скопировал этот инклюд, внес в него нужные изменения, сохранил с другим названием, прописал его в нужных заклинаниях и все откомпилил.. так вроде проще всего и безопастнее, наверно (IMG:style_emoticons/kolobok_light/smile.gif)
Всем спасибо за советы.

Сообщение отредактировал windhover - Sep 8 2006, 13:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Milfes
сообщение Sep 15 2006, 13:28
Сообщение #2524


Level 5
**

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



У меня проблема. Надо что бы когда игрок наступал на тригер к нему подбегал хенчь и начинал разговор, но если хенчь далеко то он подбегает но разговор не начинает.
Вот скрипт на он энтаре тригера:
NSS
void main()
{
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;
if (GetLocalInt(OBJECT_SELF,"ACTIVATED")) return;
object oIlirin = GetHenchman(oPC);
if (GetTag(oIlirin)!="ilirin01") return;
SetLocalInt(oIlirin,"D_LINE",GetLocalInt(OBJECT_SELF,"CONVERSATION_LINE"));
SetLocalInt(OBJECT_SELF,"ACTIVATED",TRUE);
DestroyObject(OBJECT_SELF,5.0);
AssignCommand(oIlirin, ClearAllActions(TRUE));
AssignCommand(oPC, ClearAllActions(TRUE));
SetCutsceneMode(oPC,TRUE);
AssignCommand(oIlirin, ActionStartConversation(oPC,"plot_ilitrin01"));
}

Может кто знает в чём ошибка.
ЗЫ так же пробовал что бы хенчь сначала подбегал при момощи ActionMoveToObjecy, а только потом начинал разговор, но всё равно не получается.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 15 2006, 13:32
Сообщение #2525


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

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



Знакомый код (IMG:style_emoticons/kolobok_light/smile.gif) ))
У мну работало. Правда на большой дальности не проверял. Довольно странно, что не работает, если далеко.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 99 100 101 102 103 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28th April 2025 - 09:38