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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 62 63 64 65 66 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Lemegeton
сообщение Oct 9 2005, 01:18
Сообщение #1566


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

Класс: Монах
Характер: Lawful Good
Раса: Человек
NWN: Контент



QUOTE (Белатрис @ Oct 9 2005, 00:04)
1. Как составить скрипт, что бы человек сидел на троне.

Используй ф-цию
CODE
ActionSit(object oChair)

Например:
CODE
ActionMoveToObject(oChair);
SpeakString("Here's my seat!");
ActionSit(oChair);

Чел сядет на стул, заданый объектом oChair.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Вишес
сообщение Oct 9 2005, 01:32
Сообщение #1567


Level 13
****

Класс: Ниндзя
Характер: Chaotic Evil
Раса: Танар'ри



NedWarN
зачем так сложно?
а вообще спасибо.
я впаял в середину своего скрипта
SurrenderToEnemies();

и еще немного изменил - и все заработало.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Oct 9 2005, 04:17
Сообщение #1568


Level 11
***

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



Lemegeton, спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Oct 9 2005, 07:07
Сообщение #1569


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Ладно, скрипт с globe1 заработал. А как же все-таки заставить NPC бормотать линии с интервалами секунд по 10? Желательно закольцевать это дело, чтобы по кругу гундели. Тут вот еще что:

CODE
void main()
{

object oPC = GetEnteringObject();

if (!GetIsPC(oPC)) return;

if (GetLocalInt(oPC, "marco")>= 6)
  {
  if (GetLocalInt(oPC, "statuestatus")== 0)
     {

     oTarget = GetObjectByTag("statue");

//Visual effects can't be applied to waypoints, so if it is a WP
//apply to the WP's location instead

     nInt = GetObjectType(oTarget);

     if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
     else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));

     DestroyObject(oTarget, 3.0);

     oTarget = GetWaypointByTag("statuetag");

     lTarget = GetLocation(oTarget);

     oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_statue2", lTarget);

     SetLocalInt(oPC, "statuestatus", 1);

     }
  }
else
  {
  SetLocalInt(oPC, "statuestatus", 1);

  }

}


Идея в том, чтобы при входе в зону проверялись две переменные, statue и marco, и если одна из них 0, а другая 6, то удалялся бы placeable, экран сотрясался и на его месте являлся другой объект, а переменная statue делалась бы 1 (чтобы не гонять скрипт снова и снова).

Пишет VARIABLE DEFINED WITHOUT TYPE на 20-й линии. Ошибка-то простая, но, видно, логика не моя стезя, никак не соображу, что добавить. Ненавижу скрипты. Я пока полез на позорный столб, а вы помогите, а? Гнилые помидоры вон в том ящике. :rolleyes:

Сообщение отредактировал Chimeric - Oct 9 2005, 07:21
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lemegeton
сообщение Oct 9 2005, 07:37
Сообщение #1570


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

Класс: Монах
Характер: Lawful Good
Раса: Человек
NWN: Контент



Neverwinter Script Source
//Visual effects can't be applied to waypoints, so if it is a WP
//apply to the WP's location instead

     // nInt = GetObjectType(oTarget);
     int nInt = GetObjectType(oTarget); // <---- проблема тут.  Обязательно указывать тип переменной.

     if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);


Хы... И так везде... Попробуй так:
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
if (!GetIsPC(oPC)) return;

if (GetLocalInt(oPC, "marco")>= 6) {
  if (GetLocalInt(oPC, "statuestatus")== 0) {
     object oTarget = GetObjectByTag("statue");
     int nInt = GetObjectType(oTarget);
     ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));  // Это наверняка на локацию.
     DestroyObject(oTarget, 3.0);
     oTarget = GetWaypointByTag("statuetag");
     location lTarget = GetLocation(oTarget);
     object oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, "plc_statue2", lTarget);
     SetLocalInt(oPC, "statuestatus", 1);
   }
} else {
  SetLocalInt(oPC, "statuestatus", 1); // Это-то зачем? Получается, если не попадает в первое условие, предыдущие операторы никогда больше не сработают?
}

