Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
Vhall
А можно ли полностью убрать fog на локации?
Аваддон
Vhall’rafein а смысл biggrin.gif в свойствах визуальных можно и в консоли
DBColl
QUOTE (Аваддон @ Dec 10 2004, 23:30)
Vhall’rafein а смыслв свойствах визуальных можно и в консоли

В визуальных свойствах не уберешь СОВСЕМ. Все равно небольшой туман будет, чтобы не грузить движок прорисовкой дальних объектов.
baskan
Вопрос: Как сделать пометку на карте, что бы ее видели ВСЕ игроки?
Lex
Не понял??? Просто mapnote разве не катит?
MasterMage
Lemegeton пасиб...smile.gif
Хех...новые вопросы возникают по мере ответа на старые....
1. Как ставить постоянную анимацию(т.е. не время, а постоянно... Без перерыва...)?
2. Сделал так, чтобы маг НПС кастовал спел, когда я прохожу(мирный житель...просто якобы тренеруется маг...). Но переходить тригггер, чтобы он это постоянно делал тупо(не интересно...будет как робот)...Можно как-нибудь сделать так, чтобы через равные промежутки(а еще лучше рендомно)он сам кастовал...?
3. Дайте плиз ссылку на статью(если есть), где рассказывается, как писать диалоги со скриптами и сюжет не через мастера....Мастером научился...но хорошего не сделаешь с ним...sad.gif
4. И последний... Пробовал сделать портал(как камень призыва). Думал просто.... Но не нашел у вещи никаких стеков(и ессественно OnUsed).... Как тады написать, чтоб он телепортировал куды надо?????
pilot.gif
Aiwan
QUOTE (MasterMage @ Dec 11 2004, 18:09)
1. Как ставить постоянную анимацию(т.е. не время, а постоянно... Без перерыва...)?

Максимальным числом времени, либо проверкой какой. Например череч хербит bad.gif . Его юзать шибко не следует, это надеюсь знаешь.
QUOTE (MasterMage @ Dec 11 2004, 18:09)
2. Сделал так, чтобы маг НПС кастовал спел, когда я прохожу(мирный житель...просто якобы тренеруется маг...). Но переходить тригггер, чтобы он это постоянно делал тупо(не интересно...будет как робот)...Можно как-нибудь сделать так, чтобы через равные промежутки(а еще лучше рендомно)он сам кастовал...?

Подумай сам, это может быть только через счетчик времени и опять же через какую-то систему отсчета. Гораздо проще и интересней сделать проверку, если увидел РС, то маг кастует закл, либо не кастует. Вот и будет тебе выбор. А если большой объем разных Магов и прочее. То лучше повеь на скрытый плейсебл скрипт на хербит и пусть он сигнализирует Магам и прочим НПС в локе при помощи сигнальных строк в юзердеф слот. Понятно?
QUOTE (MasterMage @ Dec 11 2004, 18:09)
3. Дайте плиз ссылку на статью(если есть), где рассказывается, как писать диалоги со скриптами и сюжет не через мастера....Мастером научился...но хорошего не сделаешь с ним...

Тут есть тема с моей статьей. Скачай я это вопрос разбирал.
QUOTE (MasterMage @ Dec 11 2004, 18:09)
4. И последний... Пробовал сделать портал(как камень призыва). Думал просто.... Но не нашел у вещи никаких стеков(и ессественно OnUsed).... Как тады написать, чтоб он телепортировал куды надо?????

