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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 69 70 71 72 73 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
-fenix-
сообщение Nov 14 2005, 01:01
Сообщение #1741


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

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



QUOTE (Lex @ Nov 14 2005, 01:02)
хм.. по идее в слоте onAttack NPC смотрим.

Неа Лекс, не прет.
Ведь слот запускается не при клике на атаку. Ну, когда нажимаешь мирного атаковать. А в момент удара и вэтот же момент НПС становется враждебным и боевым. При чем это происходит раньше, чем проверка в слоте.
Вот это не пашет
Neverwinter Script Source
void main()
{
object oPC = GetLastAttacker();
int iPCvsNPC = GetReputation(OBJECT_SELF, oPC);

if(iPCvsNPC > 10)
{
SpeakString("FEfef");
}
}

А это пашет
Neverwinter Script Source
void main()
{
object oPC = GetLastAttacker();
int iPCvsNPC = GetReputation(OBJECT_SELF, oPC);

if(iPCvsNPC < 11)
{
SpeakString("FEfef");
}
}

Так, точно пора отдыхать :crazy:

QUOTE (Aiwan @ Nov 14 2005, 00:40)
Ну НПС редко сам нападает

Угу. Видимо прейдется учитывать экстренные моменты, когда НПС сам начинает бой, при смерти НПС. Например, атака не там заснувшего ПС.

QUOTE (Lex)
Cдается место. Дорого.

За сколько :oops:

Сообщение отредактировал -fenix- - Nov 14 2005, 01:02
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Nov 14 2005, 02:31
Сообщение #1742


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

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



QUOTE
-----------------------------------
|                                |
|  Тут могла быть ваша реклама    |
|                                |
-----------------------------------
покупайте наших слонов, наши слоны самые слоничтые слоны в мире 8(

Neverwinter Script Source
if(iPCvsNPC > 10)

не хостайловый
Neverwinter Script Source
if(iPCvsNPC < 11)

хостайловый...

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 14 2005, 04:26
Сообщение #1743


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

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



QUOTE (2_advanced @ Nov 14 2005, 03:31)
не хостайловый

QUOTE (2_advanced @ Nov 14 2005, 03:31)
хостайловый...

Эм, не понял, что есть хостайловый :sorry:

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 04:47
Сообщение #1744


Level 8
***

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



Фракция Hostile (Хостайл) - "враждебный".
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Nov 14 2005, 05:43
Сообщение #1745


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

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



в смысле если ПС ударил НПС, то НПС становится враждебным :DB: при этом ставить на ПЦ флаг напавшего
а если моб первым начал, то это можно узнать, изменив функцию DetermineCombatRound (или что-то типа того..)
(проверку на нападение со стороны ПЦ - если флага нет, то моб начал 8( )
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 07:18
Сообщение #1746


Level 8
***

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



QUOTE (Kavin @ Nov 6 2005, 11:09)
Кроме того, я подумал сегодня и забраковал этот вариант по той причние, что если я сяду отдыхать прям у невидимого Вэйпойнта, то стража "появится из сумрака" прямо около меня. Некузяво. Ночной дозор, блин. 
Так что остается только случайное расположение Вэйпойнта. В принципе, сейчас найду функцию RandomLocation и разберусь.
О результатах отпишу. 


Отписываю о результатах.
Все ништяк.
Функция RandomLocation, как я и предполагал, работает даже без проверки верного местоположения.
Просто движок не позволяет объекту создаться за пределами карты или на недоступном месте.

Теперь стража появляется шагов за 10 от PC и подбегает к нему.
Предупреждает три раза, на четвертый раз - убивает нафиг.

Если игрок отбежал чуть дальше и снова сел - его догоняют два предыдущих стражника.
Если отбежал далеко и сел - те двое уничтожаются, и появляются два новых, снова в 10 шагах.

Lex, стоит лит этот скрипт в базу выложить?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Nov 14 2005, 08:08
Сообщение #1747


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

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



QUOTE (Kavin @ Nov 14 2005, 10:18)
Lex, стоит лит этот скрипт в базу выложить?..

Выложи тут мы посмотрим.

-fenix- вот я лично так и не понял зачем тебе узнавать кто напал первый. НПС сам не нападет, если РС не натворит дел. Соответсвенно, узнать кто первый дал по башке можно, но опять же, если НПС стоял и РС его тюкнул и не попал, то НПС не будет враждебным. (Помоему...) И эту тему уже разбирали где-то. Элементарное узнать кто начал невозможно. Можно конечно повесить на оружие евант, тюкнул по цели и записываем на нее имя, кто тюкнул и когда. Соответсвенно сверяем двух провенившихся и вычисляем кто виноват. Но это имхо не верно по соображениям морали. :this: Мы узнаем только КТО ПЕРВЫЙ УДАРИЛ. Но начать может тот кого спровоцировали. :agr:
Добавлено в [mergetime]1131945069[/mergetime]
QUOTE (Aiwan @ Nov 14 2005, 11:08)
Мы узнаем только КТО ПЕРВЫЙ УДАРИЛ. Но начать может тот кого спровоцировали.

Хотя... :) Как в жизни. Судят кто попал под раздачу. :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 14 2005, 11:21
Сообщение #1748


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

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



QUOTE (Aiwan @ Nov 14 2005, 09:08)
-fenix- вот я лично так и не понял зачем тебе узнавать кто напал первый.

Задумка такая, которая завязана на том, кто первым начал бой. Если ПС и НПС не был врагом и у ПС была одна вещь, то кой чего происходит :)