Уточни задачу. Решение явно не оптимальное. Если у тебя там уже есть оъект, ни к чему делать WayPoint...

Сообщение отредактировал Lemegeton - Oct 9 2005, 07:54
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Oct 9 2005, 10:01
Сообщение #1571


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Вообще-то верно, statuestatus лишний. Про локацию верно, только там уже статуя торчит. Скрипт должен ее заменить на другую. Я воткнул Waypoint поверх нее. Как это все будет выглядеть иначе? %) Я понимаю, кончно, что уж кучу вопросов про скрипты вывалил, но тороплюсь успеть к конкурсному сроку...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NedWarN
сообщение Oct 9 2005, 15:34
Сообщение #1572


Level 5
**

Класс: Маг
Характер: Lawful Good
Раса: Тварь



Челы, скриптёры, помогите. Я в шоке, написал скриптик а он не пашет, кто разяснит в чём проблема.
наОнХарб предметика.
Neverwinter Script Source
void main()
{
if(GetIsDay() && GetIsDawn() == TRUE)
{
PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
if(GetIsNight() && GetIsDusk() == TRUE)
{
object oSelf =GetObjectByTag("YYY_OIO_POIUN_1");
PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf);
}
}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Oct 9 2005, 17:09
Сообщение #1573


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

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



QUOTE (NedWarN @ Oct 9 2005, 16:34)
елы, скриптёры, помогите. Я в шоке, написал скриптик а он не пашет, кто разяснит в чём проблема. наОнХарб предметика.


Neverwinter Script Source
void main()
{
//Тут нужен не "&&" - как такое можеь быть? Нужно использовать "||" !!
if(GetIsDay() && GetIsDawn() == TRUE)
{// тут *
PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);


//Тут нужен не "&&" - как такое можеь быть? Нужно использовать "||" !!
if(GetIsNight() && GetIsDusk() == TRUE)
{
object oSelf =GetObjectByTag("YYY_OIO_POIUN_1");
PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf);
}
}// и тут *
}

*-Получается, что ночь и вечер будет проверяться, только если сейчас утро или день!

Надо так

Neverwinter Script Source
void main()
{

if(GetIsDay() || GetIsDawn())
{
    PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
}

if(GetIsNight() || GetIsDusk())
{
    object oSelf =GetObjectByTag("YYY_OIO_POIUN_1");

    PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
    effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_YELLOW_10);

    ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf);
}
}


Если это работа с освещением, то нужно еще использовать функции
Neverwinter Script Source
SetPlaceableIllumination (OBJECT_SELF, FALSE);
RecomputeStaticLighting (GetArea(OBJECT_SELF));


Сообщение отредактировал -fenix- - Oct 9 2005, 17:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Oct 9 2005, 19:39
Сообщение #1574


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

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



QUOTE (Белатрис @ Oct 9 2005, 03:04)
Времени нет листать 63 страницы, так что не сердитесь если мои вопросы будут похоже на те что уже были заданы.

Тут есть ПОИСК.
QUOTE (Белатрис @ Oct 9 2005, 07:17)
Lemegeton, спасибо.

А за такой "содержательный" пост, тут можно получить пред. :D Это тебе на будущее...
А вообще, тут рады новичкам. Но они должны соблюдать правила.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Oct 9 2005, 20:33
Сообщение #1575


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

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



кто-нибудь знает как реализовать невидимость кричи без потери визуальных эффектов? :D
т.е. луч идет до кричи =) и она должна бегать по локации.. вместе с лучём :swoon:
VFX_DUR_CUTSCENE_INVISIBILITY, хайд, 0-й вид частей тела не катит :vava:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Oct 9 2005, 22:26
Сообщение #1576


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Как же все-таки заставить NPC бормотать фразы-линии?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Oct 9 2005, 23:41
Сообщение #1577


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

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



