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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 67 68 69 70 71 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lex
сообщение Nov 5 2005, 02:35
Сообщение #1696


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

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



а что не работает?
\\ удаление всех вещей не корректное. А имено некорректно сработает, если в инвентаре будет сумка с вещами.
+ лишние скобки.. а так вроде ок
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Nov 5 2005, 03:01
Сообщение #1697


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



Мож из-за скобок? А вообще не надо уже, мне только что один пользователь в ЛС прислал другой скрипт.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Nov 5 2005, 11:05
Сообщение #1698


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

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



Белатрис он работает, так как взят с моего нынешнего модуля и подправлен. А если лыжи не катются... то это не ко мне.
Добавлено в [mergetime]1131178074[/mergetime]
QUOTE (Белатрис @ Nov 5 2005, 05:11)
Это скрипт Айва, я только убрал здесь че-то, ну то что мне не нужно было.

:lol: :lol: :lol:
Neverwinter Script Source
}
&#092; // ВОТ ЭТУ ЗАГОГУЛИНУ УБЕРИ
//----------------------  Оденем нашего игрока ---------------------------------
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Nov 5 2005, 12:38
Сообщение #1699


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



Не смешно!
У меня скрипт одежду дает, раздевает ПС, а вот одеть... фиг!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 5 2005, 18:17
Сообщение #1700


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



фуф. Устал и вновь обращаюсь к вам за помощью.

Вопрос такой:
Делаю скрипт, в результате которого патрульный стражник, если увидит отдыхающего игрока, будет бежать к нему.

Сначала пробовал писать индивидуальный скрипт на основе стандартного x2_def_percept, который вставлял в слот "OnPerception" стражника, в этот скрипт после строки
ExecuteScript("nw_c2_default2", OBJECT_SELF);

Вставлял следующие строки:

object oPC=GetLastPerceived();
if (GetIsPC(oPC)&&GetIsResting(oPC))
{
ClearAllActions();
ActionMoveToObject(oPC, TRUE, 3.0);
}
но в результате несчастный стражник, уйдя за три квартала от меня, с какого-то перепугу прибегал опять. :this:

Рассмотрев повнимательнее скрипт nw_c2_default2, я понял, что игнорировать его полностью - нельзя, так как он включает действия и для случая, когда замечен враг, и т.п.
Тогда я решил поставить на UserDefined те же самые строки, ведь в конце nw_c2_default2 идет вызов Event-а UserDefined.
Теперь стражнику вообще чхать на меня, отдыхай хоть у него под ногами... :agr:

Где моя ошибка?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Nov 5 2005, 21:28
Сообщение #1701


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Kavin, твоя ошибка в выборе события - OnPerception срабатывает когда игрок входит/выходит в/из зоны видимости/слышимости стражника. т.е. твой скрипт будет работать только в тех случаях, когда игрок уже дрыхнет где-то, а стражник, подходя, замечает его.
нужно вешаться на OnHeartBeat(аналогично тому, как ты вешался на персепшн, т.е. после вызова nw_c2_default1) и там проверять, находится ли игрок в пределах видимости и его состояние. и там уже пинать бомжа. :crazy:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 5 2005, 21:36
Сообщение #1702


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

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



другой вариант это при старте реста поиск стражников ближайших, которые игрока видят. Ну и далее по твоему сценарию. Так имхо экономичнее, чем хб стражи грузить
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 5 2005, 22:17
Сообщение #1703


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



Lex, как повесить скрипт на стражника, я знаю, а вот как выполнять скрипт при старте Rest-а игрока?.. Его-то слотов я не вижу.

dumbo, Спасибо. Способ подходящий, кажется. Единственное, что меня смущает, что OnHeartBeat происходит каждые 6 секунд, и пока стражник одуплится и добежит, ты уже отдохнешь и под шумок свалишь, особенно если низкоуровневый персонаж...
А стражник тебя догонит, высунув язык на плечо, и скажет: "Низзя! Было тут отдыхать...".
И все, хотя главная задача - помешать игроку отдохнуть.

Была немного другая затея - когда игрок садится отдыхать, рядом с ним, шагах в 10-20, в случайном направлении, создавать Waypoint, телепортировать из казармы патруль, давать ему команду "К бомжу бегом марш!", и далее - мешать игроку отдыхать.
Что мне помешало:
1. Не умею еще отлавливать начало отдыха игрока.
2. Думаю, помучившись, я бы сумел расположить Waypoint на расстоянии 10-20 шагов в случайном направлении. Но если игрок сядет отдыхать на краю карты, то стражу может забросить на макушки деревьев или вообще куда-то нафиг.
Предполагаемые выходы из ситуации:
а) понатыкать на карте Waypointов, и определять ближайший, к нему стражу и телепортировать. Но тогда получается слишком много объектов?.. При размере карты, скажем 12 на 12 надо будет минимум 144 waypointa.
б) При расположении Waypointа проверять, не вышел ли он за пределы локации, и в соответствии с этим корректировать координаты.
Однако я не умею проверять, не попал ли Waypoint за границу...
Может быть, подскажет кто функции нужные?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 5 2005, 22:32
Сообщение #1704


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

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