Ставишь у твоего предмета свойство (не помню точно, что то типа OnUsed) там где есть все свойства: заклы, спелы и прочие плюшки. Потом на слот OnActivateItem модуля вешаешь скрипт в которм описываешь что должно произойти и при каких условиях. Примерно так (скрипт я подправил рабочий, ты уж не ругайся мож где ошибси... я главное показать что и как куда):
Neverwinter Script Source
void main()
{
object oItem = GetItemActivated(); // Сам предмет
object oActivator = GetItemActivator(); //Тот кто жмет капу =)
string sRes = GetResRef(oItem);

if (GetTag(oItem) == "ТАГ_ТВОЕГО_itm-a") //Если ТАГ активируемого предмета равен...
{
  object oWPs = GetWaypointByTag("WP_01"); //точка куда слать
  object oWPm = GetWaypointByTag("POST_M");// еще точка, можно сюда
  string sArea = GetTag(GetArea(oActivator));
  if(!GetIsInCombat(oActivator)) //Если не в бою
  {
    if (sArea == "ТАГ_АРЕНЫ_01" || sArea == "ТАГ_АРЕНЫ_02")
    //Просто проверка на арену к примеру
    {
      effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
      effect eBreach = EffectVisualEffect(VFX_IMP_BREACH);
      effect eWord = EffectVisualEffect(VFX_FNF_WORD);
      AssignCommand(oActivator, ClearAllActions());
      DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator));
      DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator));
      DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator));
      DelayCommand(5.5, AssignCommand(oActivator, ActionJumpToObject(oWPm)));
    }
  }
  else
  {
    SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!");
  }
  }
}
MasterMage
Aiwan
Попробую разобраться...но ты пишешь мне, как нормалу, а я пока только еле-еле перевалид за чайника(т.е. понял действия, делай команды, визуал эффекты и т.д. , написал много скриптов, но сейчас разбираюся с IF....Воть biggrin.gif ).... Можно(если не сложно(каламбур?))написать немного по проще(но конечно не совсем уж )wink.gif
MasterMage
Получилось, Айван, портал работает.... Но дело в том, что у мну не получается, чтобы после UseItem вещь оставила метку, чтоб вернуться...sad.gifsad.gifsad.gifsad.gif
Aiwan
Neverwinter Script Source
void main()
{
object oItem = GetItemActivated(); // Сам предмет
object oActivator = GetItemActivator(); //Тот кто жмет капу =)
string sRes = GetResRef(oItem);

if (GetTag(oItem) == "ТАГ_ТВОЕГО_itm-a") //Если ТАГ активируемого предмета равен...
{
  object oWPm = GetWaypointByTag("POST_M");
  string sArea = GetTag(GetArea(oActivator));
  if(!GetIsInCombat(oActivator)) //Если не в бою
  {
    if (!GetLocalInt(oActivator, "USED_PORTAL"))
    {
      SetLocalInt(oActivator, "USED_PORTAL", TRUE);
      //Поставим локалку что мы использовали один раз камешек
      SetLocalLocation(oActivator,"START_POINT", GetLocation(oActivator));
      // Сохраним координаты на самом игроке того места где использовали камень
      effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
      effect eBreach = EffectVisualEffect(VFX_IMP_BREACH);
      effect eWord = EffectVisualEffect(VFX_FNF_WORD);
      AssignCommand(oActivator, ClearAllActions());
      DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator));
      DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator));
      DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator));
      DelayCommand(5.5, AssignCommand(oActivator, ActionJumpToObject(oWPm)));
    }
    if (GetLocalInt(oActivator, "USED_PORTAL"))
    {
      SetLocalInt(oActivator, "USED_PORTAL", FALSE); // Уберем локалку что мы юзали камень
      effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
      effect eBreach = EffectVisualEffect(VFX_IMP_BREACH);
      effect eWord = EffectVisualEffect(VFX_FNF_WORD);
      AssignCommand(oActivator, ClearAllActions());
      DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator));
      DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator));
      DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator));
      DelayCommand(5.5, AssignCommand(oActivator,
      ActionJumpToLocation(GetLocalLocation(oActivator,"START_POINT"))));
      // Отправим в то место где был
    }
  }
  else
  {
    SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!");
  }
  }
}
MasterMage
Во!!Понятно...Спасибо. Неужели я начал понимать IF условия???Кажется да biggrin.gif !
А этот скрипт так и ставится на модульный стек?... Так если, чтобы попасть обратно, нужно вторично использовать камень?Так...так...так...
Aiwan
if - это УСЛОВИЕ ЕСЛИ... и выполняется { вот енто }
Raven
Вопрос - читал в мануале Айвана про плейсовую воду. Возник вопрос - а нафик ? Какое практическое применение плейсовой воды ?
DBColl
QUOTE (Raven @ Dec 13 2004, 12:15)
Вопрос - читал в мануале Айвана про плейсовую воду. Возник вопрос - а нафик ? Какое практическое применение плейсовой воды ?

