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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 82 83 84 85 86 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
Артём
сообщение Mar 21 2006, 17:13
Сообщение #2076


Level 5
**

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



У МЕНЯ ВОПРОС.Напишыте пожалуйста скрипт эффекта невидемости каторый накладывается на игрока и действует постоянно
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 21 2006, 19:52
Сообщение #2077


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

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



NSS
void main()
{
object oTarget = GetFirstPC();//игрок
effect eInvisibility = EffectInvisibility(INVISIBILITY_TYPE_NORMAL);//эффект невидимости

ApplyEffectToObject(DURATION_TYPE_PERMANENT, eInvisibility, oTarget);//непосредственно наложение эффекта
// DURATION_TYPE_PERMANENT - эффект будет действовать постоянно
}

Этот эффект невидимости снимется если начнется бой. Чтобы такого не было нужно INVISIBILITY_TYPE_NORMAL заменить на INVISIBILITY_TYPE_IMPROVED, а чтобы еще и иконка не отображалась, что на чаре невидимость(или я не так понял?), поставь INVISIBILITY_TYPE_DARKNESS.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Артём
сообщение Mar 21 2006, 21:56
Сообщение #2078


Level 5
**

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



Понятно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 22 2006, 06:57
Сообщение #2079


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

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



пара фиксоф(может пригодится кому...)(хотя не тестировал..лень)

NSS
// 1 из десятка способоф убийства в ноу пвп.. просто сбить экшен атаки
void dn_NoPvPE(object oPC)
{
    if(GetCurrentAction(oPC) == ACTION_ATTACKOBJECT)
        DelayCommand(1.0,AssignCommand(oPC,ClearAllActions(TRUE)));
}


NSS
// ну эт думаю ясно...
object oPC = GetEnteringObject();

if(GetXP(oPC) == 0)
{
SetXP(oPC,1);
BootPC(oPC);
}


NSS
// сбить Байл тайд при заходе
void dn_BTFix(object oPC)
{
    if(GetHasSpellEffect(SPELL_BATTLETIDE,oPC))
        RemoveSpellEffects(SPELL_BATTLETIDE,oPC,oPC);
}


NSS
// должно пахать..проверять лень
void dn_dmhookFix(object oPC)
{
    object oItem=GetFirstItemInInventory(oPC);
    int i;
    int nGold = GetGold(oPC);
    if(GetXP(oPC) == 0)
    {
        while(GetIsObjectValid(oItem))
        {
            DestroyObject(oItem);
            oItem=GetNextItemInInventory(oPC);
        }

        if(nGold)
            TakeGoldFromCreature(nGold,oPC,TRUE);

        for(i=0; i<18; i++)
        {
            object oEquipItem = GetItemInSlot(i,oPC);
            if(GetIsObjectValid(oEquipItem))
                DestroyObject(oEquipItem);
        }

        SendMessageToPC(oPC,"сцуко-читор! пишем в лог и бутаем");
        WriteTimestampedLogEntry("ахтуцнк! сцукочитор: "+GetPCPlayerName(oPC)+"; IP: "+GetPCIPAddress(oPC)+"; Public Key:"+GetPCPublicCDKey(oPC));
        DelayCommand(1.0,BootPC(oPC));
    }
}


