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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 95 96 97 98 99 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Zirrex
сообщение Jul 12 2006, 08:54
Сообщение #2401


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

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



azathoth, да, я думал про такой вариант, тем более, что он работает отлично, но что случилось с нашим циклом, вот что я хотел узнать. Ведь работал он раньше правильно, теперь же нет.

Aiwan, может быть оно и так, только не для варианта с циклом. Потом, если делать задержку на действие, то это лишит код цикла, и придется все 13 вещей, если они есть, перечислить в одинаковом коде, только каждая строчка будет выполняться с некоторой задержкой. Что, согласись, все же не очень здорово, потому что аналогичную операцию может выполнить и цикл, если бы не одно но. Ладно, если иных вариантов нету, я остановлюсь на своем, потому что он работает нормально.

Вообще странно, если максимально действий может быть 75, то куда же они деваются, или просто не успевают выполняться?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jul 12 2006, 08:55
Сообщение #2402


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

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



QUOTE(Dik Morris @ Jul 12 2006, 09:36) [snapback]87631[/snapback]

Читать эту ссылку.
От себя, как известно такие свойства появляются на эпическом уровне, у определенных классов, (например, светящиеся глаза, у монаха) значит попробуй добавить NPC несколько лишних уровней.
Ссылка совсем не в тему. Там обсуждение читов, а не скриптов.
Крылья: SetCreatureWingType
Хвост: SetCreatureTailType
Рука/нога/голова/всё остальное: SetCreatureBodyPart
Работает только в 1.67.

Сообщение отредактировал virusman - Jul 12 2006, 08:55
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jul 12 2006, 09:24
Сообщение #2403


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

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



2 Zirrex. Они не успевают выполниться.
Лично я копирую все шмотки в сундук и оттуда назад. Все остальное геммор, так как многие события вшиты в движок. Я это говорю к тому что столкнулся с проблемой одеть-снять проклятые вещи в модуле.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Jul 12 2006, 12:20
Сообщение #2404


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

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



Zirrex, функции одевания и снятия шмоток сами по себе длинные, наверно в движок вшита сопутствующая анимация. Можно попробовать блокировать стек, чтобы исключить возможность сбоя кода. Но все же лучше через Copy и Destroy. Эти функции более быстрые, и можно использовать даже в бою. А вот одеть в бою шмотку – большой геморрой!
NSS
void main()
{
object oPC = GetFirstPC();
int i;
object oItem = GetItemInSlot(i, oPC);

for (i = 0; i < NUM_INVENTORY_SLOTS; i++)
{
  oItem = GetItemInSlot(i, oPC);

  if (GetIsObjectValid(oItem))
     {
      CopyItem(oItem, oPC);
      DestroyObject(oItem);
     }
}
}
  // Снимаем все шмотки с героя ему в рюкзак


Сообщение отредактировал gennady - Jul 12 2006, 12:21
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Jul 12 2006, 13:16
Сообщение #2405


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

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



gennady, в такой цепочке есть один недостаток, если скрипт начнет выполняться, а игрок в этот момент покинет сервер, может произойти известная неприятность, а именно, размножение вещей. Мой вариант хоть и не идеален, потому что заставляет выполняться цикл 4 раза, но, если его немного модифицировать, добавив проверку, а есть ли вообще цель, с которой надо работать, то цикл лишь остановится на полпути, когда цель исчезнет. Вещи же останутся либо на персонаже, либо в инвентаре, но не размножатся.

Чтобы правильно работала такая цепочка, как копирование и удаление, необходимо делать метки на удаляемые вещи, и в момент входа на сервер, проверять, есть ли у персонажа подобные вещи. Если есть, удалять.

Скрипт можно укоротить:

NSS
void main()
{
    object oPC = // тому-то, GetFirstPC не подходит, потому что модуль мультиплейерный
    int i;
    object oItem;

//    object oItem = GetItemInSlot(i, oPC); // лишняя строчка

    for (i = 0; i < 14; i++) // невидимые объекты нам проверять не нужно, поэтому граница на 14 вещи.
    {
        oItem = GetItemInSlot(i, oPC);

        if (GetIsObjectValid(oItem))
        {
            CopyItem(oItem, oPC);
            DestroyObject(oItem);
        }
    }
}


