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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
14 страниц V  « < 10 11 12 13 14 >  
Ответить в эту темуОткрыть новую тему
> Скрипты: Все вопросы, Алгоритмы, оптимизация, особености и хитрости в скриптинге
GoodLuc
сообщение Jun 24 2010, 23:22
Сообщение #276


Level 2
*

Класс: Волшебник
Характер: Neutral Good
Раса: Человек



Цитата
Все это довольно подробно описано в разделе Кастом Контент в категории тулсета первого НВН

А где именно?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 27 2010, 01:21
Сообщение #277


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

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



где-то в этой теме: 2ДА таблицы
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
PaiNt
сообщение Jul 15 2010, 10:20
Сообщение #278


Level 8
***

Класс: Псионик
Характер: Chaotic Neutral
Раса: Хафлинг



Хотел поделится скриптом строкового массива, может мне бы его оптимизировали..


Neverwinter Script


Сообщение отредактировал PaiNt - Sep 24 2010, 06:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jul 15 2010, 18:40
Сообщение #279


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



Neverwinter Script
if(GetStringLength(sDevider)!=1) sDevider=",";

Ага, незадокумментированная фича!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
PaiNt
сообщение Jul 16 2010, 01:53
Сообщение #280


Level 8
***

Класс: Псионик
Характер: Chaotic Neutral
Раса: Хафлинг



Цитата(azathoth @ Jul 16 2010, 01:40) *
Neverwinter Script
if(GetStringLength(sDevider)!=1) sDevider=",";

Ага, незадокумментированная фича!

Да, (IMG:style_emoticons/kolobok_light/smile.gif) вот бы вспомнить как вообще все это работает (IMG:style_emoticons/kolobok_light/smile.gif)

Поидее функция позволяяет добавлять элемент в конец массива (удлинять массив).
Как и было замечено разделитель предусматривается только односимвольный.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Jul 16 2010, 08:35
Сообщение #281


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

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Нежить
NWN: Скриптинг [Sn]



Цитата
вот бы вспомнить как вообще все это работает

ну уж даже если ты не вспомнишь, то вряд ли тут найдутся добровольцы сами разобраться и ещё оптимизировать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
liantey
сообщение Aug 11 2010, 12:51
Сообщение #282


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



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

п.с. я не чужд программированию и т.д. т.п., но синтаксиса тулсета не знаю. И на русском ничего не нашел. (А с английским я провожусь не один месяц...)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Aug 12 2010, 08:44
Сообщение #283


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

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



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

Более менее приличные гайды есть на английском. Но тоже не фонтан, если честно. Начни изучение с ковыряния уже готовых скриптов (точно зная что они делают), потом пробуй крутить параметры и оценивать результаты. Потом небольшая переделка. И тд. Функции лучше всего изучаются именно так, когда их использовать пытаешься.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lorendroll
сообщение Aug 12 2010, 17:04
Сообщение #284


Level 9
***

Класс: Волшебник
Характер: Neutral Good
Раса: Эльф



Мне в своё время очень помогли ресурсы www.nwnlexicon.com / nwn1.nwn2lexicon.com и nwn2.wikia.com. Легко переводятся при помощи Google Translate, хотя там довольно просто все написано и так.
А в самом начале мне жутко помогла тулза под названием ScriptGen. Разбирая то, как она генерит скрипты, можно быстро научиться приемам работы.

Сообщение отредактировал Lorendroll - Aug 12 2010, 17:05
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DilanZendal
сообщение Aug 14 2010, 15:35
Сообщение #285


Level 2
*

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Человек



Есть у Священника заклинание 4-го круга, называется "Декламация". Действует на всех союзников, давая бонус к атаке, спасброскам и КЗ +2, если божество у цели то же, что у заклинателя, то +3.
Выглядит так:

Neverwinter Script
#include "nwn2_inc_spells"


#include "x2_inc_spellhook"