QUOTE (Kavin @ Nov 5 2005, 23:17)
1. Не умею еще отлавливать начало отдыха игрока.

свойства модуля - события - onPCRest
QUOTE (Kavin @ Nov 5 2005, 23:17)
2. Думаю, помучившись, я бы сумел расположить Waypoint на расстоянии 10-20 шагов в случайном направлении. Но если игрок сядет отдыхать на краю карты, то стражу может забросить на макушки деревьев или вообще куда-то нафиг.

функция CreateRandomLocation (есть в базе) + проверка на валидность координаты (тут придется наверное параметры локи занасить в локалки этой самой локи. По сути надо знать ширину и длину в тайлах и умножить то ли на 10, то ли на 15, чтобы получить коорлинаты.. я уж не помню ну и далее очевидно.. Проблемы это тем не менее полностью не решает)
QUOTE (Kavin @ Nov 5 2005, 23:17)
а) понатыкать на карте Waypointов, и определять ближайший, к нему стражу и телепортировать. Но тогда получается слишком много объектов?.. При размере карты, скажем 12 на 12 надо будет минимум 144 waypointa.

хороший вариант. Канает. Но только наф так много? Прикинь локу города... поставь там всего то 10-20 поинтов и ты покроешь всю основную зону. не надо стремиться делать 1 поинт на тайл, лучше распологать их более рационально.. у дверей, закоулвок и прочих мест, откуда стражник мог появиться незамечанным)
QUOTE (Kavin @ Nov 5 2005, 23:17)
б) При расположении Waypointа проверять, не вышел ли он за пределы локации, и в соответствии с этим корректировать координаты.

??? если у тя стоят поинты, провека не нуна. Они ж на нормальных местах стоят.



че-то меня седня на большой пост развезло.. молчанка на пару дней..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 6 2005, 11:09
Сообщение #1705


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



QUOTE (Lex @ Nov 5 2005, 22:32)
хороший вариант. Канает. Но только наф так много? Прикинь локу города... поставь там всего то 10-20 поинтов и ты покроешь всю основную зону. не надо стремиться делать 1 поинт на тайл, лучше распологать их более рационально.. у дверей, закоулвок и прочих мест, откуда стражник мог появиться незамечанным)


Согласен с тобой, однако местность - не город, а хутор, и если я сяду на краю карты отдыхать, то стража не успеет добежать до меня из ближайшего закоулка.
Кроме того, я подумал сегодня и забраковал этот вариант по той причние, что если я сяду отдыхать прям у невидимого Вэйпойнта, то стража "появится из сумрака" прямо около меня. Некузяво. Ночной дозор, блин. :yes:
Так что остается только случайное расположение Вэйпойнта. В принципе, сейчас найду функцию RandomLocation и разберусь.
О результатах отпишу. =)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Nov 6 2005, 11:28
Сообщение #1706


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



Вот описание скрипта который мне нужен:
Когда 4 предмета(допустим с тагами 1 , 2 , 3 и 4) попадут на алтарь( с тагом Aktar_01 ) то на него производится эфект(как при лечении(я имею ввиду лучь оква-голубой))и с двери(таг Door_Sklep_01_12 ) снимается супер-пупер необезреживающаяся ловушка.

Сообщение отредактировал Белатрис - Nov 6 2005, 11:29
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 6 2005, 13:00
Сообщение #1707


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

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



ну и где проблема?
все, что надо для

1. снятия ловушки
Neverwinter Script Source
// Disable oTrap.
// - oTrap: a placeable, door or trigger.
void SetTrapDisabled(object oTrap)

2. эффека
наложение:
Neverwinter Script Source
// Apply eEffect to oTarget.
void ApplyEffectToObject(int nDurationType, effect eEffect, object oTarget, float fDuration=0.0f)

сам эффект:
Neverwinter Script Source
// * Create a Visual Effect that can be applied to an object.
// - nVisualEffectId
// - nMissEffect: if this is TRUE, a random vector near or past the target will
//  be generated, on which to play the effect
effect EffectVisualEffect(int nVisualEffectId, int nMissEffect=FALSE)