Aiwan, осуществляешь копирование через сундук, чтобы персонажу не выводились надписи, что вещь потеряна? Тоже вариант.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
OxCom
сообщение Jul 12 2006, 17:01
Сообщение #2406


Level 2
*

Класс: Маг
Характер: Chaotic Evil
Раса: Полуэльф



Опять же доброго времени суток. Бился я с SQLGetData - так ничего и не получилось. Скрипт все время выдает "пусто", что я не так сделал? Почему скрипт не работает?
NSS
#include "aps_include"

void main()
{
    object oPC = GetLastUsedBy();
    string sPlayer=SQLEncodeSpecialChars(GetPCPlayerName(oPC));
    string sChar=SQLEncodeSpecialChars(GetName(oPC));
    string sSQL="SELECT * FROM `nwn_stast` WHERE playername = '"+sPlayer+"' AND charname = '"+sChar+"'";
    SQLExecDirect(sSQL);
    string sName = SQLGetData(0);
    string sName1 = SQLGetData(1);
if(SQLFetch())
{
    if (sName == sPlayer)
    {
    SendMessageToPC(oPC, "sName 0");
    }
        if (sName1 == sPlayer)
    {
    SendMessageToPC(oPC, "sName 1");
    }
} else {SendMessageToPC(oPC, "Пусто");}

}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jul 12 2006, 18:18
Сообщение #2407


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

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



QUOTE(OxCom @ Jul 12 2006, 18:01) [snapback]87663[/snapback]

Опять же доброго времени суток. Бился я с SQLGetData - так ничего и не получилось. Скрипт все время выдает "пусто", что я не так сделал? Почему скрипт не работает?
NSS
#include "aps_include"

void main()
{
    object oPC = GetLastUsedBy();
    string sPlayer=SQLEncodeSpecialChars(GetPCPlayerName(oPC));
    string sChar=SQLEncodeSpecialChars(GetName(oPC));
    string sSQL="SELECT * FROM `nwn_stast` WHERE playername = '"+sPlayer+"' AND charname = '"+sChar+"'";
    SQLExecDirect(sSQL);
    string sName = SQLGetData(0);
    string sName1 = SQLGetData(1);
if(SQLFetch())
{
    if (sName == sPlayer)
    {
    SendMessageToPC(oPC, "sName 0");
    }
        if (sName1 == sPlayer)
    {
    SendMessageToPC(oPC, "sName 1");
    }
} else {SendMessageToPC(oPC, "Пусто");}

}


1. Посмотри лог nwnx_odbc.
2. Повтори тот же самый запрос вне НВНа.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
OxCom
сообщение Jul 12 2006, 18:36
Сообщение #2408


Level 2
*

Класс: Маг
Характер: Chaotic Evil
Раса: Полуэльф



В логе только запрос. Получения инфы там не записано. Вне НВНа все работает.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jul 12 2006, 18:38
Сообщение #2409


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

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



QUOTE(OxCom @ Jul 12 2006, 19:36) [snapback]87668[/snapback]

В логе только запрос. Получения инфы там не записано. Вне НВНа все работает.

Поставь в nwnx.ini debuglevel в разделе этого плагина побольше.
NWNX инициализируется в модуле?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
OxCom
сообщение Jul 12 2006, 19:39
Сообщение #2410


Level 2
*

Класс: Маг
Характер: Chaotic Evil
Раса: Полуэльф



Вот жеж я балда. самое главное и забыл (IMG:style_emoticons/kolobok_light/smile.gif) ) SQLInit();
Спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Jul 31 2006, 19:41
Сообщение #2411


Level 5
**

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



Мне нужно чтобы после смерти всех врагов в области заработал нужный мне скрипт.
Может, кто выложите, если нетрудно?

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waromon
сообщение Jul 31 2006, 20:01
Сообщение #2412


Level 4
**

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить



После убийства 10 врагов, открывается нужный скрипт. (Число измени, по желанию)
На onDeath мобов:

NSS
void main()
{
object oKiller = GetLastKiller();

// Проверка, если НПЦ убил игрок, или хенч,
if (GetIsPC(oKiller) || GetIsPC(GetHenchman(oKiller)))
{
if (GetLocalInt(oKiller, "Death_hostile") == 10)
{
ExecuteScript("Название нужного скрипта", Тот кто открывает его);
}
SetLocalInt(oKiller, "Death_hostile", GetLocalInt(oKiller, "Death_hostile")+1);
}
}



