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

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


diggers
Отправлено: May 24 2007, 19:54


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Epsilon, мои поздравления (IMG:style_emoticons/kolobok_light/smile.gif) Наверное я опоздал с советом, но, в TextAppearThen можно обойтись одним скриптом, который при каждом выполнении увеличивал бы локальную переменную на 1, и по ней определял какой именно пункт меню он сейчас обрабатывает. И ту кучу скриптов в ActionTaken удобнее перенаправить в один скрипт(ExecuteScript(...)), что бы в будущем изменять только его.
И то и то не принципиально, все от моей ненависти к лишним скриптам в модуле и повторению одинакового/похожего кода (IMG:style_emoticons/kolobok_light/smile.gif)

Lex, супернатурал спасает и от того и от другого, а екстраординари как раз снимается рестом, но не в начале реста, как магик, а в конце.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #108552 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: May 16 2007, 08:01


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Neverwinter Script Source
switch(GetRacialType(oPC))
  {
    case RACIAL_TYPE_HUMAN://если хум
    case RACIAL_TYPE_ELF://или эльф, то:
      break;//перейти на конец свитча
    case RACIAL_TYPE_FEY://а если
      GiveXPToCreature(oPC,190000);//тогда сделать то,
      CreateItemOnObject("x0_wspmku002",oPC);//это, и вон то.
      break;//перейти на конец свитча
    default://если RacialType(oPC) не встретился выше то:
      CreateObject(OBJECT_TYPE_CREATURE, "РесРеф обьекта", oSpawn);
  }


Камень возврата.
Neverwinter Script Source
object oItem = GetSpellCastItem();
  if(GetTag(oItem) == "тег вашего камня переноса")
  {
    object oWpTemple = GetWaypointByTag("тег вейпоинта куда переносить");
    if(!GetIsObjectValid(oWpTemple))
    {
      SendMessageToPC(GetFirstPC(),"тег вейпоинта в храме не верный");
      return;
    }
    AssignCommand(oPc,ClearAllActions());
    AssignCommand(oPc,ActionJumpToLocation(GetLocation(oWpTemple)));
    return;
  }
//  добавить это в скрипт nw_s0_light
//  а на камень переноса повесить закл-свет, сколько вам там надо раз в день.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #108279 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: May 12 2007, 16:19


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Цитата
рейтинг 3.6 проголосовало человек: 33

Зря вы это... Плохая статья - так лучше что бы не было никакой?

Цитата
Смешно... вот после этого и появляются "я делаю модуль, а то, что ничего не умею - ерунда".

Лучше что бы не было никаких?

Не потому ли буржуйские модули растут в таких количествах, что линейному Трагидору ставят рейтинг 9, а на наших статьях проверяют не отсеиваются ли там единицы из рейтинга? Кто захочет делать что-либо, если его работу так обосрут и заявят что если бы взялись они, то сделали бы в сто раз лучше чем дурак-автор.
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #108133 · Ответов: 26 · Просмотров: 37,039

diggers
Отправлено: May 6 2007, 18:28


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Neverwinter Script Source
void dohb(object oCre)
{
  SendMessageToPC(GetFirstPC(),GetName(oCre));
  DelayCommand(6.0,dohb(oCre));
}
void main()
{
  dohb(OBJECT_SELF);
  SetIsDestroyable(0,1,1);
  ExecuteScript("nw_c2_default9",OBJECT_SELF);
}

Работает и на труп. Перестает работать если крича удалена DestroyObject() или умерла при SetIsDestroyable(1). Вот этого, про делей, я раньше не знал.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #107828 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: May 5 2007, 18:05


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


А где хартбит сам себя перезапускает?

Neverwinter Script Source
#include "x0_i0_corpses"
object oCreature = GetNearestCreature(CREATURE_TYPE_PLAYER_CHAR, PLAYER_CHAR_IS_PC);
int iUndead;
void getPCNear()

Оно вообще компилируется?

Neverwinter Script Source
return;
}
}

