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

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

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


Level 5
**

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



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


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

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



Для срабатывания скрипта при использовани предмета ни какой скрипт писать не надо, есть специальное событие - OnActivateItem в св-вах модуля. Вот туда и нужно вписать скрипт, который будет срабатывать при использовании предмета. Можешь пасмотреть еще ТУТ
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Aug 28 2006, 14:47
Сообщение #2488


Level 5
**

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



Понятно
Спасибо!


Я пытался написать скрипт по той схеме но у меня нечего не вышло.
NSS
void main()
{
object oActivator = GetItemActivator();
object oActivated = GetItemActivated();
object oPC = GetEnteringObject();


if ("item_1" == GetTag(oActivated))
  {
  effect eDamage = EffectDamage(1);
  string sString="Текст";
  ActionDoCommand(AssignCommand(oPC, ActionSpeakString(sString)));
  }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Aug 28 2006, 15:19
Сообщение #2489


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

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



Артём, ты меня извини, конечно, но ты вообще читаешь, для чего служат те или иные функции, прежде чем их использовать? Как я понял из скрипта, ты хотел нанести урон цели, и при этом цель должна что-то сказать. Скрипт такой:
NSS
void main()
{
    object oPC = GetItemActivator();
    object oItem = GetItemActivated();
    object oTarget = GetItemActivatedTarget(); // не GetEnteringObject(); Прочитай про эту функцию
    string sItem = GetTag(oItem);

    if ("item_1" == sItem)
    {
        AssignCommand(oTarget, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDamage(1), oTarget));
        AssignCommand(oTarget, ActionSpeakString("Текст"));
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Aug 28 2006, 17:13
Сообщение #2490


Level 5
**

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



Прошу прощение за глупость.[
Скрипт я написал, не проверял, я просто хотел привести пример.
Сам скрипт такой.
NSS
void main()
{
object oActivator = GetItemActivator();
object oActivated = GetItemActivated();
object oTarget = GetFirstPC();
location lSparks = GetLocation(oTarget);

if ("item_1" == GetTag(oActivated))
  {
  DelayCommand(1.0,ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect
  (VFX_IMP_DIVINE_STRIKE_FIRE),lSparks));

  string sString="Упс...";
  ActionDoCommand(AssignCommand(oTarget, ActionSpeakString(sString)));
  }
}


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

Сообщение отредактировал Артём - Aug 28 2006, 16:52
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
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

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

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

 



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