Задержки ставь свои.
Neverwinter Script Source
object oUbo = GetObjectByTag("AM_CUT2_UBO");
    object oHalib = GetObjectByTag("AM_CUT2_HAL");

    DelayCommand(17.0, AssignCommand(oHal, SpeakString("Фраза #1.")));
    DelayCommand(18.5, AssignCommand(oUbo, SpeakString("Фраза #2.")));
    DelayCommand(20.0, AssignCommand(oHal, SpeakString("Фраза #3")));
    DelayCommand(22.0, AssignCommand(oHal, SpeakString("Фраза #4.")));
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Oct 10 2005, 00:22
Сообщение #1578


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Кстати, вот еще вопрос: как запретить Respawn в сингле? Наверняка в архивах уже есть ответ, но местная функция поиска, мягко говоря, оставляет желать лучшего. Просматривать две нитки по 60 страниц каждая - извините... Тем более, что Мастерам скриптов мне подсказать ничего не стоит. Итак: как сделать так, чтобы при смерти персонажа не появлялось обычной панели с кнопками? Или пусть появляется, но без опции "Respawn", если это возможно. Хочу дать понять игроку, что чем нарываться на неприятности и врагов в расчете на воскрешение, лучше сохраняться почаще и разумно оценивать свои возможности.

Если нельзя изменить интерфейс, то идеально было бы запустить ролик с титрами и выйти в главное меню.

P.S. Спасибо, Айван. Эти реплики будут крутиться до бесконечности? И куда ставить скрипт - в OnPerception?

Сообщение отредактировал Chimeric - Oct 10 2005, 00:26
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Вишес
сообщение Oct 10 2005, 01:41
Сообщение #1579


Level 13
****

Класс: Ниндзя
Характер: Chaotic Evil
Раса: Танар'ри



Chimeric

QUOTE
как запретить Respawn в сингле?


Очень просто.
В событиях модуля убери скрипты из строчек
onPlayerDeath
onPlayerdying
OnPlayerRespawn

И герой будет валяться мертвый до второго пришествия или пока не подойдет кто-то и оживит. (это кстати неплохая фишка - хенчмен оживляет игрока.)

Хотя если тебе надо, чтобы появлялась табличка, предлагаюющая выйти или загрузить сэйв - все будет выглядеть несколько хитрее.

Добавлено в 01:45
У меня тут возникла интересная идея. Хочу сделать фит, позволяющий метать сразу несколько ножей или сюрикенов в одного противника за одну атаку. Честно говоря, даже представить не могу, как будет выглядеть скрипт для этого фита. Может, кто-нибудь другой может?

Сообщение отредактировал Вишес - Oct 10 2005, 01:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Oct 10 2005, 02:59
Сообщение #1580


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



Проблема:


CODE
void main()
{

object oPC = GetLastUsedBy();

object oTarget = GetObjectByTag("hallwaysecretrope");

if (!GetIsPC(oPC)) return;

if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13)
  {

     oTarget = GetWaypointByTag("shrine");

  lTarget = GetLocation(oTarget);

  if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;

  oTarget=GetFirstFactionMember(oPC, FALSE);

  while (GetIsObjectValid(oTarget))
     {
     AssignCommand(oTarget, ClearAllActions());

     AssignCommand(oTarget, ActionJumpToLocation(lTarget));
     oTarget=GetNextFactionMember(oPC, FALSE);
     }

  }
else
  {
  eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);

  ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);

  oTarget = oPC;

  nInt = GetObjectType(oTarget);

  if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
  else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));

  eEffect = EffectDazed();

  ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f);

  AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM));
  AssignCommand(OBJECT_SELF, ActionWait(2.0));
  AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));

  DelayCommand(3.0, FloatingTextStringOnCreature("Ëåãêàÿ ÷åðåïíî-ìîçãîâàÿ òðàâìà (èëè åå ìûñëåííûé ýêâèâàëåíò)", oPC));

  }

}