return завершает выполнение текущей функции. Зачем там ретурн, если после него и так ничего нет?

В нвн2, кроме кеширования крич, ничего нового в спавне вроде нет.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #107804 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: May 4 2007, 21:21


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


KillAndReplaceRaiseable(OBJECT_SELF);
Код функции скорее всего описан в библиотеке x0_i0_corpses и можно посмотреть там ее содержимое.
Думаю она не слишком сложная и ее легко переписать для конкретной ситуации.

Если надо поднять целую комнату зомби то можно сделать это 1им запуском своего скрипта, а запускать его когда игрок наступит на триггер-войдет в комнату.

Если надо поднимать кучу одиночных зомби, то можно, как в onHeartBeat=df_slfres01, повесить на хартбит плейсибла поиск игрока и проверку растояния. Это технически очень просто, ни триггеров, ничего не надо, но хартбит и проверки растояния едят ресурсы сервера и если таких плейсиблов будет десятков 5 то лучше сделать 1ым способом(триггерами), иначе будут тормоза.

Цитата
проблема с DestroyObject: если его нет, то существо каждые 6сек полностью востанавливается

Опять же, посмотри что за
RaiseCorpse(oTarget,VFX_IMP_RAISE_DEAD,TRUE);
в той же библиотеке, и поправь как тебе надо.
Должен удаляться плейсибл, и на его месте создаваться зомби. Когда плейсибл удалится, его хартбит-скрипт перестанет работать.
Может там задержка, и спавн зомби происходит когда плейсибла-трупа уже нет, и скрипт не может найти куда ставить зомби?

Вот в этой теме как раз сейчас о спавне речь.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #107796 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: May 4 2007, 20:41


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Цитата
Помираю хочу научится респу,уже всю ету неделю пробую делать и никак блин(

Напиши свой. Создай пустой модуль, назови его гордо - RespBySugoMod

Соспавни монстра в точке, на пустой локации. Как - см скрипты Vanesа.

Соспавнишь, тогда(И только тогда. На этом этапе уже другие сложности, и с самим спавном у тебя затруднений уже быть не должно. Иначе потонешь в проблемах и забьешь на это дело), соспавнишь несколько монстров, по хитрой системе. Что бы спавнились разные мобы, разное количество и можно было всем этим управлять. Что бы спавнились, нападали, что бы все было нормально в маштабе 1 спавна. Как - посмотришь там же.

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

А таким шаманством, тыкая то, незнаю что, незнаю куда, можно и за полгода ничего не сделать.
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #107795 · Ответов: 336 · Просмотров: 219,514

diggers
Отправлено: Apr 27 2007, 21:55


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Нет, спеллом это становится только если выполняется из скрипта NW_S0_RayFrost.nss.
Строки:
Neverwinter Script Source
object oTarget = GetSpellTargetObject();
    int nMetaMagic = GetMetaMagicFeat();
    int nCasterLevel = GetCasterLevel(OBJECT_SELF);

из другого скрипта работать не будут, и OBJECT_SELF из триггера это, вроде, сам триггер. Наступившего получишь через GetEnteringObject();

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

Цикличное повторение: повесь виз. эффект на хартбит-6сек периодич, или возми из стрелы мелфа-любая периодичность.
Цитата
В оригинальной игре они часто встречаются

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

Скорее всего ты не прописал resref своему зомби. Прописать его теперь можно скопировав объект. По тегу скриптами ищутся существующие объекты, по ресрефу создаются новые.

Цитата
Наступившего получишь через

Если тебе не нужен наступивший, то запускать это можно при создании модуля. Про триггер я писал - думал ты хочешь сделать ловушку, атакующую игрока, как в сингле.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #107585 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: Apr 27 2007, 13:06


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Цитата
Нашёл я очень перспективный скрипт.

Worldowner, но мы то его не нашли. Выложи его сюда(хотя бы ту часть, с которой сам работаешь), иначе вообще нет смысла его упоминать.

Тварь стандартная, или ты сам ее сделал?

Цитата
как делаются эффекты, когда вещи вроде как кастуют заклинания?


Neverwinter Script Source
//:: Ray of Frost
//:: [NW_S0_RayFrost.nss]
//:: Copyright © 2000 Bioware Corp.
#include "NW_I0_SPELLS"
#include "x2_inc_spellhook"
void main(){
    if (!X2PreSpellCastCode()) return;
    object oTarget = GetSpellTargetObject();
    int nMetaMagic = GetMetaMagicFeat();
    int nCasterLevel = GetCasterLevel(OBJECT_SELF);
    int nDam = d4(1) + 1;
    effect eDam;
    effect eVis = EffectVisualEffect(VFX_IMP_FROST_S);
    effect eRay = EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_HAND);
    if(!GetIsReactionTypeFriendly(oTarget))
    {
        SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RAY_OF_FROST));
        eRay = EffectBeam(VFX_BEAM_COLD, OBJECT_SELF, BODY_NODE_HAND);
        if(!MyResistSpell(OBJECT_SELF, oTarget))
        {
            if (nMetaMagic == METAMAGIC_MAXIMIZE)nDam = 5;
            else if (nMetaMagic == METAMAGIC_EMPOWER)
                  nDam = nDam + nDam/2;
            eDam = EffectDamage(nDam, DAMAGE_TYPE_COLD);
            //Apply the VFX impact and damage effect
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget);
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
        }
    }
    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eRay, oTarget, 1.7);
}


