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

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

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


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

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



Ты на предположение мое не ответил. Скрипт на кого должен использоваться? Только на игрока? Если на игрока, то зачем "object oTarget = GetFirstPC();"? У тебя есть функция "GetItemActivator();", а это никто иной, как игрок.
NSS
void main()
{
    object oPC = GetItemActivator();
    object oItem = GetItemActivated();
    string sItem = GetTag(oItem);
    location lSparks = GetLocation(oPC);

    if ("item_1" == sItem)
    {
        ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_DIVINE_STRIKE_FIRE), lSparks);
        DelayCommand(1.0, AssignCommand(oPC, ActionSpeakString("Упс...")));
    }
}

Советую все главные функции выносить наверх модульного эвента, чтобы потом, если ты решишь добавить описание срабатывания иной вещи, не писать их снова.

Чтобы выполнить скрипт на кого-угодно (зависит от установки в самой вещи), т.е. на себя или на любой объект, на который будет направлен предмет, то можно сделать так:
NSS
void main()
{
    object oPC = GetItemActivator();
    object oItem = GetItemActivated();
    object oTarget = GetItemActivatedTarget();
    string sItem = GetTag(oItem);

    if ("item" == sItem)
    {
        // если на цель
        ExecuteScript("name_script", oTarget);
        // если на себя
        ExecuteScript("name_script", oPC);
    }
}


Сообщение отредактировал Zirrex - Aug 28 2006, 17:23
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Aug 28 2006, 21:02
Сообщение #2492


Level 5
**

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



Понятно
Спасибо!
Все скрипты которые мне дают я сохраняю у меня, их уже около сотни.

Я уже спрашивал, но спрошу ещё.
Какой нужен скрипт для прибавления нужного количество мне жизней.


Сообщение отредактировал Артём - Aug 28 2006, 17:54
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilrilan
сообщение Aug 29 2006, 10:26
Сообщение #2493


Level 1


Класс: Некромант
Характер: Lawful Evil
Раса: Человек



Вопрос конечно может и странный...
Где находится текст функции GetRacialType() дабы его похерить и написать так как оно мне надо? Эксплорером разодрал весь scrpits.bif, но в nwnscript.nss только заголовок нашел
:-(
Где эта функция находится никто не знает? И получится ли вообще править общесистемные функции?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Aug 29 2006, 12:52
Сообщение #2494


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

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



если функция стандартная - то она фшыта в движок ...изменить можно каким нить извратом с дизасмом и хуками вроде (IMG:style_emoticons/kolobok_light/crazy.gif) да и зачем ее менять О_о
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilrilan
сообщение Aug 29 2006, 13:13
Сообщение #2495


Level 1


Класс: Некромант
Характер: Lawful Evil
Раса: Человек



а папка оверрайд ничем помочь не может? мне надо заменить эту функцию в игре на свою... как вот только это сделать?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 29 2006, 13:33
Сообщение #2496


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

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



Зачем что-то менять/заменять??
Напиши свою функцию!!!

Скажи точно, что тебе надо, чтобы функция делала??

Сообщение отредактировал -fenix- - Aug 29 2006, 14:00
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ilrilan
сообщение Aug 29 2006, 14:26
Сообщение #2497


Level 1


Класс: Некромант
Характер: Lawful Evil
Раса: Человек



Мне надо чтобы Невер читал расу чара не из файла перса, а из БД. Хранить цифру в БД несложно, сложнее заставить Невер считать эту цифру расой.
Ну или менять расу персонажа на лету, скриптом. Если не получится гетрасиалтайп переписать, буду искать адрес в памяти где раса и через nwnx пытаться че-нить сделать. Но геморрой...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Aug 29 2006, 14:36
Сообщение #2498


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

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



А не проще написать функцую, каторая бы по имени или там ID или чему там, возвращала из базы расу перса, и использовать ее замест стандартной???
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Aug 29 2006, 17:58
Сообщение #2499


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

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



QUOTE
Ну или менять расу персонажа на лету, скриптом. Если не получится гетрасиалтайп переписать, буду искать адрес в памяти где раса и через nwnx пытаться че-нить сделать. Но геморрой...
RacialType:
CODE
pObjectData = pObject+0xC64; //(смещения в байтах)
nRacialType = *(pObjectData+0x3E4);
//только учти, что в NWNX-Functions объект смещён на 4:
//this->pGameObject = gameObject+4;

типа того.
Но проще и безопасней заюзать LetoScript и изменять значение в bic-файле. Вряд ли расу придётся менять как перчатки.

Ещё можно заменить эту функцию в nwscript.nss и использовать вместо неё свою, но для этого всё равно придётся вставлять свой инклюд в каждый файл, где используется эта функция (Креон перл-скрипт для этого юзал).

Сообщение отредактировал virusman - Aug 29 2006, 18:19
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Aug 30 2006, 09:21
Сообщение #2500


Level 5
**

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



У меня вопрос, какой нужен скрипт чтобы после смерти непися заработал новый скрипт.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
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
Раса: Эльф



Исчезать должны просто так, вне зависимости от времени суток.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 30th April 2025 - 12:07