ну дальше тестово можно..
стойку ДД переписывать надо
стандартный крафт лучше убрать(если СЕР вдвойне советую убрать)
при одевании шмота вешать дикрис атаки и спел фелчар(скрипт стер случайно..заного писать лень)
монкам поставить имун к спид дикризу и т.д.(слишком много способов активировать багу)(лучше фит вырубить еще)
смеху наташи(ничего личного) поставить чек на алаймент помойму надо
спелл хуком проверять контрл спелл и ставить ПЦ паралайз или другой изврат
пересмотреть полиморф с рассой дварфа
убрать шмотье с экстра турнингом(или пофиксить, когда пал одевает)
если есть афтофолоу на шарде либо убрать, либо запретить юз на земле
двери стараться заменять переходами между ними
открыть скрипт x0_s0_light, закоментить\etc вешанье постоянного еффекта на палку..
скрипт x2_s2_ruin, поставить чек на локу
скрипт x2_s2_hellball, поставить чек на локу
ну поправить половина нвновских спеллов это думаю ясно
чекать апиренс входящего, если надо изменять\бутить
чекать акк входящего, особенно несколько первых символов
вызов балора запретить читать в ноу пвп
грабли ПМа тоже запретить в ноу пвп\или убрать
вроде еще когда кастуется шш и дез вард, дез вард при диспеле не слетает(хтя хз)
клир сам себя убить еще может без спасов дыркой(имплозией)
щас уже не помню, была еще зрень выкидывания одеваемого нон дроп айтема..

еще осталось, но либо лень называть, либо нету желания оглашать общественность, либо они скриптами не фиксятцо
скрипты эти писал очень давно(когда бы нубом(хотя помойму им и остался (IMG:style_emoticons/kolobok_light/smile.gif) )), так что могут быть ошибки и т.д... переправлять лень

© я
credits: 2_advanced (грех не написать), axistown(начало багаюза), cormyrean(продолжение и собственно конец)

еще чет хотел...забыл..пойду спать )

Сообщение отредактировал [MoF]Darth_Nick - Mar 27 2006, 11:37
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zirrex
сообщение Mar 22 2006, 09:00
Сообщение #2080


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

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



Четвертый скрипт, это не фикс, а стандартный скрипт раздевания только что созданного персонажа. Вот только зачем бутить персонажа, если у него и так все отбирается?

Второй скрипт работает ровно до второго захода.

Из того, что написано ниже скриптов, понял несколько строк, остальные из-за дурацкого жаргона очень трудно разобрать. Зачем что-то сюда писать, если это может быть не всем понятно? Хотя если язык пострадал, это навсегда, проверено временем.

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

QUOTE

грабли ПМа тоже запретить в ноу пвп\или убрать
вроде еще когда кастуется шш и дез вард, дез вард при диспеле не слетает(хтя хз)
при одевании шмота вешать дикрис атаки и спел фелчар(скрипт стер случайно..заного писать лень)

Вообще не понял о чем речь идет.

З.Ы. Новичком и остался, сюдя по языку. Ничего личного.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 22 2006, 15:16
Сообщение #2081


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

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



QUOTE
Вообще не понял о чем речь идет.

ндя...английский знаеш? не ужто трудно расшифровать? "дикрис атаки и спел фелчар"..
ваши проблемы..

QUOTE
Четвертый скрипт, это не фикс, а стандартный скрипт раздевания только что созданного персонажа. Вот только зачем бутить персонажа, если у него и так все отбирается?

ну-ну, ты лучше название скрипта прочти..хотя тебе это мало что скажет..

QUOTE
Зачем что-то сюда писать, если это может быть не всем понятно?

кому надо - поймет, я старался по меньше ошибок делать...всё таки в 7 утра не каждый асилит столько писать

QUOTE
самый распространенный способ убийства

их там 10, и все они распространенные

QUOTE
З.Ы. Новичком и остался, сюдя по языку. Ничего личного.

ты просто попробуй понять вообще о чем речь идет...а потом суди
готов поспорить у тебя и четверть этого не фикшена
и вообще..не нравится не читай =Р

Сообщение отредактировал [MoF]Darth_Nick - Mar 22 2006, 15:31
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 22 2006, 17:59
Сообщение #2082


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

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



QUOTE
пара фиксоф(может пригодится кому...)(хотя не тестировал..лень)

1. может пригодится.
2. не тестировал - плохо. Если что выкладываешь, всетаки проверяй (IMG:style_emoticons/kolobok_light/smile.gif)
3. Zirrex, [MoF]Darth_Nick, взаимные претензии в приват. (IMG:style_emoticons/kolobok_light/smile.gif) Тут ни-ни.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sharklike
сообщение Mar 22 2006, 18:50
Сообщение #2083