Хех, очень широкое. В Проклятии Левора мы допустим делали затопленные локации, мелкие пруды между холмов, заполняли ямы в тайлсетах леса, склепа водой... wink.gif
Vhall
Хмм... плэйсовая вода...
А ссылку дадите? biggrin.gif
Friedrich
В HotU, кстати, "плейсовая" вода (лава, лед) добавляется специальным эффектом на невидимый плейсэйбл. dirol.gif
MasterMage
lex: скрипт Айва, приведеный выше был совместными усилиями оптимизирован до следующего (теперь его надо потестить собсна. Кто возьмется?):

Neverwinter Script Source
void JUMP(object oActivator, location Destination)
{
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eBreach = EffectVisualEffect(VFX_IMP_BREACH);
effect eWord = EffectVisualEffect(VFX_FNF_WORD);
AssignCommand(oActivator, ClearAllActions());
AssignCommand(oActivator, SetCommandable(FALSE,oActivator));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator));
DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator));
DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator));
DelayCommand(5.5, AssignCommand(oActivator, JumpToLocation(Destination)));
DelayCommand(6.0, AssignCommand(oActivator, SetCommandable(TRUE,oActivator)));
}
void main()
{
object oItem = GetItemActivated();
object oActivator = GetItemActivator();
string sRes = GetResRef(oItem);

if (GetTag(oItem) == "ТАГ_ТВОЕГО_itm-a")
{
  string sArea = GetTag(GetArea(oActivator));
  if(!GetIsInCombat(oActivator))
  {
    if (!GetLocalInt(oActivator, "USED_PORTAL"))
    {
    DelayCommand(5.0,SetLocalInt(oActivator, "USED_PORTAL", TRUE));
    DelayCommand(5.0,SetLocalLocation(oActivator,"START_POINT", GetLocation(oActivator)));
    JUMP(oActivator,GetLocation(GetWaypointByTag("POST_M")));
    }
    if (GetLocalInt(oActivator, "USED_PORTAL"))
    {
    DelayCommand(5.0,SetLocalInt(oActivator, "USED_PORTAL", FALSE));
    JUMP(oActivator,GetLocalLocation(oActivator,"START_POINT"));
    }
  }
  else
  {
    SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!");
  }
  }
Vhall
Как ни подключаю любой хак с плэйсами - в модуль добавляется только палитра, но не плэйсы. Что я неправильно делаю?
DBColl
QUOTE (Vhall’rafein @ Dec 14 2004, 17:17)
Как ни подключаю любой хак с плэйсами - в модуль добавляется только палитра, но не плэйсы. Что я неправильно делаю?

То есть "палитра, но не плэйсы"?! unsure.gif
Auren
QUOTE (DBColl @ Dec 14 2004, 18:34)
То есть "палитра, но не плэйсы"?! 


В палитре появляются названия плейсов хаковских, а самих маделев нивидна.

QUOTE (Vhall’rafein @ Dec 14 2004, 18:17)
Как ни подключаю любой хак с плэйсами - в модуль добавляется только палитра, но не плэйсы. Что я неправильно делаю?


Скарей всиво там крывые 2daшки.
Vhall
хм... кривые в 10 раз? unsure.gif
Auren
Ну пачитай для каво ани сделаны(для какой версии) или проста глянь с какова ид ани там понаписаны и сравни с оригинальными.
MasterMage
Может я потестю....если время будет(To Lex) biggrin.gif
Добавлено в [mergetime]1103050133[/mergetime]
Не действует!!!
До строчки
Neverwinter Script Source
void JUMP(object oActivator, location Destination)
{
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eBreach = EffectVisualEffect(VFX_IMP_BREACH);
effect eWord = EffectVisualEffect(VFX_FNF_WORD);
AssignCommand(oActivator, ClearAllActions());
AssignCommand(oActivator, SetCommandable(FALSE,oActivator));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator));
DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator));
DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator));
DelayCommand(5.5, AssignCommand(oActivator, JumpToLocation(Destination)));
DelayCommand(6.0, AssignCommand(oActivator, SetCommandable(TRUE,oActivator)));

выполняется, а потом нет....Слишком сложно. Можно было сделать попроще.... biggrin.gif
Lex
хм...тогда так:

void JUMP(object oActivator, location Destination)
{
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eBreach = EffectVisualEffect(VFX_IMP_BREACH);
effect eWord = EffectVisualEffect(VFX_FNF_WORD);
AssignCommand(oActivator, ClearAllActions());
AssignCommand(oActivator, SetCutsceneMode(oActivator,TRUE));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator));
DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator));
DelayCommand(3.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator));
DelayCommand(5.5, AssignCommand(oActivator, ActionJumpToLocation(Destination)));
DelayCommand(6.0, AssignCommand(oActivator, SetCutsceneMode(oActivator,FALSE)));