ЗЫ: не проверял, но по идеи все должно работать. (IMG:style_emoticons/kolobok_light/biggrin.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Jul 31 2006, 20:07
Сообщение #2413


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить
NWN: Скриптинг [PW]



QUOTE
Мне нужно чтобы после смерти всех врагов в области заработал нужный мне скрипт.

QUOTE
После убийства 10 врагов, открывается нужный скрипт. (Число измени, по желанию)

геморой(а если динамичное число? О_о)..GetFirstObjectInArea,GetNextObjectInArea проще

Сообщение отредактировал [MoF]Darth_Nick - Jul 31 2006, 20:11
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Jul 31 2006, 20:29
Сообщение #2414


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

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



лучше на он_спавн всех врагов добавлять в какой-то список, и потом проверять их существование..
а не GetFirstObjectInArea ./ GetObjectByTag / ets
особенно для PW o_O загрузка проца прыгает до <цензура> (IMG:style_emoticons/kolobok_light/shok.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Jul 31 2006, 21:09
Сообщение #2415


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



на onspawn мобов в локе
NSS
object oArea = GetArea(OBJECT_SELF);
SetLocalInt(oArea, "mob_count", GetLocalInt(oArea, "mob_count")+1);

на ondeath моба
NSS
object oArea = GetArea(OBJECT_SELF);
int mob_count = GetLocalInt(oArea, "mob_count")-1; // 1 was killed now
SetLocalInt(oArea, "mob_count", mob_count);
if(mob_count <= 0) SendMessageToPC(GetLastDamager(OBJECT_SELF), "You killed all!");

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
xHageN
сообщение Aug 3 2006, 20:21
Сообщение #2416


Level 1


Класс: Некромант
Характер: Chaotic Good
Раса: Полуэльф



Всем доброго времени суток! Делая свой модуль сегодня, я столкнулся с проблемкой..
В самом модуле у меня идёт стандартное пенальти на экспу и деньги при смерти, но мне нужно, чтоб в определеннойй арее за смерть ничего не снимали. Сколько не парился, никак не получилось, чар респавнится с потерей опыта и денег и в стандартном месте (мне нужно, чтоб он воскресал в той арее где смерть не дает пенальти). По сему решил я к вам обратиться, может наставите на путь истинный (IMG:style_emoticons/kolobok_light/declare.gif) )))

Вот собственно финальный вариант того, что у меня получилось (вернее не получилось!)

NSS
void main()
{
    object oRespawner = GetLastRespawnButtonPresser();
    object oSpawnPoint = GetObjectByTag("portal");
    object oSpawnPoint2 = GetObjectByTag("soznanie_portal");
    object oArea = GetArea(oSpawnPoint2);


  if  (GetArea(oRespawner) == oArea)
  {
    AssignCommand(oRespawner,JumpToLocation(GetLocation(oSpawnPoint2)));
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    RemoveEffect(oRespawner, EffectDeath());
  }
    else;
    int nXP = GetXP(oRespawner);
    int nPenalty = 50 * GetHitDice(oRespawner);
    int nHD = GetHitDice(oRespawner);
    int nMin = ((nHD * (nHD - 1)) / 2) * 1000;
    int nNewXP = nXP - nPenalty;
    if (nNewXP < nMin)
      nNewXP = nMin;
    SetXP(oRespawner, nNewXP);
    int nGoldToTake =    FloatToInt(0.10 * GetGold(oRespawner));
    if (nGoldToTake > 10000)
    {
        nGoldToTake = 10000;
    }
    AssignCommand(oRespawner,JumpToLocation(GetLocation(oSpawnPoint)));
    AssignCommand(oRespawner, TakeGoldFromCreature(nGoldToTake, oRespawner, TRUE));
    DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oRespawner, FALSE));
    DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oRespawner, FALSE));

    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oRespawner);
    ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oRespawner)), oRespawner);
    RemoveEffect(oRespawner, EffectDeath());
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Aug 3 2006, 21:00
Сообщение #2417


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

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



NSS
RemoveEffect(oRespawner, EffectDeath());
  }
    else;