Падаем и ударяемся, но только - VARIABLE DEFINED WITHOUT TYPE. Те же грабли, черт! Никак я не догоню. Подсобите, люди. И еще вот странное дело: если я в линии c DelayCommand заменю текст на другой - на одно слово из моего собственного другого скрипта, то компилятор не жалуется, а с этой фразой почему-то выдает UNKNOWN STATE IN COMPILER. Не в длине же дело, всего-то одно предложение. :this:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
AliceDiren
сообщение Oct 10 2005, 07:26
Сообщение #1581


Level 7
**

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



Neverwinter Script Source
void main()
{
object oPC = GetLastUsedBy();
object oTarget = GetObjectByTag("hallwaysecretrope");
if (!GetIsPC(oPC)) return;
if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13)
{
  oTarget = GetWaypointByTag("shrine");
  location lTarget = GetLocation(oTarget); //!!! location
  if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
  oTarget=GetFirstFactionMember(oPC, FALSE);
  while (GetIsObjectValid(oTarget))
  {
    AssignCommand(oTarget, ClearAllActions());
    AssignCommand(oTarget, ActionJumpToLocation(lTarget));
    oTarget=GetNextFactionMember(oPC, FALSE);
  }}
else
  {
  effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);
  //!!! effect
  ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);
  oTarget = oPC;
  int nInt = GetObjectType(oTarget);//!!! int
  if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
  else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));
  eEffect = EffectDazed();
  ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f);
  AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM));
  AssignCommand(OBJECT_SELF, ActionWait(2.0));
  AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
  DelayCommand(3.0, FloatingTextStringOnCreature("...", oPC));
  }
}

ИМХО так.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Oct 10 2005, 12:31
Сообщение #1582


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

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



Chimeric
QUOTE (Chimeric @ Oct 9 2005, 23:26)
Как же все-таки заставить NPC бормотать фразы-линии?

http://www.wrg.ru/forums/index.php?showtop...875&#entry52274
чтоб не "бормотал", когда в локе нет игрока, поставить первой строкой в скрипте
Neverwinter Script Source
if (GetAILevel() == AI_LEVEL_VERY_LOW) return;
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
NedWarN
сообщение Oct 10 2005, 16:16
Сообщение #1583


Level 5
**

Класс: Маг
Характер: Lawful Good
Раса: Тварь



-fenix-
Не кричи ты, знаю я прикрасно как с if обращатся, я тока напутал ибо пиво. сорри. :D
а вообще пасиба. :yes:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Oct 10 2005, 16:31
Сообщение #1584


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

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



dumbo, а что АI скидывается до минимума еслим РС нет в локе?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Oct 10 2005, 17:04
Сообщение #1585


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

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



Aiwan, насколько я помню(довольно давно и нетщательно тестировал это дело), именно так и есть. тонкостей регулирования движком уровня AI, правда, не расскажу... при установке "руками" уровня, движок перестает контроллировать его до тех пор, пока не поставишь обратно на AI_LEVEL_DEFAULT.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lemegeton
сообщение Oct 10 2005, 17:59
Сообщение #1586


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

Класс: Монах
Характер: Lawful Good
Раса: Человек
NWN: Контент



QUOTE (Chimeric @ Oct 10 2005, 02:59)
Падаем и ударяемся, но только - VARIABLE DEFINED WITHOUT TYPE. Те же грабли, черт! Никак я не догоню. Подсобите, люди.

Все дело в том, что при первом упоминании переменной в скрипте нужно указывать ее тип.
Neverwinter Script Source
void main() {
object oPC = GetFirstPC();
// Обрати внимание на слово object. Здесь указывается, что переменная oPC
// содержит в себе объект (в данном случае, непосредственно первый игрок).
location lPC = getLocation(oPC);
// Обрати внимание на слово location. Здесь указывается, что переменная lPC
// содержит в себе координаты (в данном случае - первого игрока).

// В дальнейшем (в той же ф-ции!!!), указывать тип переменной не нужно.
oPC = GetPCSpeaker(); // Не нужно указывать, т.к. тип переменной указан выше.
...
}