Level 8
***

Класс: Бледный Мастер
Характер: Chaotic Neutral
Раса: Человек



[MoF]Darth_Nick, спасибо за список багов. Можешь подробнее описать косяк со стойкой ДД?

P.S. Касательно 4-го скрипта. Если с помощью хука на шард заводится чар с ненулевой экспой, тогда что?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 22 2006, 20:48
Сообщение #2084


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

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



2Lex дык, кому надо и кто понял суть, сам напишет фикс если понадобится
2Sharklike в ней бегать и атаковать можно
скрипта стойки нету, только забавный комментарий
4) попробуй завести такого (IMG:style_emoticons/kolobok_light/smile.gif)

Сообщение отредактировал [MoF]Darth_Nick - Mar 22 2006, 20:51
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Sharklike
сообщение Mar 23 2006, 05:36
Сообщение #2085


Level 8
***

Класс: Бледный Мастер
Характер: Chaotic Neutral
Раса: Человек



QUOTE
Darth_Nick' date='Mar 22 2006, 20:48' post='73689']
4) попробуй завести такого (IMG:style_emoticons/kolobok_light/smile.gif)

Да заводил. Вообще я спросил, потому что мне интересно стало - может тот хук, который видел ты и который видел я работают по-разному?
QUOTE
Darth_Nick' date='Mar 22 2006, 20:48' post='73689']
не поможет не ключ, не айпи

Ты имеешь ввиду, что все таки можно войти любым чаром с акка, название которого ассоциируется с ключом, сохраненным на сервере и не известным злоумышленнику? Или ты про то, что можно просто войти чужой на акк и посмотреть чаров?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Mar 23 2006, 19:47
Сообщение #2086


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

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



NSS
void main()
{
    object oPC = GetEnteringObject();
    if(GetIsDM(oPC)) // дм
    {
//...проверка по ключам/IP/спец итему и т.п.. - для извращенцев
    }
    else
    if(GetPlotFlag(oPC)) // может злобный ДМ в квесте повесит плот на игрока, а тот вылетит/перезайдет
    {
        SetPlotFlag(oPC, 0);
        BootPC(oPC);
    }
    else
    if(!GetXP(oPC)) // новый чар или тупящий нуб с софтом
    {
        SetXP(oPC, 1);
        BootPC(oPC);
    }
    else // плеер..
    {
    }
}
(IMG:style_emoticons/kolobok_light/prankster2.gif)

QUOTE
поставить чек на локу
не на локу!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
[MoF]Darth_Nick
сообщение Mar 24 2006, 03:46
Сообщение #2087


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

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



да там по разному можно, главное суть

Ссылка, по которой вы попали на эту страницу является «мертвой» или удаленной.

Сообщение отредактировал [MoF]Darth_Nick - Mar 24 2006, 04:01
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Mar 24 2006, 18:01
Сообщение #2088


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

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



NSS
// в не_пвп все ПЦ дружелюбны (IMG:style_emoticons/kolobok_light/blum3.gif)
    object oPC = OBJECT_SELF;
    object oTarget = GetSpellTargetObject();
    if(GetIsReactionTypeFriendly(oPC, oTarget))
        return;
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Mar 25 2006, 00:05
Сообщение #2089


Level 8
***

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



Привет,
Обясните плс. (долбался долго...честно), как сделать невидимую дверь, я уже спрашивал и по способу, какой мне посоветовали у меня (IMG:style_emoticons/kolobok_light/sad.gif) . Нужно так, вы заходите в локу, разговариваете с НПС, а после вы уже видите дверь.....
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Mar 25 2006, 00:37
Сообщение #2090


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

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



создавать на вейпоинте объект двери после определенных действий (или варианта в диалоге) игрока

а если дверь еще необходимо найти, то можно создать триггер, он_ентер которого будет запускать (перезапуск если GetIsInSubArea(...) ) каждые 6 сек. проверки на серч, при удачной - появляется дверь на триггере