Вместо существ подставь плейсиблы. Запускай когда игрок наступит на триггер.


Lex, если хочешь выделить ссылку, то важен не размер, а сам текст:
мануал
vs
мануал можно посмотреть здесь.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #107567 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: Apr 18 2007, 20:32


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Цитата
Почему когда надо разбить завал (где-то после Родника Филина) взорвать бомбы может только Кара?

Как же я прошел то место вообще без нее? Не обратил внимание как именно, но про то, что она их поджигает, я узнал только потом.

Почитал прохождение. Оказывается можно сделать и что бы Бишоп не сбежал, и в конце можно оставить его в партии. И голема можно оставить, даже если Бишоп предаст. И Нишку.
Феничек интересных много, но по-моему 2ого прохождения они не стоят.

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

Цитата
"Пойди и арестуй всех членов банды Муар, коррумпированых стражников и ещё кого нибудь".
Убивает сама формулировка

Да, есть в последнее время тенденция, использовать внеролевые\внесюжетные фразы в диалогах. И не только в нвн. Сейчас смотрю 2ой спеллфорс: "Ты хочешь что бы я поверил предателю-полудракону и темному эльфу? Хмм а ты что, командер? Слушай, у нас командера убили, а под стенами орки, хотят зажарить наших жен и детей... Так что... ПОУПРАВЛЯЙ КА ВСЕМИ НАШИМИ ВОЙСКАМИ, и если что, я тебе поверю". Может разработчики ЦРПГ коллективно тупеют? Или просто бесятся с жиру... Зеленого жиру...

Хотя в нвн это можно объяснить системой днд. В Морровинде\Фолауте(вот во что можно было Играть, а не проходить) в начале персонаж коммонер-это основа,сильный ствол сюжетного дуба. А к концу появляются различия по гильдиям\фракциям\результатам квестов-ветви из ствола и из других ветвей. Сюжет там возможно даже не богаче, но смотрится это намного лучше, логичнее, и ощущаются результаты своих действий, принятых решений.
Дндшные элайменты, помноженные на огромное количество классов, некоторые из которых сами разработчики не знают как отыгрывать, тк придумана система не ими, а другие можно отыгрывать по разному даже с одинаковым элайментом - переворачивают это дерево кверху ногами. Все запасы таланта и времени разработчики потратят на то, что бы все это увязать, и венчает эту конструкцию... извините, пенек.
Конструкция получается сложная, но игрок то всеравно видит пенек, и проходить много раз, что бы все посмотреть его уже не тянет...