Для избежания подобных ошибок, можно объявить все переменные ДО их использования. Следующий код полностью идентичен предыдущему:
Neverwinter Script Source
void main() {
// Сначала можно заняться объявлением переменных,
object oPC; 
location lPC;

// а уж потом работой с ними (с их значениями):
oPC = GetFirstPC();
lPC = GetLocation (oPC)
oPC = GetPCSpeaker();

...
}


Обрати внимание, что тип переменных должен задаваться один и только один раз в области действия переменной (внутри функции, в основном).

Все то же самое касается и других типов переменных. Таких как string, int, vector...
QUOTE (Chimeric @ Oct 10 2005, 02:59)
И еще вот странное дело: если я в линии c DelayCommand заменю текст на другой - на одно слово из моего собственного другого скрипта, то компилятор не жалуется, а с этой фразой почему-то выдает UNKNOWN STATE IN COMPILER. Не в длине же дело, всего-то одно предложение.  :this:
Только текст внутри двойных кавычек, или вообще всю строку? (Если можно, приведи текст).

Сообщение отредактировал Lemegeton - Oct 10 2005, 18:14
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Chimeric
сообщение Oct 10 2005, 21:51
Сообщение #1587


Пушкин
Иконки Групп

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Гигант
NWN: Тексты



1) Плюсую Лемегетона и Алису. Заработало вроде бы. Но только та же странность со словами продолжается: вот код.

CODE
void main()
{
object oPC = GetLastUsedBy();
object oTarget = GetObjectByTag("hallwaysecretrope");
if (!GetIsPC(oPC)) return;
if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13)
{
 oTarget = GetWaypointByTag("shrine");
 location lTarget = GetLocation(oTarget);
 if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
 oTarget=GetFirstFactionMember(oPC, FALSE);
 while (GetIsObjectValid(oTarget))
 {
   AssignCommand(oTarget, ClearAllActions());
   AssignCommand(oTarget, ActionJumpToLocation(lTarget));
   oTarget=GetNextFactionMember(oPC, FALSE);
 }}
else
 {
 effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);
 ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);
 oTarget = oPC;
 int nInt = GetObjectType(oTarget);
 if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
 else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));
 eEffect = EffectDazed();
 ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f);
 AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM));
 AssignCommand(OBJECT_SELF, ActionWait(2.0));
 AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
 DelayCommand(3.0, FloatingTextStringOnCreature("1", oPC));
 }
}


Код работает, спасибо Алисе, и исправно выдает над головой число 1, которое я поставил просто так, для пробы. Но вот тот же самый код с другой фразой:

CODE
void main()
{
object oPC = GetLastUsedBy();
object oTarget = GetObjectByTag("hallwaysecretrope");
if (!GetIsPC(oPC)) return;
if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13)
{
 oTarget = GetWaypointByTag("shrine");
 location lTarget = GetLocation(oTarget);
 if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
 oTarget=GetFirstFactionMember(oPC, FALSE);
 while (GetIsObjectValid(oTarget))
 {
   AssignCommand(oTarget, ClearAllActions());
   AssignCommand(oTarget, ActionJumpToLocation(lTarget));
   oTarget=GetNextFactionMember(oPC, FALSE);
 }}