примеры:
nw_o2_detectdoor - древний вариант
x2_**_secretdoor - ХоА вариант с хертбитами..
лучше написать что-то своё если для шарда делается
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
gennady
сообщение Mar 27 2006, 08:05
Сообщение #2091


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

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



QUOTE(2_advanced @ Mar 24 2006, 18:01) [snapback]73968[/snapback]
Привет,
Обясните плс. (долбался долго...честно), как сделать невидимую дверь, я уже спрашивал и по способу, какой мне посоветовали у меня . Нужно так, вы заходите в локу, разговариваете с НПС, а после вы уже видите дверь.....

В диалоге вызови потайную дверь из стандартной палитры скриптом…, тогда точка перемещения будет иметь тег ”DST_DOOR_SEC_1”.
NSS
void main()
{
object oWP = GetWaypointByTag("WP_XXX");// точка вызова двери
location Loc = GetLocation(oWP);
object oDoor = CreateObject(OBJECT_TYPE_PLACEABLE, "x0_sec_door1", Loc, TRUE, "DOOR_SEC_1");  // Объект дверь
}

Можно сделать и свою синьку двери, но нужно повесить на слот OnUsed скрипт перемещения (x0_o2_use_wdoor), или можно взять скрипт Айва из базы скриптов для новичков, или можешь воспользоваться моей версией. Если хочешь использовать секретный триггер, то вот краткая справка:
Секретный объект
Триггер содержит в названии ResRef объкта, который появится.
Точка, где появится объект LOC_+Тег триггера.
Тег точки перемещения DST_+Тег триггера.
NSS
//:://////////////////////////////////////////////
/*
     УНИВЕРСАЛЬНЫЙ СКРИПТ ПЕРЕМЕЩЕНИЙ ГЕРОЯ
*/

//:://////////////////////////////////////////////

void JumpFirstPC(object oWP)
{
object oPC = GetFirstPC();
object oSP = GetHenchman(oPC);
object oAnimal = GetAssociate(ASSOCIATE_TYPE_ANIMALCOMPANION,oPC);
object oFamiliar = GetAssociate(ASSOCIATE_TYPE_FAMILIAR,oPC);
object oDominated = GetAssociate(ASSOCIATE_TYPE_DOMINATED,oPC);
object oSummoned = GetAssociate(ASSOCIATE_TYPE_SUMMONED,oPC);
   AssignCommand(oPC, ClearAllActions());
   AssignCommand(oSP, ClearAllActions());
   AssignCommand(oAnimal, ClearAllActions());
   AssignCommand(oFamiliar, ClearAllActions());
   AssignCommand(oDominated, ClearAllActions());
   AssignCommand(oSummoned, ClearAllActions());
AssignCommand(oPC, JumpToObject(oWP));
AssignCommand(oSP, JumpToObject(oWP));
AssignCommand(oAnimal, JumpToObject(oWP));
AssignCommand(oFamiliar, JumpToObject(oWP));
AssignCommand(oDominated, JumpToObject(oWP));
AssignCommand(oSummoned, JumpToObject(oWP));
}

void main()
{
object oPC = GetFirstPC();
object oSP = GetHenchman(oPC);
object oPoint = GetWaypointByTag("TP_" + GetTag(OBJECT_SELF));
  if (!(GetLocked(OBJECT_SELF) == TRUE)) // если замок открыт
   {
    DelayCommand(0.1, ActionPlayAnimation(ANIMATION_PLACEABLE_OPEN));
    DelayCommand(2.6, JumpFirstPC(oPoint)); // перемещаем всю компанию
    DelayCommand(6.6, ActionPlayAnimation(ANIMATION_PLACEABLE_CLOSE));
   }
  else
  {
    AssignCommand(OBJECT_SELF, SpeakString("Замок закрыт"));
    int nSkill = 20 + GetSkillRank(SKILL_OPEN_LOCK, oSP);
    if (nSkill >= GetLockUnlockDC(OBJECT_SELF)) // если спутник может открыть замок
    AssignCommand(oSP, SpeakString("Попробуй открыть, не получитсЯ Я сам открою!"));
    else
    AssignCommand(oSP, SpeakString("Мне не осилить этот замок…"));
   }
}
// помещать в слот OnUsed OnEnter OnClick OnAreaTransitionClick
//Перемещение героя и спутников для размещаемых объектов