С другой стороны не все так плохо. К 3им героям, AoW1\2 выходили неофициальные аддоны, по сложности сравнимые с самой игрой, причем там не было даже подобия тулсета. К старым 3дЕкшенам заново писались движки под opengl(Хексен1 на DoomsDay просто шедевр). И нвн2 так же доведут, просто должно пройти время, возможно несколько лет... Разочаруются в чем-то новом и вернутся к старому нвн2 (IMG:style_emoticons/kolobok_light/biggrin.gif)


Цитата
и вернутся в настоящие.

Не помнящий истории обречен на повторение чужих ошибок©
  Форум: Neverwinter Nights 2 · Просмотр сообщения: #107300 · Ответов: 510 · Просмотров: 141,085

diggers
Отправлено: Apr 16 2007, 18:23


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Neverwinter Script Source
// Returns Item property Bonus Feat.  You need to specify the the feat
// constant(IP_CONST_FEAT_*).
itemproperty ItemPropertyBonusFeat(int nFeat)


А еще IP_CONST_FEAT_feat_keen_sence не существует в природе, как и еще многих. А иначе чем с вещи, добавить фит никак.
Это тебе надо в нвн2, там addfeat(nFeat,oPc); removefeat(nFeat,oPc); на персонажа. (IMG:style_emoticons/kolobok_light/rolleyes.gif)
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #107183 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: Apr 13 2007, 20:38


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Neverwinter Script Source
//:: Keen Edge
//:: X2_S0_KeenEdge
//:: Copyright © 2001 Bioware Corp.
#include "nw_i0_spells"
#include "x2_i0_spells"
#include "x2_inc_spellhook"
void  AddKeenEffectToWeapon(object oMyWeapon, float fDuration)
{
   IPSafeAddItemProperty(oMyWeapon,ItemPropertyKeen(), fDuration, X2_IP_ADDPROP_POLICY_KEEP_EXISTING ,TRUE,TRUE);
}
void main()
{
    if (!X2PreSpellCastCode())
        return;
    effect eVis = EffectVisualEffect(VFX_IMP_SUPER_HEROISM);
    effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
    int nDuration = 10 * GetCasterLevel(OBJECT_SELF);
    int nMetaMagic = GetMetaMagicFeat();
     object oMyWeapon   =  IPGetTargetedOrEquippedMeleeWeapon();
    if (nMetaMagic == METAMAGIC_EXTEND)
        nDuration = nDuration * 2; //Duration is +100%
    if(GetIsObjectValid(oMyWeapon) )
    {
        SignalEvent(oMyWeapon, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE));
        if (GetSlashingWeapon(oMyWeapon))
        {
            if (nDuration>0)
            {
                ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, GetItemPossessor(oMyWeapon));
                ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eDur, GetItemPossessor(oMyWeapon), TurnsToSeconds(nDuration));
                AddKeenEffectToWeapon(oMyWeapon, TurnsToSeconds(nDuration));
            }
        }
        else
          FloatingTextStrRefOnCreature(83621, OBJECT_SELF); // not a slashing weapon
     }
     else
          FloatingTextStrRefOnCreature(83615, OBJECT_SELF);
}


Учись использовать то что уже есть. Скрипты спеллов можно найти в spells.2da

Уровень аи можно увеличить SetAILevel(...);
возможно поможет. По умолчанию минимальный, не использует даже нок.

Где-то на этом форуме спрашивали как сделать монстров-магов умнее, возможно это поможет и там. Но вряд-ли.
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #107087 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: Apr 12 2007, 11:41


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


Можно ли сохранить лог чата в фаил?
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #107028 · Ответов: 235 · Просмотров: 191,838

diggers
Отправлено: Apr 5 2007, 01:10


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


DURATION_TYPE_PERMANENT это разновидность DURATION_TYPE_TEMPORARY, только при PERMANENT таймер эффекта вообще не крутится, то есть эффект будет держаться вечно(пока не будет отдиспелен). То есть, точнее:
разница между INSTANT и (PERMANENT\TEMPORARY) весьма зыбкая..

