![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3286
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
для сингла не вредная (IMG:style_emoticons/kolobok_light/smile.gif) Ещё какая вредная (IMG:style_emoticons/kolobok_light/smile.gif) 1) захочется переделать модуль под мультиплеер или хотя бы потестить двумя клиентами -> случится пипец; 2) это ухудшает понимание API и механизма исполнения скриптов; 3) захочет скриптер войти в команду шарда или что-нибудь в этом роде -> придётся переучиваться (IMG:style_emoticons/kolobok_light/smile.gif)
Сообщение отредактировал Ilerien - May 27 2010, 13:21 |
![]() ![]()
Сообщение
#3287
|
|
Level 1 Класс: Обыватель Характер: Lawful Neutral Раса: Человек ![]() |
эм...
вот так написала Цитата { object oPC = GetEnteringObject(); SetXP(oPC , 10000); } но теперь при каждом заходе в игру опыт всегда снижается до 10к, до 5 лвла, даже если герой несколько прокачался вперед. как это исправить? (IMG:style_emoticons/kolobok_light/declare.gif) да, игра планируется не одиночная, а на двух-трех человек. Цитата не снимаешь переменную HENCHED. Она в твоей ситуации вообще не нужна, имхо. спасибо, теперь со спутником всё нормально (IMG:style_emoticons/kolobok_light/declare.gif) |
![]()
Сообщение
#3288
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата как это исправить? Neverwinter Script void main()
{ object oPC = GetEnteringObject(); if(GetXP(oPC) < 10000) SetXP(oPC, 10000); } |
![]()
Сообщение
#3289
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Neverwinter Script int nGoldAmount = some_func(); SendMessageToPC(oPlayer, IntToString(nGoldAmount) + " gold to move"); AssignCommand(oPlayer, TakeGoldFromCreature(nGoldAmount, oPlayer, TRUE)); onPlayerDeath, после воскрешения и вообще всё валидное. В сообщении игроку выводится правильное значение, но деньги забираются все, что есть. В чём проблема? Вопрос снят... Сообщение отредактировал greye - May 30 2010, 22:38 |
![]()
Сообщение
#3290
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
Доброе время суток. Сейчас ваяю крафт. Решил сделать некий конструктор. Однако, дабы избежать перегруженности палитры предметов, было решено генерировать предметы полностью динамически. Застопорился только в одном: Как сменить предмету имя и описание? Это вообще возможно из скриптов?
|
![]()
Сообщение
#3291
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
SetName, SetDescription
|
![]()
Сообщение
#3292
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
Спасибо, я балбес, SetName нашел, а вот SetDescription нету. Он в каком-то инклюде?
|
![]()
Сообщение
#3293
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Нет, в версии 1.69 / в плагине Funcs к NWNX.
|
![]()
Сообщение
#3294
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
Чорт, на 1,69 переходить совсем не хочется, много лишнего и с dialog.tlk проблемы. Впрочем, NWNX все равно подключать собирался. Спасибо.
Сообщение отредактировал Batkom - Jun 1 2010, 22:25 |
![]()
Сообщение
#3295
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
SetDescription есть в 1.69.
А NWNX уже сам требует 1.69. |
![]()
Сообщение
#3296
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Чорт, на 1,69 переходить совсем не хочется, много лишнего и с dialog.tlk проблемы. Actually, никаких проблем. Полностью переведённый dialog.tlk для 1.69. А лишнее же всегда можно не использовать, верно?Вернул на место ссылку на плейграунд. Алсо, не первый случай, когда ссылки на плейграунд начинают магическим образом вести на вpг. Достойный способ потешить самолюбие, ничего не скажешь. Сообщение отредактировал Ilerien - Jun 7 2010, 19:13 |
![]()
Сообщение
#3297
|
|
Level 4 ![]() ![]() Класс: Клерик Характер: Lawful Good Раса: Человек ![]() |
Ух-ты!
Вот спасибо. (впрочем, я еще конечно поканителюсь с переходом на 1.69, конечно, не известно, чем это грозит, главное, чтобы с тайлсетом ничего не стряслось) |
![]()
Сообщение
#3298
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Вот один из моих скриптиков, который я использовал как спец-атаку монстра (в моем случае дракона).
Действует он так : 1. Проставляем переменные. 2. Чекаем локацию НПЧ на наличие валидных созданий - врагов. 3. Если враг ,- НПЧ ,- то парализуем его на 10-20 сек. 4. Если враг ПЧ - парализуем на 10-20 сек и колдуем на него заклинание огненного шара. 5. Записываем локальную переменную специальных атак. Может, кому - то понадобится. =) Neverwinter Script ///////////////////////////////////////////////////// ////// ///// ////// // // // ///// // // // // // /// //// ///// ///// ///// //// /// // // // // ///// // // // ////// ///// ////// ///////////////////////////////////////////////////// // Copyright © Rey Brujo, ma-zi-la@hotmail.com // // Created By: ReyBrujo, City Of Masters // // Created On: 06/06/2010 // ///////////////////////////////////////////////////// void main() { object oNPC = OBJECT_SELF; // NPC object oPC = GetFirstPC(); // Player int nHP = (GetCurrentHitPoints() / GetMaxHitPoints())*100; // Hit Points (in (IMG:style_emoticons/kolobok_light/wacko.gif) int nSAtt = GetLocalInt(oNPC, "specatt"); // Special Attack integer int nNHP = 50; if(nHP < nNHP && nSAtt >= 1) { nSAtt -= 1; object oCreature = GetFirstObjectInArea(GetArea(oNPC)); while(GetIsObjectValid(oCreature)) // Check for valid creatures (enemies). If it exists - cast chosen spells/effects. { // NPC // if(GetObjectType(oCreature) == OBJECT_TYPE_CREATURE && GetIsEnemy(oCreature) == TRUE && GetIsPC(oCreature) == FALSE) { ClearAllActions(TRUE); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectParalyze(), oCreature, 10.0+Random(10)); } // PC // if(GetObjectType(oCreature) == OBJECT_TYPE_CREATURE && GetIsEnemy(oCreature) == TRUE && GetIsPC(oCreature) == TRUE) { ClearAllActions(TRUE); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectParalyze(), oCreature, 10.0+Random(10)); ClearAllActions(TRUE); SetFacingPoint(GetPosition(oPC)); ActionDoCommand(ActionCastSpellAtObject(SPELL_FIRE BALL, oPC, METAMAGIC_EMPOWER, TRUE)); ActionWait(0.5); } oCreature = GetNextObjectInArea(GetArea(oNPC)); // Continue checking } SetLocalInt(oNPC, "specatt", nSAtt); // Set number of special attacks } } Тот скрипт, который я выложил в прошлом посте - это только часть моего плана спец атаки. Если кто-то может, подскажите, как сделать, чтобы дракон взлетал, висел немного(можно без висения), пускал несколько огненных шаров (любым способом) и опускался нормально на землю. Я пробовал такое сделать, но мой дракон либо только взлетал и исчезал в облаках (дизаппир-аппир), либо просто взлетал - садился (рассоединенные дизаппир и аппир с клиром действий), либо просто тупил. Еще одно забыл сказать - действие происходит только если у НПК хп меньше чем nNHP % (у меня поставлено 50) И еще одно - не забудьте в переменные НПЧ поставить переменную specatt, которая больше 0. Этот скрипт ставится на хертбит монстра (IMG:style_emoticons/kolobok_light/wacko.gif) |
![]()
Сообщение
#3299
|
|
Level 5 ![]() ![]() Класс: Пьяный Мастер Характер: Chaotic Good Раса: Человек ![]() |
Два варианта:
1. тебе нужно изучить 3д макс и там сделать свою анимацию. 2. На nwn vault я видел хек пак где сделаны летающие драконы, впринципе можно сделать чтобы происходила замена модели - стоящего на лапах, на летящего в воздухе, а потом наоборот. честно говоря боле вариантов я не вижу, потому что функции аппер-дизаппер они по другому работать не могут. Сообщение отредактировал Laajin - Jun 7 2010, 08:10 |
![]()
Сообщение
#3300
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Вот начал делать собственный мультиплеерный модуль. Никак не могу сделать две вещи - скрипт на вход(игрок заходит, его должно перенести на вейпоинт) и скрипт, который бы при создании НПЧ давал им команду атаки ближайшего врага.
Пока что есть вот что: 1. (ОнЕнтер триггера под точкой входа) Neverwinter Script void main() { //////////// MY SCRIPTS //////////// //--------------------------------// //////////////////////////////////// object oPC = GetEnteringObject(); object oGame = GetObjectByTag("GAME"); object oGuard = GetObjectByTag("NW_ELFRANGER001"); object oSieger = GetObjectByTag("NW_DROWCLER001"); int nPlayers = GetLocalInt(oGame, "players"); int nGuards = GetLocalInt(oGame, "guards"); int nSiegers = GetLocalInt(oGame, "siegers"); if(GetIsPC(oPC) == TRUE) { SetLocalInt(oGame, "players", nPlayers+1); //Set number of players to +1 if(nGuards>nSiegers) {//Set number of siegers to +1 JumpToObject(GetWaypointByTag("wp_siegers")); SetStandardFactionReputation(STANDARD_FACTION_HOST ILE, 100, oPC); SetStandardFactionReputation(STANDARD_FACTION_DEFE NDER, 0, oPC); SetLocalInt(oGame, "siegers", nSiegers+1); SpeakString(IntToString(nSiegers)); } else {//Set number of guards to +1 JumpToObject(GetWaypointByTag("wp_guards")); SetStandardFactionReputation(STANDARD_FACTION_HOST ILE, 0, oPC); SetStandardFactionReputation(STANDARD_FACTION_DEFE NDER, 100, oPC); SetLocalInt(oGame, "guards", nGuards+1); SpeakString(IntToString(nGuards)); } ///////// OTHER SCRIPTS ///////// //-----------------------------// ///////////////////////////////// // ITEMS // CreateItemOnObject("potion001", oPC); CreateItemOnObject("potion001", oPC); CreateItemOnObject("potion001", oPC); CreateItemOnObject("potion001", oPC); CreateItemOnObject("potion001", oPC); } } 2. (Хертбит. Инклюд "inc_nearest" просто перенаправляет на "x0_i0_enemy" (чтобы удобнее было искать =) )) Neverwinter Script #include "nw_i0_generic" #include "inc_nearest" void main() { ////////////////////////////////////////// // тут обычные скрипты хертбита // ////////////////////////////////////////// if(GetCurrentAction() != ACTION_ATTACKOBJECT) { ActionAttack(GetNearestEnemy(), TRUE); } } В первом скрипте всё, кроме джамп ту вейпоинт работает нормально. С вейпом проблем вроде-бы нет. А во втором скрипте я долго пытался намутить, один раз что-то получилось, но тогда у мну вылетел тулсет, а я не помню, что сделал. |
![]()
Сообщение
#3301
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
1) Во-первых, джамп в НВНе переносит объект, вызвавший функцию (ты пытаешься перенести триггер). Во-вторых, он сделан криво, перед джампом обязательно вызывать ClearAllActions(TRUE) для нужного объекта. Т. е. в этом случае:
Neverwinter Script AssignCommand(oPC, ClearAllActions(TRUE)); Для непися аналогично.AssignCommand(oPC, JumpToObject(GetWaypointByTag("wp_siegers"))); 2) Я полагаю, эти самые "стандартные скрипты хербита" забивают стек экшенов так, что атака выполняется хз когда (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Ilerien - Jun 8 2010, 18:39 |
![]()
Сообщение
#3302
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
За перенос объекта огромнейшее спасибо=) подействовало. А вот мои чудаки ни в какую не хотят бежать на врага, даже когда в скрипте хертбита ничего кроме атаки нет... тупо стоят, пока я не подойду к ним.
На всякий случай попробую объяснить, как все у меня взаимодействует. Я захожу в игру, наступаю на триггер, меня переносит на одну из сторон(в зависимости от того, кого в игре больше - стражей (которые охраняют замок) или осаждающих). Потом, где-то на краю карты сидит человечек, который в хертбите создает осаждающих в точке их появления. По плану эти осаждающие должны сразу же бежать бить ближайшего врага. А они тупо появляются, и стоят. Хотя они являются вражеской к защитникам фракцией. Проверил отношения фракций - все в норме.. |
![]()
Сообщение
#3303
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата По плану эти осаждающие должны сразу же бежать бить ближайшего врага. А они тупо появляются, и стоят. Хотя они являются вражеской к защитникам фракцией. Посмотреть, что возвращает GetNearest Enemy() и GetCurrentAction().
|
![]()
Сообщение
#3304
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Neverwinter Script // Gets the nearest enemy. Берет ближайшего врага object GetNearestEnemy(object oSource=OBJECT_SELF, int nNth = 1) { return GetNearestCreature(CREATURE_TYPE_REPUTATION, REPUTATION_TYPE_ENEMY, oSource, nNth); } Neverwinter Script // Get the current action (ACTION_*) that oObject is executing. Берет текущее действие которое исполнЯет объект. int GetCurrentAction(object oObject=OBJECT_SELF) Всё! У меня получилось! Вот на что я изменил хертбит: #include "nw_i0_generic" #include "inc_nearest" Neverwinter Script void main() { if(GetCurrentAction() != ACTION_ATTACKOBJECT) { ClearAllActions(); ActionAttack(GetNearestEnemy()); } } После пессив мода они поползли=) |
![]()
Сообщение
#3305
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Посмотреть, что возвращает GetNearest Enemy() и GetCurrentAction(). (IMG:style_emoticons/kolobok_light/smile.gif) Имелось в виду выполнить скрипт:Neverwinter Script object oSelf = OBJECT_SELF; AssignCommand(GetModule(), SpeakString("Action: " + IntToString(GetCurrentAction(oSelf)), TALKVOLUME_SHOUT)); AssignCommand(GetModule(), SpeakString("Nearest enemy: " + GetName(GetNearestEnemy(oSelf)), TALKVOLUME_SHOUT)); Цитата После пессив мода они поползли=) Ну значит мое первое предположение в широком смысле верно - что-то забивает стек экшенов.
Сообщение отредактировал Ilerien - Jun 8 2010, 20:43 |
![]()
Сообщение
#3306
|
|
Level 1 Класс: Страж Тьмы Характер: Lawful Evil Раса: Эльф ![]() |
Доброго времени суток. Боюсь показаться тупым юзером, но у меня не работает встроенный в редактор скрипт "дать награду" что-либо. Не выдаёт ни денег, ни опыта ни вещей. Что у меня неверно? Вот так на данный момент выглядит скрипт:
//:://///////////////////////////////////////////// //:: FileName at_003 //::////////////////////////////////////////////// //::////////////////////////////////////////////// //:: Created By: Script Wizard //:: Created On: 11.06.2010 17:34:41 //::////////////////////////////////////////////// void main() { // Äàòü ãîâîðÿùåìó îïûò GiveXPToCreature(GetPCSpeaker(), 10); } Вместо абракадабры, соответственно " Дать говорящему опыт" |
![]()
Сообщение
#3307
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
маленькая буква "я" в скрипте - древнейшая проблема, о упоминание о которой есть в куче тем.
Убирай русский коммент или, что гораздо лучше, ставь патч Думбо |
![]()
Сообщение
#3308
|
|
Level 1 Класс: Страж Тьмы Характер: Lawful Evil Раса: Эльф ![]() |
Благодарю. Страниц море всё читать - никакого времени не хватит ) Честно пролистал первые две страницы этого раздела, не нашёл )
Пойду разбираться с патчем: как и куда втыкать ) Более чем уверен, что будут ещё вопросы, так что моралььно готовьтесь: я тот ещё чайник )) (IMG:style_emoticons/kolobok_light/crazy.gif) |
![]()
Сообщение
#3309
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Rommantic, есть еще версия для печати и поиск по странице. Плюс, есть скрипты для новичков там всяко разно есть то что ищется. Например, Вот тут.
Neverwinter Script //:://////////////////////////////////////////////
//:: Даем партии ХР //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 18.09.2005 //::////////////////////////////////////////////// #include "nw_i0_tool" void main() { RewardPartyXP(150, GetPCSpeaker()); } |
![]()
Сообщение
#3310
|
|
Level 1 Класс: Страж Тьмы Характер: Lawful Evil Раса: Эльф ![]() |
Вот,кстати, сразу и вопрос. Если мне нужно написать скрипт оценки наличия определённого количества золота у игрока, где пивать количество золота? Пока что выглядит оно вот так:
Neverwinter Script //:://///////////////////////////////////////////// //:: FileName sc_002 //::////////////////////////////////////////////// //::////////////////////////////////////////////// //:: Created By: Script Wizard //:: Created On: 12.06.2010 8:44:20 //::////////////////////////////////////////////// #include "nw_i0_tool" int StartingConditional() { // Удостовериться, что в снаряжении персонажа игрока имеются данные предметы if(!HasItem (GetPCSpeaker(), "NW_IT_GOLD001") ) return FALSE; return TRUE; } Попытался методом тыка, пока что пришёл к такому варианту (компелирует, но не работает): Neverwinter Script //:://///////////////////////////////////////////// //:: FileName sc_002 //::////////////////////////////////////////////// //::////////////////////////////////////////////// //:: Created By: Script Wizard //:: Created On: 12.06.2010 8:44:20 //::////////////////////////////////////////////// #include "nw_i0_tool" int StartingConditional() { // Удостовериться, что в снаряжении персонажа игрока имеются данные предметы if(!HasItem (GetPCSpeaker(), "NW_IT_GOLD001 (1000)") ) return FALSE; return TRUE; } как правильно? (IMG:style_emoticons/kolobok_light/unsure.gif)
Причины изменения: Для скриптов есть тег [nss]
|
![]() ![]() |
Текстовая версия | Сейчас: 2nd May 2025 - 15:45 |