способов миллион...
Tarron
Народ я сразу хочу извиниться если что не так и не туда напишу
нету трафика смотреть весь форум.
Я делаю модуль для Нашей локальной сети и к сожалению полный ламер swoon.gif в скриптах полный 0. Но это не самое главное респоун монстров я сделал сундуков тоже и вот столкнулся с такой проблемой: Где-то я своими шаловливыми руками сделал так что после убийства ЛЮБОГО НПц или моба на его месте остаеться труп который очень долго лежит и исчезает минут через 5 и самое главное не роняеться лут. Сразу оговорюсь что в свойствах самого создания никакие изменения настрок не помогают.Это где-то глобально применено ко всему модулю.Вот такая вот фигня shout.gif
И еще если кто сможет обьясните как сделать чтобы игроки хотели есть и чтоб эту еду делать я видел тут такой топик но он обсуждает не как а зачем.
Заранее очень благодарю.
MasterMage
Попробую завтра.... Надеюся, не к спеху...smile.gif
Lex
не к спеху... это же тебе надо. :-)
Вообще люблю скриптить и скрипты потом оптимизировать (иногда)
Raven
Дык, мож кто знает - как сделать так, чтобы шмот со временем ломался, т.е. сделать durability ... ?
Tarron
Да я извиняюсь вопрос абсолютно идиотский но не надо считать меня полным ламером ответьте хоть чтонить иначе придеться импортить свои зоны в новый модуль и ваще мучения не оберёщься.
Да перенесите тему в абсолютные глупости плз. black eye.gif
DBColl
QUOTE (Raven @ Dec 16 2004, 10:53)
Дык, мож кто знает - как сделать так, чтобы шмот со временем ломался, т.е. сделать durability ... ?

Вообще эту мысль по-моему реализовывал кто-то из посетителей форума. В ХотУ вроде по событию OnHit в свойствах модуля можно замутить скрипт с простой локальной переменной.
DBColl
QUOTE (Tarron @ Dec 15 2004, 20:32)
Где-то я своими шаловливыми руками сделал так что после убийства ЛЮБОГО НПц или моба на его месте остаеться труп который очень долго лежит и исчезает минут через 5 и самое главное не роняеться лут. Сразу оговорюсь что в свойствах самого создания никакие изменения настрок не помогают.Это где-то глобально применено ко всему модулю.Вот такая вот фигня

Смотри скрипт OnDeath любого персонажа. Найди примерно такую строку:
DelayCommand(nnn.n, DestroyObject(OBJECT_SELF)); // изменить надо этот nnn.n
или еще она может быть в таком виде:
DestroyObject(OBJECT_SELF, nnn.n); // те же самые действия
Raven
Про локальную переменную соглсен... но ведь у игрока бывает много оружий, а на шмот повесить локальную переменную - это будет полны гемморой с этим
DBColl
Почему? unsure.gif В чем проблемы? При рестарте серва локалки на шмоте остаются... В чем проблема-то?
Tarron
Спасибо за совет но всё-же я хочу не чтобы труп исчезал быстро а чтоб он лут ронял или стал ограбляемым потомучто при пропадании трупа мешочек естестно не появляеться труп иногда сразу рядом с собой роняет оружие или щит шмот типа бутылок и тому подобное не роняеться ваще.Надеюсь что понятно обьяснил сорри за тупые вопросы swoon.gif
baskan
Здрасте, у меня тут вопросик возник. Вот есть сундуки, в палитре из которых падает лут до +5(это вроде закладка уникальное), а где скрипт найти лута что бы падали вещи хотовские(больше +5)?
DBColl
Да вопрос совсем не тупой wink.gif. Приведи сюда лучше текст OnDeath скрипта. И еще, если ты хочешь сделать, чтобы оружие выпадало из рук отдельно, мешок с иным - отдельно и труп не исчезал, тебе придется писать самому скрипт. Ведь по стандарту тело исчезает сразу же, оставляя после себя мешок.
Tarron
Да блин скрипт вроде дефолтный
вот посмотри
Neverwinter Script Source
//::///////////////////////////////////////////////
//:: Default:On Death
//:: NW_C2_DEFAULT7
//:: Copyright © 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Shouts to allies that they have been killed
*/