//^(IMG:style_emoticons/kolobok_light/i-m_so_happy.gif) ^ мдя

обрами скобочками блок скрипта с выдачей пенальти и убери ";" после else.
либо в первом блоке после RemoveEffect(..) поставь "return;".


морду какую-то самодовольную вставило вместо пары галочек(^)...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waromon
сообщение Aug 3 2006, 21:01
Сообщение #2418


Level 4
**

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить



Первое что увидал:

NSS
else;


Делай так:

NSS
else
{
// Выражение
}


dumbo, пардон не заметил. (IMG:style_emoticons/kolobok_light/pleasantry.gif) (IMG:style_emoticons/kolobok_light/biggrin.gif)

Сообщение отредактировал Waromon - Aug 3 2006, 21:04
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Aug 4 2006, 02:20
Сообщение #2419


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



NSS
RemoveEffect(oRespawner, EffectDeath());
- лишнее
а так - вместо елсе лучше поставь
NSS
if  (GetArea(oRespawner) == oArea) {
...
return;
}
// тут было else;
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
xHageN
сообщение Aug 4 2006, 10:22
Сообщение #2420


Level 1


Класс: Некромант
Характер: Chaotic Good
Раса: Полуэльф



От спасибо вам, все работает! Ещё один маленький шажок для меня в познаниях скриптинга))

А, вот ещё никак не могу разобраться:
Скрипт на ОнДэф одного перца. Когда он умирает, должны исчезнуть плэйсеблы лучи (иметируют своего рода клетку) и ловушка. Так же другой перец, находящийся в самой как бы клетке должен подбежать ко мне и сдестроиться.
Из этого всего почему-то работает только ActionForceMoveToObject и DestroyObject oRad.. Ну и переменная начисляется.

NSS
void main()
{
object oKiller = GetLastKiller();
object oRays = GetObjectByTag("gore_ray");
object oTrap = GetObjectByTag("gore_trap");
object oRad = GetObjectByTag("radost");

AssignCommand(oRays, ActionDoCommand(DestroyObject(oRays)));
AssignCommand(oTrap, ActionDoCommand(DestroyObject(oTrap)));
AssignCommand(oRad, ActionForceMoveToObject(oKiller, TRUE, 1.0, 5.0));
AssignCommand(oRad, ActionDoCommand(DestroyObject(oRad)));
DelayCommand(0.5, SetCommandable(FALSE, oRad));
DelayCommand(0.5, SetCommandable(FALSE, oRays));
DelayCommand(0.5, SetCommandable(FALSE, oTrap));
SetLocalInt(oKiller, "cleanmind", GetLocalInt(oKiller, "cleanmind") + 1);
}


Сообщение отредактировал xHageN - Aug 4 2006, 12:11
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Aug 4 2006, 15:19
Сообщение #2421


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



NSS
void main() {
object oKiller = GetLastKiller();
object oRays = GetObjectByTag("gore_ray");
object oTrap = GetObjectByTag("gore_trap");
object oRad = GetObjectByTag("radost");
DestroyObject(oRays);
DestroyObject(oTrap);
AssignCommand(oRad, ActionForceMoveToObject(oKiller, TRUE, 1.0, 5.0));
DelayCommand(10.0f, DestroyObject(oRad)); // 10.0 заменить на время, за которое он добегает.
SetLocalInt(oKiller, "cleanmind", GetLocalInt(oKiller, "cleanmind") + 1);
}

P.S.
NSS
AssignCommand(oRays, ActionDoCommand(DestroyObject(oRays)));
- не надо. Достаточно
NSS
DestroyObject(oRays);

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waromon
сообщение Aug 4 2006, 15:28
Сообщение #2422


Level 4
**

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить



[quote name='kreon' date='Aug 4 2006, 15:19' post='89089']
NSS
DelayCommand(10.0f, DestroyObject(oRad)); // 10.0 заменить на время, за которое он добегает.


Команда идет из стека трупа, то бишь, ничего не получится. Время нужно указывать в DestroyObject(oRad, 10.0f)

Сообщение отредактировал Waromon - Aug 4 2006, 15:29
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Mandrake
сообщение Aug 4 2006, 15:58
Сообщение #2423


Level 3
*

Класс: Волшебник
Характер: Neutral Evil
Раса: Человек