Вместо таких громоздких констант удобнее использовать их значения:
DURATION_TYPE_INSTANT = 0
DURATION_TYPE_TEMPORARY = 1
DURATION_TYPE_PERMANENT = 2

В ApplyEffectToObject(1,eACDodg,oPC,1.0);
используется TEMPORARY(первый параметр) на длительность __1 сек__(4ый параметр).

SendMessageToPC(oPC,"TEST");
Для отладки лучше всегда использовать:
SendMessageToPC(GetFirstPC(),"TEST");
а если бы Teranozavr_REX использовал
SendMessageToPC(GetFirstPC(),"debug:"+GetName(oPC));
то потратил бы на отладку всего пару минут. Сразу понял бы где ошибка.

Если отлаживать надо много мест в скрипте, то лучше вывод сообщений отладки сделать через свою функцию:
Neverwinter Script Source
#include "......."
void debugm(str string){
  SendMessageToPC(GetFirstPC(),"debug: "+str);
}
void main()
{
...
debugm("messaga tyt");
...
}

Тогда глаза не будут так разбегаться от обилия кода. Кому как, мне вынос кусков кода в функции сильно помогает(где это возможно).
  Форум: Neverwinter Nights Aurora Toolset · Просмотр сообщения: #106824 · Ответов: 5109 · Просмотров: 859,339

diggers
Отправлено: Mar 21 2007, 23:52


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474


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

Вот наверное причина существования эльфийских субрас. Они живут обособленно, и живут так веками, по этому накапливают уникальные черты.
Не думаю что минус интеллекта негра даже близко сравним с минусом интеллекта лесного эльфа, и тем более не думаю что лесной эльф обиделся бы на такую характеристику. Где-то я читал как индейцы(прототип эльфов в нашем мире, на мой скромный взгляд) отзываются о белых "я их просто не понимаю, по моему они все сумасшедшие, все время куда-то бегут, и сами не знают зачем и чего хотят". Вот мнение лесного эльфа о бонусе интеллекта других рас.

Про амазонок-полудроу я читал в книжке про Халрууа. Называется Маг-гончая(magehound). Книга первая из серии. Автора и полного названия не помню, но и этого хватит что бы найти поиском.

Раскажите про дварфов, кто знает. По моему у них это все не так и сабрасы живут в перемешку, исключая только дуэргаров, горных дварфов и изгнанников.
  Форум: Neverwinter Nights 2 · Просмотр сообщения: #106076 · Ответов: 20 · Просмотров: 26,088

diggers
Отправлено: Mar 19 2007, 21:36


Level 2
*

Группа: Candidate
Сообщений: 17
Регистрация: 18.03.2007
Пользователь №: 4,474



Nwn2scriptcompiler.exe лежит в корневой папке, но на попытки подсунуть ему .nss не отзывается. Подскажите, как компилировать скрипты без запуска громоздкого тулсета?

Нвн2 скрипты не кеширует, можно править их в оверрайде\модуле сохраненном как папка, перезапускать текущий модуль и смотреть результат.
Вот только делать бы это без тулсета, который ест ресурсов больше чем сам нвн.
  Форум: Neverwinter Nights 2 Obsidian Toolset · Просмотр сообщения: #105966 · Ответов: 336 · Просмотров: 219,514


Есть новые сообщения  Открытая тема (есть новые ответы)
Нет новых сообщений  Открытая тема (нет новых ответов)
Горячая тема (есть новые сообщения)  Горячая тема (есть новые ответы)
Горячая тема (нет новых сообщений)  Горячая тема (нет новых ответов)
Опрос (есть новые голоса)  Опрос (есть новые голоса)
Опрос (нет новых голосов)  Опрос (нет новых голосов)
Тема закрыта  Закрытая тема
Тема перемещена  Тема перемещена
 

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