Сообщение отредактировал gennady - Mar 27 2006, 09:01
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 27 2006, 09:45
Сообщение #2092


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

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



Вот код скрипта. Вешаешь на триггер на OnEnter, на триггере вешаешь локальные стринги PLC_ResRef == ресрефу твоей создаваемой двери. Можешь серетный шкаф даже, любой предмет PLC_ и когда РС наступит на триггер, то произойдет проверка его ДС в случае успеха, выдаст ему дверь или еще что. Можешь наложить на твою дверь все что надо скриптом, напиши скрипт и присвой на триггер стрингом RUN_SCRIPT. Имя триггера - стринг над РС. Типа, О! Я нашел дверь! Так же хеньчманы боолтают и указывают что надо тут быть внимательным.
NSS
//:://////////////////////////////////////////////
//:: OnEnter  am_ten_searh_plc
//:: Copyright © 2005 WRG!
//:://////////////////////////////////////////////
/*
  ПРИ УСПЕШНОЙ ПРОВЕРКЕ СКИЛА ПОИСК, СОЗДАЕМ PLC.

ResRef создаваемого объекта равен локальному
стрингу "PLC_ResRef". Создаем рандомно на
случайной локации или специально на месте объекта
"SECRET_PLC_"+[Таг Триггера]
Поле триггера KeyTag - сложность проверки скилла:
DC_EASY = 0; DC_MEDIUM = 1; DC_HARD = 2;
Локалка "ACTION_MODE_DETECT" устанавливает свойство
триггера, он сработает только когда РС в режиме
обнаружения.

*/

//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 02.01.2006 С новым Годом!
//:://///////////////////////////////////////////
#include "nw_i0_tool"

/*  Функция рандомной локации, написана Баалом. */
location CreateRandomLocation(object oTarget, float fRadius, int bOnLine = TRUE)
{
  if(!bOnLine)
  fRadius=IntToFloat(Random(FloatToInt(fRadius)));

  float iXO=VectorMagnitude(GetPosition(oTarget))*cos(VectorToAngle(GetPosition(oTarget)));
  float iYO=VectorMagnitude(GetPosition(oTarget))*sin(VectorToAngle(GetPosition(oTarget)));
  float fRndomAngle=IntToFloat(Random(360));
  location lNEW=Location(GetArea(oTarget),Vector(iXO+fRadius*cos(fRndomAngle),iYO+fRadius*sin(fRndomAngle)),360.0);
  return lNEW;
}