константы эффектов:
Neverwinter Script Source
VFX_IMP_HEALING_G
VFX_IMP_HEALING_L
VFX_IMP_HEALING_M
VFX_IMP_HEALING_S
VFX_IMP_HEALING_X


как делать:
в закладку onDisturbed обрабатываешь работу с вещами, оперируя этим:
Neverwinter Script Source
// Get the last object that disturbed the inventory of the caller.
// * Returns OBJECT_INVALID if the caller is not a valid creature or placeable.
object GetLastDisturbed()

// Get the type of disturbance (INVENTORY_DISTURB_*) that caused the caller's
// OnInventoryDisturbed script to fire.  This will only work for creatures and
// placeables.
int GetInventoryDisturbType()

// get the item that caused the caller's OnInventoryDisturbed script to fire.
// * Returns OBJECT_INVALID if the caller is not a valid object.
object GetInventoryDisturbItem()




\\ скрипт пишется за 2-3 минуты максимум. Время пошло.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Nov 6 2005, 13:29
Сообщение #1708


Level 11
***

Класс: Воин
Характер: Lawful Good
Раса: Человек



А как проверка делается, а то я уже пол часа сижу со статьей и ничего не могу придумать!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 6 2005, 14:18
Сообщение #1709


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

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



варианты:

1.
- на ивент INVENTORY_DISTURB_ADDED проверять, если добавили вещь с нужным тегом, то локалку соотв. сделать +1. Убрали -1. Или делать локалку-состояние.. описал ниже ее. (причем я не наю, как у тебя с уникальностью вещей.. но можно сделать проверку на дубли)
- как только локалка стала = 4 то соотв эффект и ловушка.

2. после каждого изменения инвентаря алтаря (ADDED или REMOVED.. не суть, можно не проверять даже) пробегаешься по вещам, что там есть и формируешь локалку (либо как выше, либо локалку-состояние.. например 1111 значит, что все есть... 1011 значит, что нет второй вещи.. ну и тд.) и проверяешь в конце..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 6 2005, 20:05
Сообщение #1710


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



Lex, послушай, я немного запутался.
Тип данных Location - это типа "Место с координатами Х, У, Z", или именно игровая локация?..

Сообщение отредактировал Kavin - Nov 6 2005, 20:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
AliceDiren
сообщение Nov 6 2005, 20:29
Сообщение #1711


Level 7
**

Класс: Маг
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [Sn]



Kavin, скачай себе Lexicon. Очень полезная вещь.
Neverwinter Script Source
location loc = Location(objArea, vecPosition, fFacing);

и функция
Neverwinter Script Source
location Location(
    object oArea,
    vector vPosition,
    float fOrientation
);

QUOTE

oArea
An Area within the game module

vPosition
An object specifying an xyz coordinate

fOrientation
An angular value between 0.0 and 360.0
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 6 2005, 21:34
Сообщение #1712


Level 8
***

Класс: Паладин
Характер: Lawful Good
Раса: Полуэльф
ПОДМАСТЕРЬЕ



Угу. Ясно! Location - тип данных, полностью описывающий месторасположение объекта.

Лексикон качаю. Безуспешно - уже 4-й раз, с разных ссылок... :swoon:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Nov 6 2005, 22:15
Сообщение #1713


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Объясните мне пожайлуста :shout: Почему при использовании функции - AddJournalQuestEntry, с целью добавить ступень в журнале, которая завершает категорию, мне не выдают опыт, который я назначаю.(в поле свойств категории)

Приведу более широкий пример.
Neverwinter Script Source
if(sTag == "KEY_PERSONAL1")
{
AddJournalQuestEntry("KEY_QUEST",2,oPC);
}

Игроку дают квест - найти ключик.
Добавляется запись в журнал(с этим проблем нет) - далее игрок находит ключ - квест завершается и запись в журнале переходит в закладку "выполненые", но опыта за завершенную категорию не дают :this:

Сообщение отредактировал Лито - Nov 6 2005, 22:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 6 2005, 22:20
Сообщение #1714


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

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



QUOTE (Nick Parker @ Nov 5 2005, 07:13)
4)При создании квеста, вешаемого на ветку диалога, когда пишешь ему имя, тэг, приоритет, ниже есть ХР. Что это? Думал опыт, но при прохождении опыт не дают. Приходится через «дать награды».

QUOTE (Dik Morris @ Nov 5 2005, 08:56)
GetJournalQuestExperience

и сами даем опыт.

Лито, с такими вопросами в ОДИНОЧНЫЕ ВОПРОСЫ или Вопросы Новичков, а не сюда.
\\ кстати ответ взят оттуда, с последней страницы, так что.. выводы сам делай.
Добавлено в [mergetime]1131304925[/mergetime]
Kavin, тебе кстати тоже.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Nov 6 2005, 22:30
Сообщение #1715


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Гм...тогда придется писать проверку, чтобы опыт давался только один раз. :unsure:
Эх...ладно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Daemonix
сообщение Nov 8 2005, 01:47
Сообщение #1716