//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Oct 25, 2001
//:://////////////////////////////////////////////
#include "hc_inc_dthcorpse"

//#include "x0_i0_corpses"
#include "NW_I0_GENERIC"
#include "hc_inc"
#include "nw_i0_tool"

void ClearSlot(int iSlotID)
{
    object oItem = GetItemInSlot(iSlotID);
    if (GetIsObjectValid(oItem) && !GetDroppableFlag(oItem))
        DestroyObject(oItem);
}
void main()
{
    object oKiller = GetLastKiller();
    // Get a controlled undead's master
    if(GetLocalString(oKiller, "MY_MASTER_IS") != "") {

        string sName = GetLocalString(oKiller, "MY_MASTER_IS");
        object oPC = GetFirstPC();
        while(GetIsObjectValid(oPC)) {

            if(sName == GetPCPlayerName(oPC)) {
                oKiller = oPC;
            }
            oPC = GetNextPC();
        }
    }
    int nClass = GetLevelByClass(CLASS_TYPE_COMMONER);
    int nAlign = GetAlignmentGoodEvil(OBJECT_SELF);
    if(nClass > 0 && (nAlign == ALIGNMENT_GOOD || nAlign == ALIGNMENT_NEUTRAL))
    {
        AdjustAlignment(oKiller, ALIGNMENT_EVIL, 5);
    }

    SpeakString("NW_I_AM_DEAD", TALKVOLUME_SILENT_TALK);
//Shout Attack my target, only works with the On Spawn In setup
    SpeakString("NW_ATTACK_MY_TARGET", TALKVOLUME_SILENT_TALK);
    if(GetSpawnInCondition(NW_FLAG_DEATH_EVENT))
    {
        SignalEvent(OBJECT_SELF, EventUserDefined(1007));
    }
    else if(GetRacialType(OBJECT_SELF)==RACIAL_TYPE_ANIMAL)
    {
        ExecuteScript("clear_nodrop", OBJECT_SELF);
        SetIsDestroyable(FALSE, FALSE, TRUE);
        DelayCommand(30.0,SetIsDestroyable(TRUE, FALSE, TRUE));
    }
    else
    {
        ExecuteScript("clear_nodrop", OBJECT_SELF);
//        KillAndReplaceLootable(OBJECT_SELF);
        LeaveCorpse();

    }
    if (GetLocalInt(oKiller,"arena"))
        return;

//    if(!GetLocalInt(oMod,"BASEXP")) return;
// Beginning of XP Gen mod:
// By E.G. Hornbostel, aka Whyteshadow
// Created 7/11/2002

    float fCR = GetChallengeRating(OBJECT_SELF);
    int nMonsterXP;


// Get number of party members, and average Party Level

    int nPartyMembers;
    int nPartyLevelSum;
    int nHighestLevel=0;
    float fAvgPartyLevel;

    object oPC = GetFirstFactionMember(oKiller);
    object oKilledArea = GetArea(OBJECT_SELF);
    while(GetIsObjectValid(oPC))
    {
        if(oKilledArea == GetArea(oPC)) nPartyMembers++;
        if(GetIsDM(oPC)) nPartyMembers--;
        else nPartyLevelSum += GetCharacterLevel(oPC);
        if (GetCharacterLevel(oPC)> nHighestLevel)
            nHighestLevel=GetCharacterLevel(oPC);
        oPC = GetNextFactionMember(oKiller, TRUE);
    }

    if (nPartyMembers == 0)
    return;

    fAvgPartyLevel = IntToFloat(nPartyLevelSum) / IntToFloat(nPartyMembers);

    // Bring partylevel up to 3 if less than 3
    if (FloatToInt(fAvgPartyLevel) < 3) fAvgPartyLevel = 3.0;
    PrintString ("party level "+FloatToString(fAvgPartyLevel,3,1));

    // Get the base Monster XP
    if ((FloatToInt(fAvgPartyLevel) <= 6) && (fCR < 1.5))
        nMonsterXP = GetLocalInt(oMod,"BASEXP");
    else
    {
        nMonsterXP = GetLocalInt(oMod,"BASEXP") * FloatToInt(fAvgPartyLevel/2);
        int nDiff = FloatToInt(((fCR < 1.0) ? 1.0 : fCR) - fAvgPartyLevel);
        switch (nDiff)
        {
        case -7:
            nMonsterXP /= 12;
            break;

        case -6:
            nMonsterXP /= 8;
            break;
        case -5:
            nMonsterXP = nMonsterXP * 3 / 16;
            break;
        case -4:
            nMonsterXP /= 4;
            break;
        case -3:
            nMonsterXP /= 3;
            break;
        case -2:
            nMonsterXP /= 2;
            break;
        case -1:
            nMonsterXP = nMonsterXP * 2 / 3;
            break;
        case 0:
            break;
        case 1:
            nMonsterXP = nMonsterXP * 3 / 2;
            break;
        case 2:
            nMonsterXP = nMonsterXP * 3 / 2;
            break;
        case 3:
            nMonsterXP = nMonsterXP * 3 / 2;
            break;
        case 4:
            nMonsterXP *= 2;
            break;
        case 5:
            nMonsterXP *= 2;
            break;
        case 6:
            nMonsterXP *= 2;
            break;
        case 7:
            nMonsterXP *= 3;
            break;
        case 8:
            nMonsterXP *= 3;
            break;
        case 9:
            nMonsterXP *= 3;
            break;
        case 10:
            nMonsterXP *= 4;
            break;
        case 11:
            nMonsterXP *= 4;
            break;
        case 12:
            nMonsterXP *= 4;
            break;
        case 13:
            nMonsterXP *= 5;
            break;
        case 14:
            nMonsterXP *= 5;
            break;
        case 15:
            nMonsterXP *= 5;
            break;
        case 16:
            nMonsterXP *= 6;
            break;
        case 17:
            nMonsterXP *= 6;
            break;
        case 18:
            nMonsterXP *= 6;
            break;
        case 19:
            nMonsterXP *= 7;
            break;
        case 20:
            nMonsterXP *= 7;
            break;
        case 21:
            nMonsterXP *= 7;
            break;
        case 22:
            nMonsterXP *= 8;
            break;
        case 23:
            nMonsterXP *= 8;
            break;
        case 24:
            nMonsterXP *= 8;
            break;
        case 25:
            nMonsterXP *= 9;
            break;
        case 26:
            nMonsterXP *= 9;
            break;
        case 27:
            nMonsterXP *= 9;
            break;
        case 28:
            nMonsterXP *= 10;
            break;
        case 29:
            nMonsterXP *= 10;
            break;
        case 30:
            nMonsterXP *= 10;
            break;
        case 31:
            nMonsterXP *= 11;
            break;
        case 32:
            nMonsterXP *= 11;
            break;
        case 33:
            nMonsterXP *= 11;
            break;
        case 34:
            nMonsterXP *= 12;
            break;
        case 35:
            nMonsterXP *= 12;
            break;
        default:
            nMonsterXP = 0;
        }
    } // if ((FloatToInt(fAvgPartyLevel) < 6) && (fCR < 1.5)) {...} else {

    // Calculations for CR < 1
    if (fCR < 0.76 && nMonsterXP)
    {
        if (fCR <= 0.11)
            nMonsterXP = nMonsterXP / 10;
        else if (fCR <= 0.13)
            nMonsterXP = nMonsterXP / 8;
        else if (fCR <= 0.18)
            nMonsterXP = nMonsterXP / 6;
        else if (fCR <= 0.28)
            nMonsterXP = nMonsterXP / 4;
        else if (fCR <= 0.4)
            nMonsterXP = nMonsterXP / 3;
        else if (fCR <= 0.76)
            nMonsterXP = nMonsterXP /2;
        // Only the CR vs Avg Level table could set nMonsterXP to 0... to fix any
        // round downs that result in 0:

        if (nMonsterXP == 0) nMonsterXP = 1;
    }


    nMonsterXP += GetLocalInt(oMod,"BONUSXP");
    int nCharXP;
    PrintString("Monster XP = "+IntToString(nMonsterXP));
//    int nCharXP = FloatToInt((nMonsterXP * (1 + (0.45*(nPartyMembers-1)))) / nPartyMembers);
    if (nPartyMembers < 5)
    {
        nCharXP = FloatToInt((nMonsterXP*(1+(0.3*(nPartyMembers-1))))/nPartyMembers);
    }
    else
    {
        nCharXP = FloatToInt((nMonsterXP*(1+(0.5*(nPartyMembers-1))))/nPartyMembers);
    }


    if (GetTag(OBJECT_SELF)=="ATS_SAH_DEER001_DEER_0202")
    {
        nCharXP = 0;
    }

    if (GetTag(OBJECT_SELF)=="ATS_SAH_DEER002_DEER_0101")
    {
        nCharXP = 0;
    }

//    if (GetTag(OBJECT_SELF)=="ATS_SAO_BADGER1_BADG_0101")
//    {
//        nCharXP = 0;
//    }


    if (GetTag(OBJECT_SELF)=="ATS_SAO_BAT0001_BBAT_0101")
    {
        nCharXP = 0;
    }
    PrintString("Char XP = "+IntToString(nCharXP));
    oPC = GetFirstFactionMember(oKiller);
    while(GetIsObjectValid(oPC))
    {

        if(!GetIsDM(oPC) && oKilledArea == GetArea(oPC))
        {
            int nCurExp=GetXP(oPC);
            int modXP;
            if (nCharXP>0)
            {
                if(GetHitDice(oPC)<12)
                {
                    modXP=nCharXP;
                    if ((abs(GetHitDice(oPC)-FloatToInt(fAvgPartyLevel))>5) || (nHighestLevel-GetHitDice(oPC)>5))
                        modXP=modXP/4;
                    if (GetPersistentInt(oMod,"SOULFRAG"+GetName(oPC)+GetPCPublicCDKey(oPC)))
                        modXP=modXP/25;
                    if (GetLocalInt(oPC,"dropped_level"))
                    {
                        modXP=0;
                        SendMessageToPC(oPC,"You have lost a level recently. You need to log off and back on again to gain XP.");
                        FloatingTextStringOnCreature("No XP earned. Log to reset.",oPC);
                    }
                    GiveXPToCreature(oPC, modXP);
                    PrintString("Rewarded "+GetName(oPC)+ " XP = "+IntToString(nCharXP));
                }
                else
                {
                    switch (GetHitDice(oPC))
                    {
                        case 12:modXP=nCharXP* 7 / 8;
                                break;
                        case 13:modXP=nCharXP* 13 / 16;
                                break;
                        case 14:modXP=nCharXP* 6 / 8;
                                break;
                        case 15:modXP=nCharXP* 11 / 16;
                                break;
                        case 16:modXP=nCharXP* 5 / 8;
                                break;
                        case 17:modXP=nCharXP* 9 / 16;
                                break;
                        case 18:modXP=nCharXP* 4 / 8;
                                break;
                        case 19:modXP=nCharXP* 7 / 16;
                                break;
                        case 20:modXP=nCharXP* 3 / 8;
                                break;
                        default: modXP=nCharXP* 3 /8;
                                break;
                    }
//                    if (modXP<40)
//                        modXP=40;
                    if (abs(GetHitDice(oPC)-FloatToInt(fAvgPartyLevel))>5 || (nHighestLevel-GetHitDice(oPC)>5))
                        modXP=modXP/4;
                    if (GetPersistentInt(oMod,"SOULFRAG"+GetName(oPC)+GetPCPublicCDKey(oPC)))
                        modXP=modXP/25;
                    if (GetLocalInt(oPC,"dropped_level"))
                    {
                        modXP=0;
                        SendMessageToPC(oPC,"You have lost a level recently. You need to log off and back on again to gain XP.");
                        FloatingTextStringOnCreature("No XP earned. Log to reset.",oPC);
                    }
                    GiveXPToCreature(oPC, modXP);
                    PrintString("Rewarded "+GetName(oPC)+ " XP = "+IntToString(modXP)+ " (level "+IntToString(GetHitDice(oPC))+")");
                }
            }
        }
        oPC = GetNextFactionMember(oKiller, TRUE);
    }
// Destroy all equipped slots
    int iSlotID;
    for (iSlotID = 0; iSlotID < NUM_INVENTORY_SLOTS; iSlotID++) {
        ClearSlot(iSlotID);
    }
    // Destroy all inventory items
    object oItem = GetFirstItemInInventory();
    while (GetIsObjectValid(oItem)) {
        if (!GetDroppableFlag(oItem))
            DestroyObject(oItem);
        oItem = GetNextItemInInventory();
    }
}