void main()
{
    if (!X2PreSpellCastCode())
    {    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

    // Declare major variables
    object oCaster = OBJECT_SELF;
    int nCasterLvl = GetCasterLevel(oCaster);
    float fDuration = RoundsToSeconds(nCasterLvl);
    fDuration = ApplyMetamagicDurationMods(fDuration);
    int nDurType = ApplyMetamagicDurationTypeMods(DURATION_TYPE_TEMPO
RARY);
    location lTarget = GetLocation(oCaster);

    // effects
    effect eAC;
    effect eAttack;
    effect eSave;
    effect eVis = EffectVisualEffect(VFX_DUR_SPELL_RECITATION);
    effect eLink;
   
    // find the first target
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_VAST, lTarget, TRUE, OBJECT_TYPE_CREATURE);
   
    while (GetIsObjectValid(oTarget)) {
       if (spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, oCaster)) {
      
          //Fire cast spell at event for the specified target
          SignalEvent(oTarget, EventSpellCastAt(oCaster, GetSpellId(), FALSE));
         
          int nBonus = 2;
          if (GetStringLowerCase(GetDeity(oTarget)) == GetStringLowerCase(GetDeity(oCaster))) {
             nBonus = 3;
          }
          eAC = EffectACIncrease(nBonus, AC_DODGE_BONUS, AC_VS_DAMAGE_TYPE_ALL);
          eAttack = EffectAttackIncrease(nBonus);
          eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, nBonus, SAVING_THROW_TYPE_ALL);
          eLink = EffectLinkEffects(eAC, eAttack);
          eLink = EffectLinkEffects(eLink, eSave);
          eLink = EffectLinkEffects(eLink, eVis);
      
          RemoveEffectsFromSpell(oTarget, GetSpellId());
      
             //Apply the VFX impact and effects
             ApplyEffectToObject(nDurType, eLink, oTarget, fDuration);
       }
       oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_VAST, lTarget, TRUE, OBJECT_TYPE_CREATURE);
    }      
}



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

Сообщение отредактировал DilanZendal - Aug 14 2010, 15:46
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Aug 14 2010, 19:44
Сообщение #286


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

Класс: Обыватель
Характер: True Neutral
Раса: Человек
NWN: Модмейкер
Начало Войны



Цитата(DilanZendal @ Aug 14 2010, 16:35) *
Помогите поправить, пожалуйста. Нужно чтобы под действие заклинания попадали только дружественные аутсайдеры, плюс чтобы не было бонуса для них, если божество совпадает с божеством заклинателя. Как это сделать?

вроде так
Neverwinter Script
#include "nwn2_inc_spells"


#include "x2_inc_spellhook"

void main()
{
    if (!X2PreSpellCastCode())
    {    // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
        return;
    }

    // Declare major variables
    object oCaster = OBJECT_SELF;
    int nCasterLvl = GetCasterLevel(oCaster);
    float fDuration = RoundsToSeconds(nCasterLvl);
    fDuration = ApplyMetamagicDurationMods(fDuration);
    int nDurType = ApplyMetamagicDurationTypeMods(DURATION_TYPE_TEMPO
RARY);
    location lTarget = GetLocation(oCaster);

    // effects
    effect eAC;
    effect eAttack;
    effect eSave;
    effect eVis = EffectVisualEffect(VFX_DUR_SPELL_RECITATION);
    effect eLink;
   
    // find the first target
    object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_VAST, lTarget, TRUE, OBJECT_TYPE_CREATURE);
   
    while (GetIsObjectValid(oTarget)) {
      if (spellsIsTarget(oTarget, SPELL_TARGET_ALLALLIES, oCaster)) {
     
          //Fire cast spell at event for the specified target
          SignalEvent(oTarget, EventSpellCastAt(oCaster, GetSpellId(), FALSE));
         
          int nBonus = 2;
          /*if (GetStringLowerCase(GetDeity(oTarget)) == GetStringLowerCase(GetDeity(oCaster))) {
            nBonus = 3;
          } */

          eAC = EffectACIncrease(nBonus, AC_DODGE_BONUS, AC_VS_DAMAGE_TYPE_ALL);
          eAttack = EffectAttackIncrease(nBonus);
          eSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, nBonus, SAVING_THROW_TYPE_ALL);
          eLink = EffectLinkEffects(eAC, eAttack);
          eLink = EffectLinkEffects(eLink, eSave);
          eLink = EffectLinkEffects(eLink, eVis);
     
          RemoveEffectsFromSpell(oTarget, GetSpellId());
     
            //Apply the VFX impact and effects
          if ((GetRacialType(oTarget)==RACIAL_TYPE_OUTSIDER)&&(!GetIsEnemy(oTarget)))
            ApplyEffectToObject(nDurType, eLink, oTarget, fDuration);
      }
      oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_VAST, lTarget, TRUE, OBJECT_TYPE_CREATURE);
    }     
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DilanZendal
сообщение Sep 9 2010, 12:54
Сообщение #287