NSS
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void main()
{
    object oPC = GetFirstPC();
    int nDamage;
    float fDelay;
    effect eDam;
    string sArea = GetTag(GetArea(oPC));
    effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
    object oCampfire = GetObjectByTag("CAMPFIRE101");

    if((GetIsDay())== FALSE)
    {
    if ((GetDistanceBetween(oCampfire, oPC))> 2.0)
    {
    if (sArea == "highmounts001" || sArea == "highmounts002" || sArea == "highmounts003"||
        sArea == "capitolofgom" || sArea == "ncapitolspart" || sArea == "narnpass001"
        ||sArea == "iceland001")
    {

    nDamage = Random(15) + 1;


    if(/*Fort Save*/ MySavingThrow(SAVING_THROW_FORT, oPC, 25, SAVING_THROW_TYPE_COLD, OBJECT_SELF, fDelay))
    {
      nDamage = 0;
    }


    eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
    DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oPC));
    //ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oPC, 1.7);

    }
    }
    }
oPC = GetNextPC();
}


Такая ситуация: Когда игрок находится в некоторых особо "холодных локациях" , он должен делать чек на стойкость против холода, или же будет получать урон. Недавно хотел внести проверку, на наличие костра рядом(тогда урон не наносится), но получил следующее. Чек на форту не делается, только с костром, который стоял ближе к игроку, во время его появления на локации, а рядом с другими желаемый результат не происходит. Пробывал через функцию GetNearestObjectByTag(), но результат тот же, подскажите пожалуйста, как научить скрипт брать в расчет и другие костры.

Скрипт стоит на ХБ локации, если что.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
kreon
сообщение Aug 4 2006, 16:40
Сообщение #2424


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

Класс: Некромант
Характер: Chaotic Evil
Раса: Дракон
NWN: Скриптинг [PW]



2Waromon: afair, команды создания\уничтожения объектов не идут в стек, как и DelayCommand.
В стек их пихает только AssignCommand. А Delay все равно выполняется после(!) окончания скрипта. Надо проверить будет.
2Mandrake:
NSS
#include "X0_I0_SPELLS"
#include "x2_inc_spellhook"
void DmgColdIfNotNearCampfire(object oPC) {
    object oCamp = GetFirstObjectInShape(SHAPE_SPHERE, 2.0, GetLocation(oPC), FALSE, OBJECT_TYPE_PLACEABLE);
    while(GetIsObjectValid(oCamp)) {
        if(GetTag(oCamp) == "CAMPFIRE101") return;
        oCamp = GetNextObjectInShape(SHAPE_SPHERE, 2.0, GetLocation(oPC), FALSE, OBJECT_TYPE_PLACEABLE);
    }
    int nDamage = Random(15) + 1;
    if(MySavingThrow(SAVING_THROW_FORT, oPC, 25, SAVING_THROW_TYPE_COLD, OBJECT_SELF, 0.0)) nDamage = 0;
    effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_COLD);
    ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oPC);
}
void main() {
object oPC = GetFirstPC();
string sArea = GetTag(GetArea(oPC));
if(!GetIsDay() && (sArea == "highmounts001" || sArea == "highmounts002" || sArea == "highmounts003"||
        sArea == "capitolofgom" || sArea == "ncapitolspart" || sArea == "narnpass001"
        ||sArea == "iceland001")) DmgColdIfNotNearCampfire(oPC);
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Waromon
сообщение Aug 4 2006, 17:20
Сообщение #2425


Level 4
**

Класс: Некромант
Характер: Chaotic Evil
Раса: Нежить



QUOTE(kreon @ Aug 4 2006, 16:40) [snapback]89102[/snapback]

2Waromon: afair, команды создания\уничтожения объектов не идут в стек, как и DelayCommand.
В стек их пихает только AssignCommand. А Delay все равно выполняется после(!) окончания скрипта. Надо проверить будет.


Просто, если NPC умрет - то и DelayCommand пропадет вместе с ним, проверь. (IMG:style_emoticons/kolobok_light/wink3.gif)
По поводу стека ошибся, не так выразился.

QUOTE
Начинающий скриптер.


(IMG:style_emoticons/kolobok_light/friends.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

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

 



Текстовая версия Сейчас: 19th April 2024 - 05:16