QUOTE (Aiwan @ Nov 14 2005, 09:08)
если НПС стоял и РС его тюкнул и не попал, то НПС не будет враждебным. (Помоему...)

Неа. Если ПС совершил удар, не важно попал или нет, то раунд уже начался. НПС становется враждебным и долбит ПС.

QUOTE (Aiwan @ Nov 14 2005, 09:08)
Элементарное узнать кто начал невозможно.

Ведат проглядел я тот разговор :(
Но уже и сам понял, что невозможно.
Прейдется просто другие игровые моменты учитывать.
QUOTE (Aiwan @ Nov 14 2005, 09:08)
Судят кто попал под раздачу.

Объясни потом игроку :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Белатрис
сообщение Nov 14 2005, 14:17
Сообщение #1749


Level 11
***

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



Напишите плиз скриптик где НПС нагибается к бассеину и полностью вылечивается(типо как в Принце Персии).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Nov 14 2005, 14:41
Сообщение #1750


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

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



Поставь скрипт на строчку в диалоге:
Neverwinter Script Source
void main()
{
object oNPC = GetObjectByTag("ТАГ НПС");
object oBass= GetObjectByTag("ТАГ БАССЕЙНА");
effect eHeal = EffectHeal(100);
ActionDoCommand(AssignCommand(oNPC, ClearAllActions()));//Почистим акции у НПС
ActionDoCommand(AssignCommand(oNPC, ActionMoveToObject(oBass,FALSE))); //Подойдем к бассейну
ActionDoCommand(AssignCommand(oNPC, ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0f,5.0f)));//"Копошится"
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,oNPC));//Вылечим НПС
}

ЗЫ: в Принца Персии, я не играл.
ЗЗЫ: сорри, просто скрипт я оч. быстро писал, торопился.
А вы уж, "запинали" :crazy:

Сообщение отредактировал Dik Morris - Nov 14 2005, 15:42
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 14:42
Сообщение #1751


Level 8
***

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



БЛИН! А самому подумать да в Лексиконе нужные функции поискать?..
Скажу, что знаю: такой анимации (нагибается), как в Принце Персии, в НВН нет.
Можно сделать на полу бассейн, и сложить два эффекта: сначала он типа из лужи воду набирает (копается на земле), потом пьет из бутылки.

Или из фонтанчика для птиц (есть такой плейсебл) набирает (анимация, когда игрок типа ключом дверь открывает...), а потом пьет.
Пить - ANIMATION_FIREFORGET_DRINK.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 14 2005, 14:52
Сообщение #1752


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

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



Dik Morris, только тут не
Neverwinter Script Source
effect eHeal = EffectHeal(100);