else
 {
 effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);
 ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);
 oTarget = oPC;
 int nInt = GetObjectType(oTarget);
 if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
 else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));
 eEffect = EffectDazed();
 ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f);
 AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM));
 AssignCommand(OBJECT_SELF, ActionWait(2.0));
 AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
 DelayCommand(3.0, FloatingTextStringOnCreature("void main()
{
object oPC = GetLastUsedBy();
object oTarget = GetObjectByTag("hallwaysecretrope");
if (!GetIsPC(oPC)) return;
if (GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 13)
{
 oTarget = GetWaypointByTag("shrine");
 location lTarget = GetLocation(oTarget);
 if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
 oTarget=GetFirstFactionMember(oPC, FALSE);
 while (GetIsObjectValid(oTarget))
 {
   AssignCommand(oTarget, ClearAllActions());
   AssignCommand(oTarget, ActionJumpToLocation(lTarget));
   oTarget=GetNextFactionMember(oPC, FALSE);
 }}
else
 {
 effect eEffect = EffectDamage(3, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);
 ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC);
 oTarget = oPC;
 int nInt = GetObjectType(oTarget);
 if (nInt != OBJECT_TYPE_WAYPOINT) ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), oTarget);
 else ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oTarget));
 eEffect = EffectDazed();
 ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 30.0f);
 AssignCommand(OBJECT_SELF, FadeToBlack(oPC, FADE_SPEED_MEDIUM));
 AssignCommand(OBJECT_SELF, ActionWait(2.0));
 AssignCommand(OBJECT_SELF, FadeFromBlack(oPC, FADE_SPEED_MEDIUM));
 DelayCommand(3.0, FloatingTextStringOnCreature("Ëåãêàÿ ÷åðåïíî-ìîçãîâàÿ òðàâìà (èëè åå ìûñëåííûé ýêâèâàëåíò)", oPC));
 }
}


Фраза про то, что вы, дескать, грохнулись и ушиблись. Ничего особенного. Однако не компилируется. :unsure:

2) Мне тут дали маленький скриптик, так вроде бы не хватает функции main, но и с ней почему-то не складывается:

CODE
void EndGame(
   string sEndMovie
);


3) Какой командой можно заставить персонажа застонать? Кхмм, то есть крякнуть от боли?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
AliceDiren
сообщение Oct 10 2005, 22:44
Сообщение #1588


Level 7
**

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



1.Chimeric, честно говоря я ничего не понимаю - попробовала самым простым способом, т.е. просто скопировала твой скрипт в тулсет и все работает :xz:

2.
Neverwinter Script Source
void EndGame(string sEndMovie);

Это не скрипт, это декларация функции. Скрипт вот:
Neverwinter Script Source
void main()
{
string sEndMovie = "Игра окончена";
EndGame(sEndMovie);
}


3. Первое что приходит в голову - это
Neverwinter Script Source
object oPC = GetFirstPC();
AssignCommand(oPC, PlaySound("..."));

Добавлено в [mergetime]1128973644[/mergetime]
Я просто не знаю названия этого звука :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tiger Greyhawk
сообщение Oct 11 2005, 01:39
Сообщение #1589



Иконки Групп

Класс: Обыватель
Характер: Chaotic Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE (Chimeric @ Oct 10 2005, 22:51)
Фраза про то, что вы, дескать, грохнулись и ушиблись. Ничего особенного. Однако не компилируется.

Там, наверное, есть какое-нибудь слово с буковой "я". Убери "я" или поставь патч dumbo.
Добавлено в [mergetime]1128984561[/mergetime]
З.Ы. Естественно, это не решение возможной проблемы по моему предположению, а проверка-подсказка нахождения проблемы. Решение (если действительно эта проблема) ищи в "Вопросы и Ответы" ;)

QUOTE
ОТВЕТ
Neverwinter Script Source
//================  Буква Я в стрингах (Автор Lex) ============================
string ya = GetName(GetWaypointByTag("YA")); // "+ya+" - так ее использовать
//================  Буква Я в стрингах (Автор Lex) ============================

DelayCommand(5.0, SpeakString("Да. Ключика у теб"+ya+" нет."));

Для работы этой схемы необходимо, чтобы в модуле был waypoint с tagом "YA" и именем "я"
--------------------------------------------------
в скриптах я делаю так:
- пишу сначала весь тест, какой должен быть в скрипте с буквами я.
- запускаю find and replace и меняю я на "+ya+"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Oct 11 2005, 06:31
Сообщение #1590


Level 11
***

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



Напишите скрипт плиз... что бы так - как только появляется игрок(ну в начале, я имею ввиду), появлялся диалог, как в "Орды Андердака"?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 62 63 64 65 66 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 2nd May 2025 - 18:43