Level 10
***

Класс: Мастер Оружия
Характер: Lawful Good
Раса: Человек



Ну кто-нибудь, помогите! :this:
Neverwinter Script Source
void main()
{
    object oMod = GetModule();
    object oPC = GetEnteringObject();
  if (!GetIsPC(oPC) || GetLocalInt(oMod, "START_GAME"))
      {return;}
      {
      SetLocalInt(oMod, "START_GAME", TRUE);
}
TakeGoldFromCreature(GetGold(oPC),oPC, TRUE);
object oChest = GetObjectByTag("startchest");
object oItem = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItem))
        {
            CopyItem(oItem, oChest, FALSE);
            DestroyObject(oItem);
            oItem = GetNextItemInInventory(oPC);
        }
  int i=0;
        while(i<14)
        {
        DestroyObject(GetItemInSlot(i, oPC));
        i++;

        }
}

Ну и так и так делал, все деньги у игрока НИ В КАКУЮ не забирает!
Ошибок тут нет, но вот не забирает деньги и всё, хотя строка такая есть...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 8 2005, 01:51
Сообщение #1717


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

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



Мля.. не первый раз уже такое.. Daemonix

функция:
Neverwinter Script Source
void TakeGoldFromCreature(
    int nAmount,
    object oCreatureToTakeFrom,
    int bDestroy = FALSE
);


из Лексикона
QUOTE

Description
Take nAmount of gold from oCreatureToTakeFrom.

The taker needs to be a non-area and non-module for it to work correctly. It can be the creature passed into oCreatureToTakeFrom, of course.


ну народ, блин, :RTFM:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
KoYuKi
сообщение Nov 10 2005, 20:40
Сообщение #1718


Level 6
**

Класс: Варвар
Характер: Chaotic Good
Раса: Полуорк



Друзья, есть у меня проблема, вобщем есть два города, допустим город А и город В, в окрестностях каждого города 6 лок, между городами можно передвигаться. Так вот, как сделать так чтобы если вы умерли в одной из шести лок города А, то вы появлялись в храме города А, а если в одной из 6 лок города В то в храме города В.
Я как то раз уже спрашивал про это дело в разделе Шарды Рунета, тогда мне никто толком ниче не разъяснил, может поможете?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Nov 10 2005, 20:59
Сообщение #1719


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



KoYuKi
в скрипте OnPlayerDeath добавь:
Neverwinter Script Source
//----
object oPC = GetLastPlayerDied();
// все тэги тут писать ЗАГЛАВНЫМИ буквами (чтоб избежать путаницы)
string sResWPtag = "тэг вэйпоинта для реса по умолчанию";
string sArea = GetStringUpperCase(GetTag(GetArea(oPC)));
if (FindSubString("тут через пробелы тэги лок вокруг А", sArea) != -1)
  sResWPtag = "тэг вэйпа в храме A";
else if (FindSubString("тут через пробелы тэги лок вокруг B", sArea) != -1)
  sResWPtag = "тэг вэйпа в храме B";
ActionJumpToLocation(GetLocation(GetObjectByTag(sResWPtag)));
//-----


edit: ой, ой. облажался :oops: - OnPlayerDeath идет на модуле ж... не OBJECT_SELF, а GetLastPlayerDied(). thx 2 AliceDiren ;)

Сообщение отредактировал dumbo - Nov 10 2005, 21:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
AliceDiren
сообщение Nov 10 2005, 21:00
Сообщение #1720


Level 7
**

Класс: Маг
Характер: True Neutral
Раса: Эльф
NWN: Скриптинг [Sn]



KoYuKi, самый простой вариант - проверять таг локи, в которой умер персонаж.
В скрипте на OnPCDeath
Neverwinter Script Source
//...
object oPC = GetLastPlayerDied;
string sAreaTag = GetTag(GetArea(oPC));
if(sAreaTag = "area001" ||
    sAreaTag = "area002" ||
    sAreaTag = "area003" ||
    sAreaTag = "area004" ||
    sAreaTag = "area005" ||
    sAreaTag = "area006") {/*Перемещаем в город A*/}
if(sAreaTag = "area011" ||
    sAreaTag = "area012" ||
    sAreaTag = "area013" ||
    sAreaTag = "area014" ||
    sAreaTag = "area015" ||
    sAreaTag = "area016") {/*Перемещаем в город B*/}
//...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 67 68 69 70 71 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 16th July 2025 - 04:37