А
Neverwinter Script Source
effect eHeal = EffectHeal(GetMaxHitPoints(oPC));

или вообще
Neverwinter Script Source
effect eHeal = EffectHeal(GetMaxHitPoints(oPC) - GetCurrentHitPoints(oPC));

:)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 14 2005, 14:58
Сообщение #1753


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

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



QUOTE (Dik Morris @ Nov 14 2005, 14:41)
effect eHeal = EffectHeal(100);

QUOTE (Белатрис @ Nov 14 2005, 14:17)
полностью вылечивается

несоответствие.

QUOTE (Dik Morris @ Nov 14 2005, 14:41)
ActionDoCommand(AssignCommand(oPC,  ClearAllActions())); //Почистим акции у игрока

лишнее.
QUOTE (Dik Morris @ Nov 14 2005, 14:41)
ActionDoCommand(ApplyEffectToObject(DURATION_TYPE_INSTANT,eHeal,oNPC));//Вылечим НПС

не в тот стек загнал команду. НПС вылечится сразу.


зы: по пункту 1 уже сказал Феникс.
Добавлено в 15:01
ЗЫЫ: непонятна диалоговая привязка скрипта. И зачем так игрок.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ashram
сообщение Nov 14 2005, 15:50
Сообщение #1754


Level 1


Класс: Обыватель
Характер: Chaotic Good
Раса: Эльф



Lex
Спасибо. Оказывается просто не правильно выбрал писал объект для нападения GetLastUsedBy а не GetLastDamager и GetLastUnlocker :D

Сообщение отредактировал Ashram - Nov 14 2005, 16:13
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 20:05
Сообщение #1755


Level 8
***

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



ANIMATION_LOOPING_GET_MID - шевелить руками на уровне пояса.
ANIMATION_LOOPING_GET_LOW - копаться на полу.

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


Neverwinter Script Source
string MASTER_OBJECT_TAG="guard1";
   string COPY_1_TAG="patrol_guard1";
   string COPY_2_TAG="patrol_guard2";
   string WARNINGS_VARIABLE_NAME="area_warnings_count";
   string REST_TYPE_TRIGGER_TAG="RestTypeTrigger";

   float DISTANCE_TO_RUN=10.0;
   float DISTANCE_TO_SEE=20.0;

   object oPC = GetLastPCRested();
   object patrol_guard1=GetObjectByTag(COPY_1_TAG);
   object patrol_guard2=GetObjectByTag(COPY_2_TAG);


         SetLocalString(GetArea(oPC), "guard1_tag", COPY_1_TAG);
                SetLocalString(GetArea(oPC), "guard2_tag", COPY_2_TAG);

                if ((!(GetIsObjectValid(patrol_guard1))
                                &&
                    !(GetIsObjectValid(patrol_guard2)))
                                ||
                    ((GetDistanceBetween(patrol_guard1, oPC)>DISTANCE_TO_SEE)
                    &&
                    (GetDistanceBetween(patrol_guard2, oPC)>DISTANCE_TO_SEE)))
                    {
                    DestroyObject(patrol_guard1);
                    DestroyObject(patrol_guard2);
                    patrol_guard1=CreateClone(GetObjectByTag(MASTER_OBJECT_TAG), RandomLocation(oPC, DISTANCE_TO_RUN, TRUE), COPY_1_TAG, 0.0);
                    patrol_guard2=CreateClone(GetObjectByTag(MASTER_OBJECT_TAG), RandomLocation(oPC, DISTANCE_TO_RUN, TRUE), COPY_2_TAG, 0.0);
                    }
               AssignCommand(patrol_guard1, ActionMoveToObject(oPC, TRUE, 1.0));
               AssignCommand(patrol_guard2, ActionMoveToObject(oPC, TRUE, 1.0));
               AssignCommand(patrol_guard1, ActionStartConversation(oPC, "patrol"));
               if (GetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME)<4)
                    SetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME, GetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME)+1);
               SetLocalObject(patrol_guard1, "CRIMINAL", oPC);
               if (GetLocalInt(GetArea(oPC), WARNINGS_VARIABLE_NAME)>=4)
                    {
                    //ExecuteScript("action_arrest", OBJECT_SELF);
                    DelayCommand(3.0, AdjustReputation(oPC, patrol_guard1, -100));
                    DelayCommand(3.0, AssignCommand(patrol_guard1, ActionAttack(oPC)));
                    DelayCommand(3.0, AssignCommand(patrol_guard2, ActionAttack(oPC)));
                    }
           