Спасибо за то что откликнулись =)
<small>Добавлено в 19:00</small>
Да кстати то что ты предложил очень заманчиво только в скриптах я рублю на уровне собаки - понимаю но написать не могу crazy.gif
Если кто поможет Был бы очень благодарен yahoo.gif
DBColl
Tarron
Да нифига это не дефолтный! Это HCR система походу. Удали этот скрипт из модуля и вставь (напиши ручками в слоте OnDeath!) реальный NW_C2_DEFAULT7.
Tarron
Спасибо=) ну как скрипт сменить я знаю biggrin.gif
кста если искать какогонить энтузиаста который поможет скрипт написать это в скрипты обращаться? unsure.gif
DBColl
Ну... писать за тебя большой скрипт никто не будет. Тебе могут подсказывать что где и как... Но писать тебе придется самому, и призываю тебя садиться разбираться с ними, экспериментировать. Потому как все равно это нужно. Без них не бывает модуля. Это фактически основа.
Raven
Tarron, спроси maxxim`а - он тож на Нордоке вроде... или бери Seviss - он все-таки посовременнее и полегче
baskan
QUOTE (DBColl @ Dec 16 2004, 19:49)
Да вопрос совсем не тупой wink.gif. Приведи сюда лучше текст OnDeath скрипта. И еще, если ты хочешь сделать, чтобы оружие выпадало из рук отдельно, мешок с иным - отдельно и труп не исчезал, тебе придется писать самому скрипт. Ведь по стандарту тело исчезает сразу же, оставляя после себя мешок.

Хм, ты меня вроде не понял(или я тебя?) я скрипт из сундука вешаю на OnDeath моба, и лут падает только до +5, а мне нуна чтобы падал больше +5.
DBColl
Здесь не могу помочь ничем. Скорее всего надо править один из инклюдов...
#include "hc_inc_dthcorpse"
#include "hc_inc"
MasterMage
Neverwinter Script Source
void JUMP(object oActivator, location Destination)
{
effect eShake = EffectVisualEffect(VFX_FNF_SCREEN_SHAKE);
effect eBreach = EffectVisualEffect(VFX_IMP_BREACH);
effect eWord = EffectVisualEffect(VFX_FNF_WORD);
AssignCommand(oActivator, ClearAllActions());
AssignCommand(oActivator, SetCutsceneMode(oActivator,TRUE));
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBreach, oActivator));
DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eWord, oActivator));
DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eShake, oActivator));
DelayCommand(2.5, AssignCommand(oActivator, ActionJumpToLocation(Destination)));
DelayCommand(3.0, AssignCommand(oActivator, SetCutsceneMode(oActivator,FALSE)));

}
void main()
{
object oItem = GetItemActivated();
object oActivator = GetItemActivator();
string sRes = GetResRef(oItem);

if (GetTag(oItem) == "kamen")
{
  string sArea = GetTag(GetArea(oActivator));
  if(!GetIsInCombat(oActivator))
  {
    if (!GetLocalInt(oActivator, "kamen"))
    {
    DelayCommand(2.0,SetLocalInt(oActivator, "kamen", TRUE));
    DelayCommand(2.0,SetLocalLocation(oActivator,"START_POINT", GetLocation(oActivator)));
    DelayCommand(1.5,JUMP(oActivator,GetLocation(GetWaypointByTag("POST_M"))));
    }
    if (GetLocalInt(oActivator, "kamen"))
    {
    DelayCommand(5.0,SetLocalInt(oActivator, "kamen", FALSE));
    DelayCommand(4.9,JUMP(oActivator,GetLocalLocation(oActivator,"START_POINT")));
    }
  }
  else
  {
    SendMessageToPC(oActivator,"Трус!!! Дерись, засранец!");
  }
}
}

Воть....Я просто немного подправил временной интервал и проверил... Скрипт теперь работает...smile.gif (Lex)
Lex
оо..отлично.
Молодец! good.gif
baskan
Есть ли такая команда, что бы у игрока выросли крылья?
MasterMage
Возможно и есть, но эт над думть... swoon.gif
DBColl
По-моему нет. Это рассовая фишка.
Аваддон
QUOTE (DBColl @ Dec 20 2004, 15:06)
По-моему нет. Это рассовая фишка.

Старые песни о главном. Помню такое еще на Риалмсе было. Надо копать Red Drogn Discipline smile.gif
Lemegeton
MasterMage:
QUOTE
Есть ли такая команда, что бы у игрока выросли крылья?

Можно поменять чувака на такого же, заранее созданного, но с крыльями. Скопировать на него все предметы, бла-бла-бла...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.