Level 2
*

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Человек



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

Neverwinter Script
void main()
{
    int nWisdomBonus  = GetAbilityModifier(ABILITY_WISDOM);
    int nDuration = 5 + GetAbilityModifier(ABILITY_WISDOM);
    int nBonus = nWisdomBonus;

    effect eBonAttack = EffectAttackIncrease(nBonus);
    effect eBonDamFire = EffectDamageIncrease(nBonus, DAMAGE_TYPE_FIRE);
    effect eDodgeAc = EffectACIncrease(nBonus, AC_DODGE_BONUS)
    effect eFists = EffectVisualEffect(VFX_DUR_SACRED_FLAMES);
    effect eBody = EffectVisualEffect(VFX_DUR_INNER_ARMOR);

    effect eLink = EffectLinkEffects(eBonAttack, eBonDamPhysic);
    eLink = EffectLinkEffects(eLink, eDodgeAc);
    eLink = EffectLinkEffects(eLink, eFists);
    eLink = EffectLinkEffects(eLink, eBody);

    ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, OBJECT_SELF, RoundsToSeconds(nDuration));
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Merkuta
сообщение Sep 9 2010, 14:03
Сообщение #288


Level 3
*

Класс: Воин
Характер: Chaotic Good
Раса: Человек



А у тебя редактор разве не указывает строчку, в которой допущена ошибка? Всего-то точки с запятой нет вот здесь: effect eDodgeAc = EffectACIncrease(nBonus, AC_DODGE_BONUS)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DilanZendal
сообщение Sep 9 2010, 21:18
Сообщение #289


Level 2
*

Класс: Обыватель
Характер: Chaotic Neutral
Раса: Человек



блин, точно. Вот это называется "невнимательность". Кажется, пора выспаться.
Merkuta, спасибо.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Orochi
сообщение Sep 19 2010, 15:07
Сообщение #290


Level 3
*

Класс: Маг
Характер: True Neutral
Раса: Нежить



Где в 2d прописывать свои названия расс и классов?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Orochi
сообщение Sep 21 2010, 13:03
Сообщение #291


Level 3
*

Класс: Маг
Характер: True Neutral
Раса: Нежить