Добавлено в [mergetime]1131988315[/mergetime]
Функция CreateClone была предоставлена мне AliceDiren, поэтому публиковать буду после ее разрешения. :oops:

Сообщение отредактировал Kavin - Nov 14 2005, 20:10
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 20:44
Сообщение #1756


Level 8
***

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



М-дя. Я опять застрял на мертвой точке.
Подскажите, пожалуйста, что сделать для того, чтобы, если определенное условие выполнилось, отдых прервался сразу же?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
AliceDiren
сообщение Nov 14 2005, 20:50
Сообщение #1757


Level 7
**

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



Kavin, отдых прерывается очисткой стека акций. ClearAllActions
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 14 2005, 21:17
Сообщение #1758


Level 8
***

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



О Боги! Такую элементарщину упустить из виду!!! Заработался совсем...
Забаньте меня, тупицу. :xz:

AliceDiren, Спасибо!
Добавлено в [mergetime]1132048002[/mergetime]
Написал функцию, которая определяет наличие необходимых для отдыха предметов (костер и bedroll), и если чего-то не хватает, то выдает FloatingText, чего не хватает.
В случае, если есть все для отдыха - она должна заставлять игрока подбегать к bedrollу, ложиться на него и отдыхать.

Все работает, условия отдыха срабатывают, кроме одного: игрок где сидит - там и брякается на отдых, нифига не ложась на кровать.

Вызов функции стоит на OnPlayerRest модуля, результат, возвращаемый функцией, служит сигналом для стражи.

Что мне сделать для того, чтоб задержать отдых до того времени, когда игрок добежит до кровати, и как вставить анимацию?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 15 2005, 12:57
Сообщение #1759


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

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



Это уже разбиралось очень подробно. Феникс, делая свою систему сталкнулся с этой же проблемой.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 15 2005, 17:03
Сообщение #1760


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

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



Kavin, тут есть пара тонкостей.
Например, ты можешь прервать отдых функцией ClearAllActions(), потом сделать анимацию и что-то еще и потом, как думается, нужно сделать ActionRest().
Ан нет, дело в том, что ActionRest() вызывает событие OnPlayerRest, короче это то же, что и иконка века. В результате получается бесконечный цикл и игра виснет.
Если хочешь вставить свою анимацию или чего еще перед отдыхом, то нужно отменять отдых и юзать функцию ForceRest(object oCreature). Но это не очень хорошо, так как убирается полоска отдыха, все хиты вылечиваются и эффекты снимаются мгновенно, не действуют ограничения на отдых: если рядом враг, если ПС в бою...
Вобщем, все что надумал, это писать свою функцию, которая проверяет врагов поблизости и состояние героя, потом оценивает хиты и постипенно их восполняет, а так же удаление эффектов через некоторое время. А вот полоску сделать не получется.
Времени сейчас разбираться со своим отдыхом нет(я тебе уже говорил). Поэтому, если нужно, пиши функцию сам, я не знаю, когда сяду за нее.
Надеюсь помог :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
AliceDiren
сообщение Nov 15 2005, 18:56
Сообщение #1761


Level 7
**

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



-fenix-, а если повесить на игрока локалку? И проверять потом, если FALSE, то отменять отдых, проигрывать анимацию, устанавливать TRUE и снова начинать отдых? А когда отдых действительно начался (локалка == TRUE), снова ставить FALSE. Я бы так и сделала, тогда и ForceRest не нужен.
Я может не совсем нормально сказала, но суть я думаю понятна. :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Nov 15 2005, 19:58
Сообщение #1762


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

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



Хотя можно и не писать свою функцию, а сделать так.
Neverwinter Script Source
object oPC = GetLastPCRested();