void main()
{
  object oPC = GetEnteringObject();
  object oHench = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC);
  object oSelf = OBJECT_SELF;
  string sMessage = GetName(oSelf); // Сообщение при обнаружении предмета
  string sHench1 = GetLocalString(oSelf, "HENCHMAN_string_1");
  string sHench2 = GetLocalString(oSelf, "HENCHMAN_string_2");
  string sHench3 = GetLocalString(oSelf, "HENCHMAN_string_3");
  string sHench4 = GetLocalString(oSelf, "HENCHMAN_string_4");
  string sHench5 = GetLocalString(oSelf, "HENCHMAN_string_5");
  int iDC = StringToInt(GetLockKeyTag(oSelf)); // Сложность проверки скилла

  if(!GetIsPC(oPC)||GetIsInCombat(oPC)||GetLocalInt(oSelf, "DEACTIVATED"))
      return;

  if(!GetActionMode(oPC, ACTION_MODE_DETECT) && GetLocalInt(oSelf, "ACTION_MODE_DETECT"))
  {
    if (GetIsObjectValid(oHench)) // Хеньчман нас предупреждает, что тут что-то есть
    {
    if(!GetLocalInt(oSelf, "HENCHMAN_SPEAK"))
    {
      SetLocalInt(oSelf, "HENCHMAN_SPEAK", TRUE);
      DelayCommand(0.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_SEARCH)));
      DelayCommand(0.21, AssignCommand(oHench, SpeakString(sHench1)));
    }
    }
    if(GetGameDifficulty() == GAME_DIFFICULTY_EASY || !GetLocalInt(GetModule(), "DEBAG_PC"))
      SendMessageToPC(oPC, "<cу  >ВКЛЮЧИТЕ РЕЖИМ ОБНАРУЖЕНИЯ.</c>");
    return;
  }

  SetLocalInt(oSelf, "DEACTIVATED", TRUE);
  string sResRef = GetLocalString(oSelf, "PLC_ResRef");  // Объект создаваемый
  float f = GetLocalFloat(oSelf, "DISTANCE"); // Расстояние от РС для находки
  if(f==0.0) f = 5.0; // Если нет, то по умолчанию 5 метров радиус
  location lLoc = CreateRandomLocation(oPC, f);
  object oPlc = GetNearestObjectByTag("SECRET_PLC_"+GetTag(oSelf)); // Если конкретное место
  string sNewTag;
  if(oPlc != OBJECT_INVALID)
  {
      lLoc = GetLocation(oPlc);
      sNewTag = GetTag(oPlc);
  }

  if(AutoDC(iDC, SKILL_SEARCH, oPC))
    {
    if(sResRef != "")
    {
        effect eEffect = EffectVisualEffect(VFX_FNF_DISPEL);
        ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eEffect, lLoc, 4.0);
        object oNewPlc = CreateObject(OBJECT_TYPE_PLACEABLE, sResRef, lLoc,0,sNewTag);
        string sRunScript = GetLocalString(oSelf, "RUN_SCRIPT");
        if(sRunScript!="")
        DelayCommand(2.0, ExecuteScript(sRunScript, oNewPlc));
        AssignCommand(oPC, PlayVoiceChat(VOICE_CHAT_LOOKHERE));
        if(sMessage == "Объект + [Текст над РС]") sMessage = "";
        AssignCommand(oPC, SpeakString(sMessage));
        SendMessageToPC(oPC, "<c у >Вы обнаружили секретный объект.</c>");
        AssignCommand(oPC, ClearAllActions());
        AssignCommand(oPC, ActionDoCommand(SetFacingPoint(GetPositionFromLocation(lLoc))));
        DelayCommand(0.3, SetCommandable(FALSE, oPC));
        DelayCommand(2.0, SetCommandable(TRUE, oPC));

        if (GetIsObjectValid(oHench))
        {
          AssignCommand(oHench, ClearAllActions());
          AssignCommand(oHench, SetFacingPoint(GetPositionFromLocation(lLoc)));

          if(GetLocalInt(oSelf, "HENCHMAN_SPEAK"))
          {
            DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_THANKS)));
            DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench2)));
          }
          else
            {
              DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_YES)));
              DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench3)));
            }
      }
    }
    else
        {
          // Если мы забыли написать ResRef предметов, то ошибка
          SendMessageToPC(oPC, "<cу  >ОШИБКА!</c> Не могу создать объект. Нет ResRef-а!");
        }
    }
    else
        {
          if(GetLocalInt(oSelf, "HENCHMAN_SPEAK"))
          {
              AssignCommand(oPC, PlayVoiceChat(VOICE_CHAT_CANTDO));
              AssignCommand(oPC, SpeakString("Ты ошибаешься. Я ничего не нахожу."));
              DelayCommand(3.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_YES)));
              DelayCommand(3.21, AssignCommand(oHench, SpeakString(sHench4)));
              DelayCommand(6.2, AssignCommand(oHench, PlayVoiceChat(VOICE_CHAT_BADIDEA)));
              DelayCommand(6.21, AssignCommand(oHench, SpeakString(sHench5)));

          }
        }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