А? (IMG:style_emoticons/kolobok_light/shout.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ghost
сообщение Sep 21 2010, 13:18
Сообщение #292


Level 19
******

Класс: Рейнджер
Характер: Lawful Neutral
Раса: Эльф



Бэ. Когда же вы научитесь искать по форуму, писать в соответствующих темах и не флудить? (IMG:style_emoticons/kolobok_light/sad.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Orochi
сообщение Sep 22 2010, 15:02
Сообщение #293


Level 3
*

Класс: Маг
Характер: True Neutral
Раса: Нежить



Чувак,ответь на все мои вопросы и я больше не буду писать не в тему,ОК? (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Sep 22 2010, 18:55
Сообщение #294


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

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Извините, не удержался. "Чувак" - это кастрированный баран. А "чувиха" - "проститутка" на воровском жаргоне начала 20го века.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ghost
сообщение Sep 22 2010, 19:11
Сообщение #295


Level 19
******

Класс: Рейнджер
Характер: Lawful Neutral
Раса: Эльф



Цитата(Orochi @ Sep 22 2010, 16:02) *
Чувак,ответь на все мои вопросы и я больше не буду писать не в тему,ОК? (IMG:style_emoticons/kolobok_light/rolleyes.gif)

Ооо... На "все"(!) ваши вопросы отвечать это дело неблагодарное. И дело даже не в том что я и сам многого не знаю. Вы задали вопрос не по теме, я указал нужную тему где "возможно" эта проблема уже обсуждалась, но Вам мало... Разжевать и в рот положить? Уж пардон за слегка резкий тон... Хотя если честно вообще не вижу с чего вдруг мне оправдываться.
Цитата(denis0k @ Sep 22 2010, 19:55) *
Извините, не удержался...

Забавно. (IMG:style_emoticons/kolobok_light/smile.gif) Не знал этого. Но так уж и быть, разрешаю администрации и модераторам не бить банхаммером товарища за оскорбление меня. (IMG:style_emoticons/kolobok_light/smile.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Sep 23 2010, 15:14
Сообщение #296


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

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



Цитата(Orochi @ Sep 22 2010, 15:02) *
Чувак,ответь на все мои вопросы и я больше не буду писать не в тему,ОК? rolleyes.gif

Не, чувак, все немного не так. Будешь писать не в тему (или в такой же нагловатой манере, как сейчас) - схлопочешь пред.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kcapra
сообщение Sep 23 2010, 16:40
Сообщение #297


Level 9
***

Класс: Фея
Характер: Chaotic Evil
Раса: Фея



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

Neverwinter Script
void main()

{

if (GetLocalInt(OBJECT_SELF, "script_fired") != TRUE)
    {
        SetLocalInt(OBJECT_SELF, "script_fired", TRUE);
       
        ClearAllActions();
       
        //AssignCommand(OBJECT_SELF, (ActionWait(2.0)));
       
        AssignCommand(OBJECT_SELF, (ActionSpeakString("строка1")));
       
        AssignCommand(OBJECT_SELF, (ActionWait(120.0)));
       
        AssignCommand(OBJECT_SELF, (ActionSpeakString("строка2")));
       
        AssignCommand(OBJECT_SELF, (ActionWait(120.0)));
       
        AssignCommand(OBJECT_SELF, (ActionSpeakString("строка3")));
       
        SetLocalInt(OBJECT_SELF, "script_fired", FALSE);
       
    }


}

Проблема в том, что несмотря на проверку в начале, непись все равно говорит лишь только первую строку каждые шесть секунд...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
denis0k
сообщение Sep 23 2010, 18:47
Сообщение #298


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

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [PW]
Gem of the North
Край Лесов



Wait-ы тормозят непися, а не исполнение скрипта. Флаг запуска скидывается сразу же после установки, поэтому через 6 сек скрипт срабатывает по новой.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Kcapra
сообщение Sep 24 2010, 05:31
Сообщение #299


Level 9
***

Класс: Фея
Характер: Chaotic Evil
Раса: Фея



Ну и как же мне тогда поступить?
А то я хз вообще.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
PaiNt
сообщение Sep 24 2010, 06:15
Сообщение #300


Level 8
***

Класс: Псионик
Характер: Chaotic Neutral
Раса: Хафлинг



Делай удаление переменной таймера с какии-то периодом. Типа
Neverwinter Script
void main()
{
if(GetLocalInt(OBJECT_SELF, "TIMEOUT"))  return;
SetLocalInt(OBJECT_SELF, "TIMEOUT", TRUE);
DelayCommand(3600.0, DeleteLocalInt(OBJECT_SELF, "TIMEOUT"));


...Твой код
}


Правда проверки сердцебиения проводятся раз в 6с так что действия не кратные этому промежутку сделать проблематично.

Сообщение отредактировал PaiNt - Sep 24 2010, 06:16
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

14 страниц V  « < 10 11 12 13 14 >
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28th March 2024 - 17:44