if(GetLocalInt(oPC, "REST") != 1)
{
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE, 1.0, 1.0));
DelayCommand(0.5, SetLocalInt(GetFirstPC(), "REST", 1));
DelayCommand(2.0, AssignCommand(GetFirstPC(), ActionRest()));
}
else
{
/*
что-то там происходит
.
.
.
*/

SetLocalInt(GetFirstPC(), "REST", 0));// в конце обязательно обнуляем переменную
}

Я хотел писать свою функцию, потому что при заостренном внимании к мелочам мое воображение нарисовало картину не сопоставимую с подобным вариантом.
Тебе может такой сгодится :xz:

Но в обоих есть маленькая ложка дегтя, будет писаться "Отдых отменен" в окне сообщений из-за юзания ClearAllActions(). Но с этим прейдется жить :(
ХМ, а может, кто знает, как это убирается?

AliceDiren, гы, я это дописывал 3 часа - телефон был занят :lol:

Сообщение отредактировал -fenix- - Nov 15 2005, 20:01
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 15 2005, 20:10
Сообщение #1763


Level 8
***

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



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

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

А вообще мне в голову пришел такой вариант: создать диалог на OnUsed скатки (bedroll-a), в ответы включить два пункта - "Свернуть постель" и "Лечь отдыхать". На диалог прицепить скрипты соответственно сворачивания скатки, или проигрывания анимации, а потом затемнения экрана и отдыха.
Намного проще.
Но не по-программерски как-то.
:crazy:

Текст функции моей, которая проверяет костер и постель в заданном радиусе:
Neverwinter Script Source
int SearchNecessaryForRest(object oWantToRest, int NeedBed=TRUE, int NeedFlame=TRUE, float fDistToSearch=6.0)
{
    object oBed=GetNearestObjectByTag("pc_bedroll", oWantToRest);
    float fDistToBed=GetDistanceBetween(oWantToRest, oBed);
    int BedFound=FALSE;

    if ((GetIsObjectValid(oBed)&&fDistToBed<fDistToSearch)||(!NeedBed)) BedFound=TRUE;

    object oFlame=GetNearestObjectByTag("pc_flame", oWantToRest);
    float fDistFromBedToFlame=GetDistanceBetween(oFlame, oBed);
    int FlameFound=FALSE;

    if ((GetIsObjectValid(oFlame)&&fDistFromBedToFlame<=2.0)||(!NeedFlame)) FlameFound=TRUE;

    int FunctionResult;

    if (!BedFound&&!FlameFound)
        {
            FloatingTextStringOnCreature("Ни костра, ни подстилки... Замерзну совсем...",
                        oWantToRest);
            FunctionResult= 0;
        }
    else if (BedFound&&!FlameFound)
        {
            FloatingTextStringOnCreature("Костер совсем далеко... Буду мерзнуть...", oWantToRest);
            FunctionResult= 1;
        }
    else if (!BedFound&&FlameFound)
        {
            FloatingTextStringOnCreature("Замерзну на голой земле.. Постель бы надо...", oWantToRest);
            FunctionResult= 2;
        }
    else if (BedFound&&FlameFound)
        {
          /* Здесь действия, которые должны совершаться, в случае если все найдено и можно отдыхать*/
            FunctionResult= 3;
        }
    return FunctionResult;
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Nov 15 2005, 20:31
Сообщение #1764


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

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



QUOTE (Kavin @ Nov 15 2005, 20:10)
А вообще мне в голову пришел такой вариант: создать диалог на OnUsed скатки (bedroll-a), в ответы включить два пункта - "Свернуть постель" и "Лечь отдыхать". На диалог прицепить скрипты соответственно сворачивания скатки, или проигрывания анимации, а потом затемнения экрана и отдыха.
Намного проще.
Но не по-программерски как-то.

диалоговый вариант считается для синглов очень удачным. Мы давно им пользуемся.
Чего я и Фениксу советовал в свое время.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kavin
сообщение Nov 15 2005, 21:09
Сообщение #1765


Level 8
***

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



Lex, А есть возможность запретить кнопку "Отдых" на Player GUI Panel?..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 1st May 2025 - 14:34