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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 89 90 91 92 93 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Nashman
сообщение May 14 2006, 01:20
Сообщение #2236


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



if (conditions)
return;
//Можно написать else (IMG:style_emoticons/kolobok_light/smile.gif)
{

Скобки - типа для "else"! code >1 line code
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение May 14 2006, 01:48
Сообщение #2237


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

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



Первое.
Nashman, учи мат часть. Тем более сейчас, когда она на русском доступна!

else можно и не писать, но и скобки смысловой нагрузки не несут. Их можно использовать, чтобы блоки кода формировать, чисто визуально разбераться легче. Но в четырех строчках ты не запутаешься.

И ВТОРОЕ
Вот это что такое?!

NSS
void main()
{
  object oPC=GetFirstPC();
  object oTrg=OBJECT_SELF;
  object oNPC=GetNearestObjectByTag("НЕПИСЬ"): //вот это!!!!

Скрипт ведь не компилится!!!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 14 2006, 01:52
Сообщение #2238


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

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



QUOTE(-fenix- @ May 14 2006, 02:48) [snapback]81709[/snapback]
Скрипт ведь не компилится!!!

QUOTE(Nashman @ May 14 2006, 00:57) [snapback]81693[/snapback]
ПС: В версии для форума упрощен(IMG:style_emoticons/kolobok_light/smile.gif)


object oTrg=OBJECT_SELF; - лишнее
ActionDoCommand(AssignCommand(oNPC, ActionStartConversation(oPC))); - тут ActionDoCommand лишнее.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение May 14 2006, 02:17
Сообщение #2239


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

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



Но ведь не смотря на все это скрипт работает. Единственное, из-за чего приведеный скрипт может не работать, это двоеточие.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение May 14 2006, 10:11
Сообщение #2240


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



QUOTE
else можно и не писать, но и скобки смысловой нагрузки не несут. Их можно использовать, чтобы блоки кода формировать, чисто визуально разбераться легче. Но в четырех строчках ты не запутаешься.
Это на форуме 4 скобки, а так больше(пойди туда, сделай то...).
QUOTE
object oTrg=OBJECT_SELF; - лишнее
мне так удобнее, потом, сли код большой, а надо скрипт на кого-то другого, то исправить не так уж много прийдется.
QUOTE
ActionDoCommand(AssignCommand(oNPC, ActionStartConversation(oPC))); - тут ActionDoCommand лишнее.
плохая прывычка (IMG:style_emoticons/kolobok_light/sad.gif) .
Все выше учту в будущем (IMG:style_emoticons/kolobok_light/wink3.gif)
QUOTE
Но ведь не смотря на все это скрипт работает. Единственное, из-за чего приведеный скрипт может не работать, это двоеточие.
оСПРАВИЛ - работает, но почему компилятор не выдавал ошибку?

Сообщение отредактировал Nashman - May 14 2006, 10:12
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 14 2006, 10:11
Сообщение #2241


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

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



QUOTE(Lex @ May 14 2006, 04:52) [snapback]81710[/snapback]

object oTrg=OBJECT_SELF; - лишнее

Пять юаней. Во многих сложных системах или при использовании актионов и прочих функций OBJECT_SELF может не работать корректно. Это даже в комментах лексекона есть. Рекомендую использовать только в простых не сложных скриптах иначе будете искать причину того что действие не сработало очень долго... Биовар в скриптах ХоТУ почти везеде юзает object oSelf = OBJECT_SELF;
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 14 2006, 10:21
Сообщение #2242


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

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



QUOTE
оСПРАВИЛ - работает, но почему компилятор не выдавал ошибку?

Компилятор ошибку видит, скорее всего, ты просто забыл скомпилировать скрипт. (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение May 14 2006, 10:23
Сообщение #2243


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



хз я F7 жал, это ж компилятор?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 14 2006, 10:29
Сообщение #2244


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

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



Да это, но я повторюсь ошибку компилятор ВИДИТ, ради интиреса попробуй скомпилировать тот скрипт еще раз.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение May 14 2006, 11:13
Сообщение #2245


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

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



QUOTE(Aiwan @ May 14 2006, 11:11) [snapback]81718[/snapback]
Пять юаней. Во многих сложных системах или при использовании актионов и прочих функций OBJECT_SELF может не работать корректно. Это даже в комментах лексекона есть. Рекомендую использовать только в простых не сложных скриптах иначе будете искать причину того что действие не сработало очень долго... Биовар в скриптах ХоТУ почти везеде юзает object oSelf = OBJECT_SELF;

я с этим не спорю, но в написанном выше скрипте
- триггер только для локалки
- все равно написано там OBJECT_SELF
так что в том конкретном скрипте лишнее. Что я и написал.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение May 14 2006, 15:17
Сообщение #2246


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

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



Леш, неужели ты решил что я твой код правлю? (IMG:style_emoticons/kolobok_light/crazy.gif) Я еще с ума не сошел. Дружище, просто пять юаней это пять юаней! (IMG:style_emoticons/kolobok_light/pardon.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение May 14 2006, 19:37
Сообщение #2247


Level 8
***

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



Посоветуйте, пожалуйста, как сделать так, чтобы в стек действий попало условие. Именно чтобы строка "if ...." выполнилась ПОСЛЕ окончания действия ActionMoveToObject()/
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 14 2006, 19:48
Сообщение #2248


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

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



Можно попробовать так,

NSS
void ActionTemp()
{
  if(
// Нужная проверка и т.д...
   {
//    <...>
   }
}

void main()
{
//    <...>
      ActionDoCommand(ActionTemp());
//    <...>
}


Сообщение отредактировал Dik Morris - May 14 2006, 19:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DarkDeivel
сообщение May 15 2006, 14:56
Сообщение #2249


Level 3
*

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



Скажите а можно изменить расу. Вот я хочу поменять полуорков на Ракшисов. Как это сделать? И если это скрипт тонапишите пожалуйста. (IMG:style_emoticons/kolobok_light/nea.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 15 2006, 16:04
Сообщение #2250


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

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



DarkDeivel

Тебе сюда: http://www.wrg.ru/forums/index.php?showforum=16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение May 16 2006, 01:09
Сообщение #2251


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



Привет,
пытался уже многими способами сделать но не получилось, помогите!
Ситуация:
- Появляется ПС, на тригере, далее включается КаСцена и начинается разговор с НПС, после того как ПС проговорит определенные фразы, то в зависимости от выбраного диалога ПС и НПС должны пойти в куда-то. При выборе первого варианта в точку А, при выборе второго в точку Б.

ПС: Два дня и 0, жуть! Быть может кто-то поможет..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение May 16 2006, 03:42
Сообщение #2252


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



QUOTE(Nashman @ May 16 2006, 06:09) [snapback]81934[/snapback]
Появляется ПС, на тригере, далее включается КаСцена и начинается разговор с НПС
под точкой появления ПС рисуем триггер, на его onEnter вешаем скрипт
NSS
object oPC = GetEnteringObject();
    object oNPC = GetObjectByTag("TAGNPC");

    if (!GetIsPC(oPC)) return;

    SetCutsceneMode(oPC);
    if (GetPlotFlag(oPC)) SetPlotFlag(oPC, FALSE); // на всякий случай, чтобы ПС не становился в режим бога
    AssignCommand(oPC, ActionStartConversation(oNPC, "dialog"));

QUOTE(Nashman @ May 16 2006, 06:09) [snapback]81934[/snapback]
При выборе первого варианта в точку А, при выборе второго в точку Б.
На варианте выбора
NSS
object oPoint = GetObjectByTag("POINT_A"); // тоже и с поинтом Б
    object oNPC = OBJECT_SELF;
    object oPC  = GetLastSpeaker();

    AssignCommand(oNPC, ActionMoveToObject(oPoint));
    ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectSlow(), oPC);   // просто, чтобы не бегал
    DelayCommand(2.0f, AssignCommand(oPC , ActionMoveToObject(oPoint)));

Если все равно не работает проверяй теги

Сообщение отредактировал StalkerDtN - May 16 2006, 04:10
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение May 16 2006, 11:09
Сообщение #2253


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



А идет сама проверка какую фразу ПС сказал, а то я что-то не вижу...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 16 2006, 11:25
Сообщение #2254


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

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



Nashman

Тогда ставь локальные переменные на игрока, потом проверяй в скрипте.

NSS
// Set oObject's local integer variable sVarName to nValue
void SetLocalInt(object oObject, string sVarName, int nValue)


NSS
// Get oObject's local integer variable sVarName
// * Return value on error: 0
int GetLocalInt(object oObject, string sVarName)

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение May 16 2006, 11:33
Сообщение #2255


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



Я делал так:
на определенной строке диалога я ставил переменную, но потом не знаю как ее использовать в катсцене, тоесть у меня может быть два варианта а как тогда мне определить конец диалога?
IsInConversation(object OObject) что она должна вернуть если диалог закончен?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение May 16 2006, 11:42
Сообщение #2256


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

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



QUOTE(Nashman @ May 16 2006, 14:33) [snapback]81952[/snapback]

тоесть у меня может быть два варианта а как тогда мне определить конец диалога?


А какие проблемы то... ?
Юзай слот ActionTakens и будет тебе счастье... (IMG:style_emoticons/kolobok_light/smile.gif)

PS:

QUOTE
IsInConversation
This function returns TRUE or FALSE based on the conversation state of the target. Use this function to conditionally execute behavior based on the target's conversation status.


Сообщение отредактировал Dik Morris - May 16 2006, 11:49
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение May 16 2006, 12:20
Сообщение #2257


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



QUOTE(Nashman @ May 16 2006, 16:09) [snapback]81948[/snapback]

А идет сама проверка какую фразу ПС сказал, а то я что-то не вижу...

Хех, Nashman, берешь, просто, на обе ветки диалога ставишь по скрипту. В первом скрипте будет
NSS
object oPoint = GetObjectByTag("POINT_A");

в другом
NSS
object oPoint = GetObjectByTag("POINT_B");
и будет все работать (IMG:style_emoticons/kolobok_light/smile.gif)

PS: хотя интереснее как предложил Dik Morris
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение May 16 2006, 14:30
Сообщение #2258


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

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



QUOTE(Nashman @ May 16 2006, 12:33) [snapback]81952[/snapback]

Я делал так:
на определенной строке диалога я ставил переменную, но потом не знаю как ее использовать в катсцене, тоесть у меня может быть два варианта а как тогда мне определить конец диалога?
IsInConversation(object OObject) что она должна вернуть если диалог закончен?

В настройках любого диалога можно установить 2 скрипта: на нормальное завершение диалога и на прерывание (нажатие Esc). Если нужно поставить переменные в каждой ветке - сделай там соответствующие скрипты. А на скрипт завершения диалога можно вешать всё остальное...

Сообщение отредактировал virusman - May 16 2006, 14:34
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение May 16 2006, 14:37
Сообщение #2259


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

Класс: Обыватель
Характер: Lawful Good
Раса: Человек
NWN: Модмейкер
Рыцарская Сага



Nashman, все очень просто. Для начала запустим кат сценку:
NSS
void main()
{
object oNPC = GetObjectByTag("PERS");
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;
AssignCommand(oPC, ClearAllActions());
AssignCommand(oNPC, ClearAllActions());
SetCutsceneMode(oPC, TRUE);
DelayCommand(0.1,AssignCommand(oPC, SetCameraFacing(330.0, 15.0, 50.0, CAMERA_TRANSITION_TYPE_MEDIUM)));
DelayCommand(1.0,AssignCommand(oNPC,ActionForceMoveToObject(oPC, FALSE)));
DelayCommand(7.0, AssignCommand(oNPC, ActionStartConversation(oPC)));
}


Запустили диалог перса. Идем дальше, есть один нюанс: убери все скрипты, в панели редактора диалога, на вкладке «Текущий Файл», и включи галку «Прекращение увеличения», для того, чтобы не мотало камеру. Затем присвой переменные на ветки диалога. У тебя в модуле должны уже быть такие на определение последовательности диалога. Ели нет, то сделай.
Пример:
NSS
SetLocalInt(GetPCSpeaker(),"D1_"+GetTag(OBJECT_SELF), 1);
SetLocalInt(GetPCSpeaker(),"D2_"+GetTag(OBJECT_SELF), 1);

Дальше работает один скрипт на обе ветви диалога. В зависимости от выбранной ветви в диалоге, персы идут к нужной точке.
NSS
void main()
{
object oPoint1 = GetObjectByTag("POINT_A");
object oPoint2 = GetObjectByTag("POINT_B");
object oNPC = OBJECT_SELF;
object oPC = GetPCSpeaker();
object oByTag = GetObjectByTag("Nashman_TRIGER");

AssignCommand(oPC, ClearAllActions());
AssignCommand(oNPC, ClearAllActions());
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectSlow(), oPC, 10.0); // просто, чтобы не бегал

if(GetLocalInt(GetPCSpeaker(), "D1_"+GetTag(OBJECT_SELF)) == 1)
{
AssignCommand(oNPC, ActionMoveToObject(oPoint1));
AssignCommand(oPC, ActionMoveToObject(oPoint1));
}
if(GetLocalInt(GetPCSpeaker(), "D2_"+GetTag(OBJECT_SELF)) == 1)
{
AssignCommand(oNPC, ActionMoveToObject(oPoint2));
AssignCommand(oPC, ActionMoveToObject(oPoint2));
}
DestroyObject(oByTag); // удалим триггер
DelayCommand(10.0, SetCutsceneMode(oPC, FALSE));
}


Сообщение отредактировал gennady - May 16 2006, 14:40
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение May 16 2006, 17:06
Сообщение #2260


Level 8
***

Класс: Тайный Лучник
Характер: Lawful Good
Раса: Эльф



gennady , спасибо это то, что нужно было, только вопрос:
Как убрать имунитет к замедлению? Если он есть
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 89 90 91 92 93 > » 
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



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