2_advanced
сообщение Mar 27 2006, 15:11
Сообщение #2093


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

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



NSS
const string _DOOR_RES = "x0_sec_tdoor1";

void chk()
{
    location lWP = GetLocalLocation(OBJECT_SELF, "_DOOR");

    if(GetDistanceBetweenLocations(lWP, GetLocation(OBJECT_SELF)) < 1.0f)
    {
        object oDoor = CreateObject(OBJECT_TYPE_PLACEABLE, _DOOR_RES, lWP);
        ActionResumeConversation(); // возобновляет диалог с того места, где остановился
    }
    else
    {
        if(GetCurrentAction() != ACTION_MOVETOPOINT)
            ActionMoveToLocation(lWP);

        DelayCommand(3.0f, chk());
    }
}

void main()
{
    object oWP = GetWaypointByTag(GetTag(OBJECT_SELF)); // тег вейпоинта = тегу НПС

    if(GetIsObjectValid(oWP))
    {
        ActionPauseConversation(); // прервать диалог до момента создания двери

        SetLocalLocation(OBJECT_SELF, "_DOOR", GetLocation(oWP));
        // можно возвращать НПС на место после диалога..
        SetLocalLocation(OBJECT_SELF, "_ORIG", GetLocation(OBJECT_SELF));

        AssignCommand(OBJECT_SELF, chk());
    }
    else
    {
        // ...
    }
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Mar 28 2006, 00:52
Сообщение #2094


Level 8
***

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



Привет,
Впринципе, почти понял. Пока только один вопрос:
- после содания этой двери, мне нужно на onAreaTransitionClick скрипт поставить.

Я подумал так, мне нужно создать свою дверь мастером с этим самым скриптом, а потом именно ее вызывать? Извините за идиотизм :-\
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 28 2006, 00:54
Сообщение #2095


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

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



QUOTE(Nashman @ Mar 28 2006, 01:52) [snapback]74726[/snapback]
после содания этой двери, мне нужно на onAreaTransitionClick скрипт поставить.

нет, у этой двери нет такой штуки (areatransition это та голубенькая фигулина, на которую кликаешь при переходе меж дверьми). Так что у этой двери на onUse

Дверь сделать, чтобы в палитре была.
скриптом ее в нужном месте создавать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Nashman
сообщение Mar 28 2006, 01:03
Сообщение #2096


Level 8
***

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



Привет,
Лекс, ты уж меня извени, но у меня есть такая штука, сначала идет она.
За ответ спасибо, эжжто то, что мне не хватало, тоесть проэкту (IMG:style_emoticons/kolobok_light/smile.gif) ..
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 28 2006, 08:21
Сообщение #2097


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

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



Скрипт на такую дверь есть в разделе скриптов новичков.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RoHaN
сообщение Mar 28 2006, 17:08
Сообщение #2098


Level 1


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



Превед Кросавчеги. Я вернулся , ну вы чо не рады что ли . Ну и ладно ! У меня вопрос , а не подскажет мне кто-нибудь как сделать так чтобы монстрятник при появлении в локе летел к месту где находится твой перс .
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Mar 28 2006, 18:45
Сообщение #2099


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

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



Ставь точку спавна в том месте где перс может появиться. Или рядом.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lanilor
сообщение Mar 30 2006, 07:49
Сообщение #2100


Level 1


Класс: Волшебник
Характер: Chaotic Neutral
Раса: Полуэльф



Всем Превед!
У меня вопрос: как присвоить нпс'у новый диалог с помощью скрипта. Фишка в том, что старый диалог весьма велик и изобилует скриптами. Новый по размерам не меньше, и тоже с кучей скриптов(20-30 штук). Ставить лок. пременную на все ветки диалога - можно замучиться. Искал что-то вроде "setdialog" - ничего не нашел.
Помогите!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 82 83 84 85 86 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



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