![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#76
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
QUOTE Этот скрипт кидает кондишен сна на кричу, но не заставляет ее лечь на землю. Ты не прав, он ложится, я выяснил, что он не работает именно на onSpawn. То есть сама функция работает. Странно конечно, что на onSpawn не работает. |
![]()
Сообщение
#77
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Попробуй на onSpawn в скрипте поставить небольшую задержку.
|
![]()
Сообщение
#78
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
Нет не помогает, но складывается такое ощещение, что на оnSpawn не срабатывает именно анимация, что бы он лег, а сам НПС как бы спит, но стоя.
Сообщение отредактировал Milfes - Mar 4 2007, 18:09 |
![]()
Сообщение
#79
|
|
Level 19 ![]() Класс: Воин Характер: Lawful Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
А ты какую задержку ставил? Попробуй поставить две секунды:
NSS DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectSleep(),OBJECT_SELF)); Если сработает, то уменьшай время, чтобы понять какая задержка нужна, ну а если не получицо. Хм... Не судьба ведать пока. (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#80
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
Я вообще 3 секунды ставил. Да я впринципе на диалоге повесил, меня просто удивляет, что на onSpawn не работает. Наверно обсидан так хорошо сделал.
|
![]()
Сообщение
#81
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Такая задержка может не сработать:
NSS DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectSleep(),OBJECT_SELF)); Правильно: NSS effect eSleep; DelayCommand(2.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSleep, OBJECT_SELF)); NSS // Delay aActionToDelay by fSeconds.
// * No return value, but if an error occurs, the log file will contain // "DelayCommand failed.". // It is suggested that functions which create effects should not be used // as parameters to delayed actions. Instead, the effect should be created in the // script and then passed into the action. For example: // effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_MAGICAL); // DelayCommand(fDelay, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget); void DelayCommand(float fSeconds, action aActionToDelay) |
![]()
Сообщение
#82
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
а попробовать анимацией положить его не пробовали?
|
![]()
Сообщение
#83
|
|
Level 1 Класс: Обыватель Характер: Chaotic Neutral Раса: Человек ![]() |
Даже не уверен, возможно ли такое - но как сделать, чтоб при начале кампании, проверялся класс РС, и взависимости от него, грузилась та, или иная область (ну к примеру - выбрал война - начинаешь в казармах, мага - в лаборатории и т.д.)
|
![]()
Сообщение
#84
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
много раз это обсуждалось, скрипт вынесен в Вопросы и Ответу. (там правда было разделение по расе, но суть одна и та же)
|
![]()
Сообщение
#85
|
|
Level 1 Класс: Обыватель Характер: Chaotic Neutral Раса: Человек ![]() |
Это разобрался. Спасибо. А вот теперь сложный вопрос - возможно ли как то скриптами прикрутить такую вещь, как использование предметов на объекте.
Не через диалоги! Перетаскиваешь предмет из инвентаря на НПС\объект и происходит запланированное действие. К примеру порох на костер -> происходит вспышка (пример с потолка). Диалоговая система не особо устраивает - ибо при обладание нужного предмета его использование становится очевидным - так как появляется необходимая строка в диалоге. Додумываться, как следствие, не надо. |
![]()
Сообщение
#86
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Просто перетаскивать не выйдет - предмет просто будет выброшен, но можно добавить к свойствам предмета возможность "юзабельности".
Cast Spell -> Unique Power Результат прописываешь в скрипте "i_ТэгВещи_ac". |
![]()
Сообщение
#87
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Lawful Neutral Раса: Человек ![]() |
QUOTE а попробовать анимацией положить его не пробовали? Анимацией тоже не получается, он ее на onSpawn кажется вообще не воспринимает, так как и у эффекта сна не срабатывает только анимация(НПС не на что не реагирует пока эффект не снять, но стоит). Сообщение отредактировал Milfes - Mar 6 2007, 11:15 |
![]()
Сообщение
#88
|
|
Level 2 ![]() Класс: Фея Характер: Chaotic Good Раса: Фея ![]() |
Nwn2scriptcompiler.exe лежит в корневой папке, но на попытки подсунуть ему .nss не отзывается. Подскажите, как компилировать скрипты без запуска громоздкого тулсета? Нвн2 скрипты не кеширует, можно править их в оверрайде\модуле сохраненном как папка, перезапускать текущий модуль и смотреть результат. Вот только делать бы это без тулсета, который ест ресурсов больше чем сам нвн. |
![]()
Сообщение
#89
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: True Neutral Раса: Эльф ![]() |
Есть ли возможность при помощи скриптов сделать включение/выключение источника света в определенные время суток?
|
![]()
Сообщение
#90
|
|
Level 18 ![]() Класс: Страж Тьмы Характер: True Neutral Раса: Человек МАСТЕР D&D ![]() |
Есть система ручного включения/выключения источников света.
Цитата Есть ли возможность при помощи скриптов сделать включение/выключение источника света в определенные время суток? Может кто из мастеров напишет или выложит уже имеющуюся?
|
![]()
Сообщение
#91
|
|
Level 6 ![]() ![]() Класс: Волшебник Характер: True Neutral Раса: Эльф ![]() |
Предложенный вариант посмотрел, но ничего не понял, так как очень далек от скриптинга и занимаюсь только маппингом (IMG:style_emoticons/kolobok_light/smile.gif) Было бы хорошо, если кто-то напишет скрипт и объяснит как его применить.
|
![]()
Сообщение
#92
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Привет всем,я новичок в создании и использовании скриптов но в создании модулей уже принимаю участие уже 5 лет начиная с нвн1,а теперь уже и осваиваю нвн2 ,и вот мои первые 2 вопроса,заранее прошу неругать если уже были,
просто я искал на них ответы во многих разделах вашего форума и ненашол( Как сделать так чтоб монстры респились,ну то есть воскрешались через некоторое время после смерти? Вот что я испробовал и недобился( открываю свой модуль скажем Area 1 -далее свойства етой ARea1(Properites) Дальше во всех трех строчках(On_heartbeat On_enter On_dead)повставлял все найденые поисковиком,етих строчек скрипты с именем respawn их нашлось семь ШТук!(gr_respawn,gui_death_respawn,gui_death_respawn_self,nw_o0_respawn,x0_o0respawn,x0_o0_repawnset,x2_respawn)вот перечислил те что находилис поисковиком,дак я их все на свойствах локации повставлял в строчки:"On_heartbeat On_enter On_dead" и недобился респа,и на свойствах монстров,тоже в строчки:"On_dead,On_heartbeat",вставлял ети семь стандартных скриптов НВН2,но не один из етих семи скриптов невернул неодного монстра к жизни на заданную точку,а ждал я намного больше шести секунд,респа монстров((( Может не ети скрипты надо выбирать а какой то другой??? или самому прописать? А второй вопрос: как фракцию сменить?(подхожу к люблму обьекту тыкаю и стаю хостаил как ето сделать?),тоесть чтоб пвп шард создать надо чтоб обязательно кто то один был скажем faction:*comoner*,Другой:*hostile* |
![]()
Сообщение
#93
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Sugo77 @ May 2 2007, 20:27) [snapback]107708[/snapback] Вот что я испробовал и недобился( открываю свой модуль скажем Area 1 -далее свойства етой ARea1(Properites) Дальше во всех трех строчках(On_heartbeat On_enter On_dead)повставлял все найденые поисковиком,етих строчек скрипты с именем respawn их нашлось семь ШТук!(gr_respawn,gui_death_respawn,gui_death_respaw n_self,nw_o0_respawn,x0_o0respawn,x0_o0_repawnset, x2_respawn)вот перечислил те что находилис поисковиком,дак я их все на свойствах локации повставлял в строчки:"On_heartbeat On_enter On_dead" и недобился респа,и на свойствах монстров,тоже в строчки:"On_dead,On_heartbeat",вставлял ети семь стандартных скриптов НВН2,но не один из етих семи скриптов невернул неодного монстра к жизни на заданную точку,а ждал я намного больше шести секунд,респа монстров((( Может не ети скрипты надо выбирать а какой то другой??? или самому прописать? оригинально. Впервые встречаю такой способ решения поставленной задачи. Скрипты надо или писать под свои конкретные нужды, или брать готовые и вставлять (возможно модернизируя). Есть специальные уже написанные скриптовые системы для респа монстров. Лучше у шардовиков спросить об этом по подробнее. |
![]()
Сообщение
#94
|
|
Level 11 ![]() Класс: Вор Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] Validor2 ![]() |
по поводу спавна мобов была уже тема
см. тут http://www.city-of-masters.ru/forums/index.php?showtopic=287 там вроде и линки какие есть я, как и раньше, отдаю предпочтение NESS-подобным спавнерам... собственно такой наверное проще самому написать, чем разбираться с чьим то... щас к сожалению доступа к модулю нет, как будет - выложу свой вариант... Цитата А второй вопрос: как фракцию сменить?(подхожу к люблму обьекту тыкаю и стаю хостаил как ето сделать?),тоесть чтоб пвп шард создать надо чтоб обязательно кто то один был скажем faction:*comoner*,Другой:*hostile* не обязательно... кричи из одной фракции замечательно могут бить друг друга (IMG:style_emoticons/kolobok_light/smile.gif) честно говоря точно не помню функции, но попробуй SetIsEnemy()... если не подойдет, посмотри в лексиконе все что с этой функцией связано, наверняка какие либо смежные с ней функции тебе помогут... |
![]()
Сообщение
#95
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Vaness,по предложенной тобой ссылке нет ничего конкретного,неодного примера не инструкций(
Единственное что я уяснил для начало надо хотябы заиметь себе програмкуу Ness какуюто,попробовал поискать в интернете ,ссылки на нее битые некачается( Если у тебя есть рабочие ссылки на ету прогу то вылож плиз или саму прогу скинь плиз на мое мыло если нетрудно sugo3377@mail.ru Кстати в теме с просьбами о написании я также изложил ети 2 просьбы чтоб кто то знаюший в етом деле толк, описал подробно алгоритм, и хотябы один рабочий пример,на респ и фракции я ж еше повторяюсь новичок в етом( но огромное желание научится и добится цели. Вот нашол всеже сайт от куда Несс качается LRJOnline_net - NESS оно не оно? Тут вроде для нвн 1 несс или он всем подходит? Далее куда етот файлик NESS_8_1_3Full.erf нужно устаноить чтоб начать им пользоватся в НВН2 тулсете? Хотелось бы все поподробнее от вас учителей услышать) |
![]()
Сообщение
#96
|
|
Level 11 ![]() Класс: Вор Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] Validor2 ![]() |
щас выложу свой скрипт спавна
суть простая... в локе ставятся вейпоинты с определенным тегом и именем имя имеет вид SP_SGx_SDy_SNz1-z2_SRn_END где x - принимает значение 0 (спавнить конкретного моба) или 1 (спавнить моба из группы) y - задержка между спавнами z1 и z2 - соответственно минимальное и максимальное количество мобов n - на каком максимальном расстоянии от вейпоинта может появиться моб в теге вейпоинта указывается либо тег моба, либо тег группы для спавна это на OnEnter локи * при входе игрока запускается псевдохарбит Neverwinter Script Source void main() { object oArea = GetArea(OBJECT_SELF); object oPC = GetEnteringObject(); if(GetIsDM(oPC)) return; if(GetIsPC(oPC)){ int nCount = GetLocalInt(oArea, "nPlayerCount"); nCount++; SetLocalInt(oArea, "nPlayerCount", nCount); if(GetLocalInt(oArea, "bNeedSpawn")==FALSE){ SetLocalInt(oArea, "bNeedSpawn", TRUE); if(GetLocalInt(oArea, "bNeedClear")==FALSE){ ExecuteScript("vr_spawn_general", oArea); }else{ SetLocalInt(oArea, "bNeedClear", FALSE); } } } } это на OnExit локи * при выходе всех игроков с локи замораживает спавнер, если же выходит моб, то не позволяет ему выйти из локи и возвращает на место спавна Neverwinter Script Source void main() { object oArea = GetArea(OBJECT_SELF); object oPC = GetExitingObject(); if(GetIsDM(oPC)) return; if(GetIsPC(oPC)){ int nCount = GetLocalInt(oArea, "nPlayerCount"); nCount--; SetLocalInt(oArea, "nPlayerCount", nCount); if(nCount<=0){ // no PC in location SetLocalInt(oArea, "bNeedSpawn", FALSE); object oWP; int nSpawnersCount = GetLocalInt(oArea, "nSpawnersCount"); int i; for(i=1; i<=nSpawnersCount; i++){ oWP = GetLocalObject(oArea, "Spawner"+IntToString(i)); if(GetLocalInt(oWP, "nChildCount")>0){ // if any spawner has children SetLocalInt(oArea, "nLastPCExitTime", GetLocalInt(GetObjectByTag("vr_dmhelper"), "nCurrentTime")); SetLocalInt(oArea, "bNeedClear", TRUE); break; } } } }else if(GetIsObjectValid(GetLocalObject(oPC, "parent"))){ //SendMessageToPC(GetFirstPC(), "name="+GetName(oPC)); object oCreature = CreateObject(OBJECT_TYPE_CREATURE, GetResRef(oPC), GetLocalLocation(oPC, "lHomeLocation")); SetLocalLocation(oCreature, "lHomeLocation", GetLocalLocation(oPC, "lHomeLocation")); DeleteLocalInt(oPC, "TotalDamage"); int i; for(i=1;i<=GetLocalInt(oPC, "TotalDamagers");i++){ DeleteLocalObject(oPC, "Damager"+IntToString(i)); DeleteLocalInt(oPC, "Damage"+IntToString(i)); } DeleteLocalInt(oPC, "TotalDamagers"); DeleteLocalInt(oPC, "nPreviousHP"); DeleteLocalObject(oPC, "parent"); DeleteLocalLocation(oPC, "lHomeLocation"); DestroyObject(oPC); } } собственно сам скрипт спавна *void main() - как раз таки тот самый псевдо харбит, который запускается с частотой, указанной в строках AssignCommand(oArea, DelayCommand(10.0, ExecuteScript("vr_spawn_general", oArea))); *void CheckWaypoints(object oArea) - проверяет все спавнпоинты в локи и при необходимости их спавнит *void Spawn(object oWP) - процедура которая непосредственно создает мобов в точках спавна *void StoreSpawns(object oArea) - срабатывает 1 раз за рестарт... задача его в том, чтобы "расшифровать" тег спавнпоинта и занести все данные в локальные переменные *void ClearLocationFromCreatures(object oArea) - в случае необходимости деспавна очищает локацию от мобов Neverwinter Script Source // SPAWN SYSTEM // for NWN Shard "Validor 2" // main script /* Scripted by Vanes */ #include "vr_spawn_groups" #include "vr_config" void CheckWaypoints(object oArea); void Spawn(object oWP); void StoreSpawns(object oArea); void ClearLocationFromCreatures(object oArea); void main() // psevdo heartbeat { object oArea = OBJECT_SELF; if(GetLocalInt(oArea, "bNeedSpawn")==TRUE){ CheckWaypoints(oArea); //SendMessageToPC(GetFirstPC(), "attemting to spawn... "+ GetName(oArea)); AssignCommand(oArea, DelayCommand(10.0, ExecuteScript("vr_spawn_general", oArea))); return; } if(GetLocalInt(oArea, "bNeedClear")==TRUE){ //SendMessageToPC(GetFirstPC(), "attemting to clear... "+ GetName(oArea)); //SendMessageToPC(GetFirstPC(), "nLastPCExitTime = " + IntToString(GetLocalInt(oArea, "nLastPCExitTime"))); //SendMessageToPC(GetFirstPC(), "nCurrentTime = " + IntToString(GetLocalInt(GetObjectByTag("vr_dmhelper"), "nCurrentTime"))); if((GetLocalInt(oArea, "nLastPCExitTime")+SPAWN_CLEAR_LOC_DELAY)<=GetLocalInt(GetObjectByTag("vr_dmhelper"), "nCurrentTime")){ //SendMessageToPC(GetFirstPC(), "clearing... "+ GetName(oArea)); ClearLocationFromCreatures(oArea); SetLocalInt(oArea, "bNeedClear", FALSE); }else{ AssignCommand(oArea, DelayCommand(10.0, ExecuteScript("vr_spawn_general", oArea))); } return; } } void CheckWaypoints(object oArea) // check for WP status (waiting for delay end, // waiting for children death, need pawn now) { if(GetLocalInt(oArea, "bSpawnsStored")==FALSE){ StoreSpawns(oArea); SetLocalInt(oArea, "bSpawnsStored", TRUE); } object oWP; string sName; int nPos, nSpawnDelay, nStartDelay, nCurrentTime; int i; int nSpawnersCount = GetLocalInt(oArea, "nSpawnersCount"); //SendMessageToPC(GetFirstPC(), "nSpawnersCount="+IntToString(nSpawnersCount)); for(i=1; i<=nSpawnersCount; i++){ oWP = GetLocalObject(oArea, "Spawner"+IntToString(i)); sName = GetName(oWP); //SendMessageToPC(GetFirstPC(), "checking WP " + sName); if(GetLocalInt(oWP, "nSpawnDelay")==0){ // first check after module started nPos = FindSubString(sName, "SG"); nSpawnDelay = StringToInt(GetSubString(sName, 5, nPos-6))*60; //int nTime = GetLocalInt(GetObjectByTag("vr_dmhelper"), "nCurrentTime"); //if(nTime!=0){ //SetLocalInt(oWP, "nStartDelay", 60); SetLocalInt(oWP, "nSpawnDelay", nSpawnDelay); //} Spawn(oWP); } if(GetLocalInt(oWP, "nChildCount")<=0){ nStartDelay = GetLocalInt(oWP, "nStartDelay"); //SendMessageToPC(GetFirstPC(), "nStartDelay=" + IntToString(nStartDelay)); nCurrentTime = GetLocalInt(GetObjectByTag("vr_dmhelper"), "nCurrentTime"); //SendMessageToPC(GetFirstPC(), "nCurrentTime=" + IntToString(nCurrentTime)); nSpawnDelay = GetLocalInt(oWP, "nSpawnDelay"); //SendMessageToPC(GetFirstPC(), "nSpawnDelay=" + IntToString(nSpawnDelay)); if(nSpawnDelay<(nCurrentTime-nStartDelay)){ //SendMessageToPC(GetFirstPC(), "delay end, spawning..."); SetLocalInt(oWP, "bSpawnDisturbed", FALSE); Spawn(oWP); }else{ //SendMessageToPC(GetFirstPC(), "waiting for delay end"); } } } } void Spawn(object oWP) { object oCreature; string sTag; int nPos1, nPos2; int n, n1, n2, i, r, r1; int bGroup = FALSE; location lLoc; sTag = GetLocalString(oWP, "sTag"); // for Lexey's Spawn Table //---- SG flag ---- bGroup = GetLocalInt(oWP, "bGroup"); //---- SRn flag ---- r = GetLocalInt(oWP, "r"); location lLocation = GetLocation(oWP); object oArea = GetAreaFromLocation(lLocation); vector vPosition; float fOrientation = GetFacingFromLocation(lLocation); //---- SNn flag ---- n1 = GetLocalInt(oWP, "nMin"); n2 = GetLocalInt(oWP, "nMax"); if(n2!=0){ n = n1+Random(n2-n1)+1; }else{ n = n1; } for(i=1; i<=n; i++){ vPosition = GetPositionFromLocation(lLocation); r1 = Random(r+1); if(d2()==1) r1 *= -1; vPosition.x += r1; r1 = Random(r+1); if(d2()==1) r1 *= -1; vPosition.y += r1; lLoc = Location(oArea, vPosition, fOrientation); if(bGroup==TRUE) sTag = SpawnGroup(oWP); oCreature = CreateObject(OBJECT_TYPE_CREATURE, sTag, lLoc); if(oCreature!=OBJECT_INVALID){ SetLocalInt(oWP, "nChildCount", GetLocalInt(oWP, "nChildCount")+1); SetLocalObject(oCreature, "parent", oWP); SetLocalLocation(oCreature, "lHomeLocation", lLoc); }else{ i--; } } } void StoreSpawns(object oArea) { object oObject = GetFirstObjectInArea(oArea); string sName, s; string sTag; int nPos1, nPos2; int nCount=0; while(oObject!=OBJECT_INVALID){ sName = GetName(oObject); if((GetStringLeft(sName, 2)=="SP")&&(GetObjectType(oObject)==OBJECT_TYPE_WAYPOINT)){ nCount++; SetLocalObject(oArea, "Spawner"+IntToString(nCount), oObject); SetLocalString(oObject, "sTag", GetTag(oObject)); //---- SG flag ---- nPos1 = FindSubString(sName, "SG"); if((nPos1!=-1)&&(StringToInt(GetSubString(sName, nPos1+2, 1))==1)) SetLocalInt(oObject, "bGroup", TRUE); //---- SRn flag ---- nPos1 = FindSubString(sName, "SR"); nPos2 = FindSubString(sName, "END"); SetLocalInt(oObject, "r", StringToInt(GetSubString(sName, nPos1+2, nPos2-nPos1-3))); //---- SNn flag ---- nPos1 = FindSubString(sName, "SN"); nPos2 = FindSubString(sName, "SR"); s = GetSubString(sName, nPos1+2, nPos2-nPos1-3); nPos1 = FindSubString(s, "-"); if(nPos1==-1){ SetLocalInt(oObject, "nMin", StringToInt(s)); SetLocalInt(oObject, "nMax", 0); }else{ SetLocalInt(oObject, "nMin", StringToInt(GetSubString(s, 0, nPos1))); SetLocalInt(oObject, "nMax", StringToInt(GetSubString(s, nPos1+1, GetStringLength(s)-nPos1-1))); } } oObject = GetNextObjectInArea(oArea); } SetLocalInt(oArea, "nSpawnersCount", nCount); } void ClearLocationFromCreatures(object oArea) { string sName; object oWP; object oObject = GetFirstObjectInArea(oArea); while(oObject!=OBJECT_INVALID){ sName = GetName(oObject); oWP = GetLocalObject(oObject, "parent"); if(oWP!=OBJECT_INVALID) DestroyObject(oObject); if((GetStringLeft(sName, 2)=="SP")&&(GetObjectType(oObject)==OBJECT_TYPE_WAYPOINT)){ if(GetLocalInt(oObject, "nChildCount")>0){ SetLocalInt(oObject, "nChildCount", 0); if(GetLocalInt(oObject, "bSpawnDisturbed")){ SetLocalInt(oObject, "nStartDelay", GetLocalInt(GetObjectByTag("vr_dmhelper"), "nCurrentTime")); } } //SendMessageToPC(GetFirstPC(), "b="+IntToString(GetLocalInt(oObject, "bSpawnDisturbed"))); } oObject = GetNextObjectInArea(oArea); } } ну и последнее... скипт, содержащий таблицу групп мобов... Neverwinter Script Source string SpawnGroup(object oWP)
{ string sTag = GetTag(oWP); if(sTag=="vr_lowlvlgrp1"){ switch(d4()){ case 1: return "vr_badger"; case 2: return "vr_rat";; case 3: return "vr_direrat"; case 4: return "vr_bat"; } } if(sTag=="vr_bugbeargrp"){ int nCount = GetLocalInt(oWP, "nChildCount"); if(nCount<1) return "vr_bugbearhero"; if(nCount<2) return "vr_bugbearshaman"; switch(d2()){ case 1: return "vr_bugbear"; case 2: return "vr_bugbeararcher"; } } // ---- !!!! ADD GROUPS OVER THIS LINE !!!! ---- return ""; } Сообщение отредактировал Vanes - May 4 2007, 08:40 |
![]()
Сообщение
#97
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Хех пока никак,новичкам тяжко(IMG:style_emoticons/kolobok_light/smile.gif)
а вот в етой твоей фразе нет ошибки?"в *теге моба* указывается либо тег моба, илбо тег группы для спавна" Может имелось ввиду в теге поинта? ну тоесть вот так:"в *теге поинта* указывается либо тег моба, илбо тег группы для спавна" Да а куда собственно вот етот готовы скрипт вставить мне? в какую строчку? собственно сам скрипт спавна *void main() - как раз таки тот самый псевдо харбит, который запускается с частотой, указанной в строках AssignCommand(oArea, DelayCommand(10.0, ExecuteScript("vr_spawn_general", oArea))); *void CheckWaypoints(object oArea) - проверяет все спавнпоинты в локи и при необходимости их спавнит *void Spawn(object oWP) - процедура которая непосредственно создает мобов в точках спавна *void StoreSpawns(object oArea) - срабатывает 1 раз за рестарт... задача его в том, чтобы "расшифровать" тег спавнпоинта и занести все данные в локальные переменные *void ClearLocationFromCreatures(object oArea) - в случае необходимости деспавна очищает локацию от мобов Neverwinter Script Source // SPAWN SYSTEM // for NWN Shard "Validor 2" // main script /* Scripted by Vanes */ #include "vr_spawn_groups" #include "vr_config" void CheckWaypoints(object oArea); void Spawn(object oWP); void StoreSpawns(object oArea); void ClearLocationFromCreatures(object oArea); и тд |
![]()
Сообщение
#98
|
|
Level 11 ![]() Класс: Вор Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] Validor2 ![]() |
создаешь скрипт с именем vr_spawn_general (именно он запускается в энтере локи, см. ExecuteScript("vr_spawn_general", oArea)(IMG:style_emoticons/kolobok_light/wink3.gif) и все туда вставляешь
|
![]()
Сообщение
#99
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
А еше а как он собственно назватся будет? или просто открываю уже юбой стандартный скрипт нвна и затираю на новый ? а то сам придумал под своим именем шапку Sugo дак несохраняется такое название непринимает его тулсет(
|
![]()
Сообщение
#100
|
|
Level 11 ![]() Класс: Вор Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] Validor2 ![]() |
так и будет называться - vr_spawn_general...
а в теле скрипта должно быть то, что я выше написал... |
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 21:56 |