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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 40 41 42 43 44 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
][umepa
сообщение Apr 13 2005, 18:53
Сообщение #1026


Level 3
*

Класс: Некромант
Характер: Neutral Evil
Раса: Человек



ээээ Лито я слишком ещё новичок но я не знаю как переносить вэйпойнты из локу в локу мож поможешь? :swoon:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 13 2005, 19:07
Сообщение #1027


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

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



ctrl+c
ctrl+v
Добавлено в [mergetime]1113408477[/mergetime]
Не, ну народ вы хоть сами думайте чуток. :D :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
][umepa
сообщение Apr 13 2005, 19:21
Сообщение #1028


Level 3
*

Класс: Некромант
Характер: Neutral Evil
Раса: Человек



сенки :D
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Алексашка
сообщение Apr 13 2005, 22:14
Сообщение #1029


Level 3
*

Класс: Клерик
Характер: True Neutral
Раса: Человек



QUOTE (Aiwan @ Apr 12 2005, 22:46)
Алексашка у тебя какой-то перевод. Говори на английском все подскажем. Русский тулсет закинь, если не хочешь мертвого модуля по прошествии времени...

Свойство предмета: Cast spell: Talk to(Unlimited Uses\Day) Пробовал скрипт на OnActivateItem, не работает. Скрипт ниже.

Neverwinter Script Source
object oItem = GetItemActivated();
object oActivator = GetItemActivator();
object oUser = oActivator;
object oTarget = GetItemActivatedTarget();
string sRes = GetResRef(oItem);
location lLoc = GetItemActivatedTargetLocation();
location lTarget = lLoc;
void main()
{
if (GetIsPC(oActivator)&&(GetTag(oItem)=="az_sword1"))
  {
        if (GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oActivator)!=oItem)
            AssignCommand(oActivator,ActionEquipItem(oItem,INVENTORY_SLOT_RIGHTHAND));
        DelayCommand(1.0,ExecuteScript("sword_skript2",oActivator));
  }
}


P.S. Больше года уже. 23мб, 130000 слов, больше 1000 скриптов (5\6 "косых" остальные ненужные) :D Пока жив модуль. Это же только диалог русский, а все остальное "родное". :yes:
Добавлено в [mergetime]1113420384[/mergetime]
Взял готовый скрипт отдыха в полевых условиях. (Аваддон) Немножко подредактировал под свои нужды.
Все работает ОК. Сначала я добавил отдыхать только в рест зонах все работало нормально, но герои начали разводить костер в гостиницах :D Куда строчку впихнуть проверяющую условие гостиница или улица? Скрипт вписать не могу, я с чужого компа. Он есть на вашем сайте. Я изменял только эффекты и внес строку
Neverwinter Script Source
if(GetLocalInt(oPC, "RESTZONE") !=1)

Ну и далее отмена отдыха с фразой типа: "Найди место поприличнее"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 13 2005, 23:08
Сообщение #1030


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

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



QUOTE (Алексашка @ Apr 13 2005, 23:14)
Свойство предмета: Cast spell: Talk to(Unlimited Uses\Day)

поставь уникальное свойство, точно будет работать.

2. Я бы проверял наличие в локации валидного вэйпоинта
Neverwinter Script Source
if (GetIsObjectValid(GetNearestObjectByTag("WP_TAVERNREST",oPC))) // если в таверне
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Ferst
сообщение Apr 14 2005, 18:43
Сообщение #1031


Level 2
*

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



QUOTE (Aiwan @ Apr 12 2005, 22:46)
Русский тулсет закинь, если не хочешь мертвого модуля по прошествии времени...

Это к чему?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Алексашка
сообщение Apr 14 2005, 20:51
Сообщение #1032


Level 3
*

Класс: Клерик
Характер: True Neutral
Раса: Человек



QUOTE (Lex @ Apr 13 2005, 23:08)
поставь уникальное свойство, точно будет работать.

2. Я бы проверял наличие в локации валидного вэйпоинта 
Neverwinter Script Source
if (GetIsObjectValid(GetNearestObjectByTag("WP_TAVERNREST",oPC))) // если в таверне

С уникальным свойством у меня работает. Мне было интересно, что с этим можно сделать. :yes:

Что писать я знаю, я спрашивал где вписать. :yes: Впрочем это уже неважно. Нашел второй скрипт Аваддона, на отдых в гостинице. Слепил из двух один. Красиво отдыхают. :D Мне бы еще кто -нибудь скрипт на крафтинг так доходчиво расписал. Интересно же не просто скопировать, а понять, для чего строчки написаны. :yes: Работающий скрипт привожу ниже. Может быть кому сгодиться. :yes:
Neverwinter Script Source
////////////////////////////////////
//////Created By: Avaddon///////////
//////Date: 04. 12. 2004////////////
//////Подкорректирован Алексашка////
///////Дата: 14.04.2005/////////////
///////////////////////////////////
#include "nw_i0_tool"
#include "nw_i0_generic"
#include "lib_colortext"
void main()
{
effect eBlack = EffectVisualEffect(VFX_DUR_BLACKOUT);
effect eZzz =  EffectVisualEffect(VFX_IMP_SLEEP);
effect eSlow = EffectSlow();

object oPC = GetLastPCRested();


object oBed = GetNearestObjectByTag("BED",oPC);


object oSleep = GetNearestObjectByTag("SLEEP",oPC);


object oArmor =GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
object oRightHand = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
object oLeftHand = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
object oBoots = GetItemInSlot(INVENTORY_SLOT_BOOTS,oPC);
object oHelmet = GetItemInSlot(INVENTORY_SLOT_HEAD,oPC);
object oBelt = GetItemInSlot(INVENTORY_SLOT_BELT,oPC);
object oCloak = GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC);
object oArms = GetItemInSlot(INVENTORY_SLOT_ARMS,oPC);


string sFree = GetTag(GetArea(oPC));
string sArmor = GetLocalString(oPC,"armor");
string sRightHand = GetLocalString(oPC,"right");
string sLeftHand = GetLocalString(oPC,"left");
string sHelmet = GetLocalString(oPC,"helmet");
string sBoots = GetLocalString(oPC,"boots");
string sBelt = GetLocalString(oPC,"belt");
string sCloak = GetLocalString(oPC,"cloak");
string sArms = GetLocalString(oPC,"arms");


    if(GetStringLeft(sFree,4)=="free")
    {

        if(GetLocalInt(GetLastPCRested(),"on_bed")!=1)
        {

        SetLocalString(oPC,"armor",GetTag(oArmor));
        SetLocalString(oPC,"right",GetTag(oRightHand));
        SetLocalString(oPC,"left",GetTag(oLeftHand));
        SetLocalString(oPC,"helmet",GetTag(oHelmet));
        SetLocalString(oPC,"boots",GetTag(oBoots));
        SetLocalString(oPC,"belt",GetTag(oBelt));
        SetLocalString(oPC,"cloak",GetTag(oCloak));
        SetLocalString(oPC,"arms",GetTag(oArms));


        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oArmor)));
        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oRightHand)));
        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oLeftHand)));
        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oHelmet)));
        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oBoots)));
        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oBelt)));
        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oCloak)));
        DelayCommand(2.0,AssignCommand(oPC,ActionUnequipItem(oArms)));


            if (GetLastRestEventType()==REST_EVENTTYPE_REST_STARTED)
            {

            AssignCommand(oPC,ClearAllActions());


            AssignCommand(oPC,ActionMoveToObject(oBed));


            DelayCommand(2.0,AssignCommand(oPC,ActionJumpToObject(oSleep)));


            DelayCommand(2.5,SetLocalInt(oPC,"on_bed",1));


            DelayCommand(3.0,AssignCommand(oPC,ActionRest()));


            DelayCommand(3.5,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eZzz,oPC,10.0));
            DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eBlack,oPC,60.0));
            }
        }
    }
    else
    {
    object oPC = GetLastPCRested();
    object oCamp = GetNearestObjectByTag("camp",oPC);
    object oBedroll = GetNearestObjectByTag("krovatka",oPC);
    effect eSleep = EffectVisualEffect(VFX_IMP_SLEEP);
    effect eBlind = EffectBlindness();
    effect eDisease = EffectDisease(DISEASE_SOLDIER_SHAKES);

  if (GetLocalInt(oPC, "RESTZONE") != 1)
  {
    AssignCommand(oPC,ClearAllActions());
    FloatingTextStringOnCreature("Это неудачное место для лагеря. Нужно поискать место поукромнее.",oPC,FALSE);
    }
    else
    {
if (GetLastRestEventType() == REST_EVENTTYPE_REST_STARTED)
{
if(GetIsObjectValid(oCamp)!=TRUE)
{
  FloatingTextStringOnCreature("Надо бы развести костер",oPC,FALSE);
  AssignCommand(oPC,ClearAllActions());
}
  else
  {
  if(GetDistanceBetween(oPC,oCamp)>3.0)
  {
  FloatingTextStringOnCreature("Зачем тогда костер? Если ты отправляешь меня спать так далеко от него.",oPC,FALSE);
  AssignCommand(oPC,ClearAllActions());
  }
  else
  {
if (HasItem(oPC,"bedroll")==TRUE)
{
if (HasItem(oPC,"NW_IT_MMIDMISC05")==TRUE)
{
CreateObject(OBJECT_TYPE_PLACEABLE,"krovatka",GetLocation(oPC));
DestroyObject(GetItemPossessedBy(oPC,"NW_IT_MMIDMISC05"));
DestroyObject(GetItemPossessedBy(oPC,"bedroll"));
SetLocalInt(oPC,"slept",1);
DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eSleep,oPC,30.0));
DelayCommand(2.0, FadeToBlack(oPC, FADE_SPEED_SLOW));
}
else
{
FloatingTextStringOnCreature("Есть охота! На голодный желудок не уснешь.",oPC,FALSE);
AssignCommand(oPC,ClearAllActions());
}
}
else
{
FloatingTextStringOnCreature("Куда делась моя подстилка? На голой земле я спать не буду.",oPC,FALSE);
AssignCommand(oPC,ClearAllActions());
}
}
  }
}
if (GetLastRestEventType() == REST_EVENTTYPE_REST_FINISHED)
  {
  FadeFromBlack(oPC, FADE_SPEED_SLOW);
  SetLocalInt(oPC,"slept",0);
  CreateItemOnObject("bedroll", oPC,1);
  SetTime(GetTimeHour() + 8, GetTimeMinute(), GetTimeSecond(), GetTimeMillisecond());
  DelayCommand(1.0, AssignCommand(oPC, SpeakString(colorText("Прошло 8 часов", TXT_COLOR_GREEN))));
  DelayCommand(1.5, DestroyObject(oCamp));
  DelayCommand(2.5, DestroyObject(oBedroll));
  if (GetWeight(GetItemInSlot(INVENTORY_SLOT_CHEST,oPC))>20)
  {
  effect eDamage = EffectDamage(d20(1) + 20);
  ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
  FloatingTextStringOnCreature("Спать в доспехах было плохой идеей.",oPC,FALSE);

  }
  }

}
}


  //////////////////////////////////////////////////////////////////////
  /*Если Отдых Окончен или Прерван в арене с тегом начинающимсЯ с "free"
  и игрок находитсЯ на кровати.*/
/////////////////////////////////////

    if(GetStringLeft(sFree,4)=="free" && GetLocalInt(oPC,"on_bed")==1)
    {
        //Если Отдых Завершен
        if (GetLastRestEventType()==REST_EVENTTYPE_REST_FINISHED)
        {
        //Одеваем игрока обратно (теги предметов бывших на нем одетыми читаем из локалок игрока)
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sArmor), INVENTORY_SLOT_CHEST)));
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sRightHand), INVENTORY_SLOT_RIGHTHAND)));
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sLeftHand), INVENTORY_SLOT_LEFTHAND)));
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sBoots), INVENTORY_SLOT_BOOTS)));
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sHelmet), INVENTORY_SLOT_HEAD)));
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sBelt), INVENTORY_SLOT_BELT)));
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sCloak), INVENTORY_SLOT_CLOAK)));
        DelayCommand(2.0,AssignCommand(oPC, ActionEquipItem(GetItemPossessedBy(oPC,sArms), INVENTORY_SLOT_ARMS)));

        //Встаем с кровати
        AssignCommand(oPC,ActionJumpToObject(oBed));

        //Стираем с игрока все локалки предметов и того что он был на кровати.
        DeleteLocalInt(oPC,"on_bed");
        DeleteLocalString(oPC,"armor");
        DeleteLocalString(oPC,"right");
        DeleteLocalString(oPC,"left");
        DeleteLocalString(oPC,"helmet");
        DeleteLocalString(oPC,"boots");
        DeleteLocalString(oPC,"belt");
        DeleteLocalString(oPC,"cloak");
        DeleteLocalString(oPC,"arms");

        //Убираем эффекты сна
        RemoveEffect(oPC,eBlack);
        SetTime(GetTimeHour() + 8, GetTimeMinute(), GetTimeSecond(), GetTimeMillisecond());
        DelayCommand(1.0, AssignCommand(oPC, SpeakString(colorText("Прошло 8 часов", TXT_COLOR_GREEN))));

        }//Заканчиваем условие "Если Отдых Завершен

}
}
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
fali
сообщение Apr 15 2005, 05:06
Сообщение #1033


Level 3
*

Класс: Бард
Характер: Chaotic Good
Раса: Полуэльф



Давно не была, решила заглянуть. =)
Заодно и вопросы новые задать, пока еще не заснула. %)

Надеюсь, что не ошибаюсь с темой... Итак. :)

Вопросы:
1. Как сделать переключатель музыки на локации? Минимум -- включить/выключить музыку, максимум -- с выбором из нескольких заранее определенных мелодий. :) Лучше всего было бы в двух вариантах -- для предмета в инвентаре и для переключателя на локации. =) Хотя и за один, любой, буду благодарна. :)
2. Как сделать "предмет", с помощью которого можно было бы провести что-то вроде соревнования? Объясняю на примере. :) Есть мишень. Есть несколько лучников. Каждый выпускает по стреле, а мишень в ответ выдает результат -- чей выстрел точнее. Такое можно сделать? :)
3. Продолжение второго. =) То же самое, но, к примеру, стол для борьбы... Эмс... Как там она называется... Ну, когда руку противника к столу припечатать стараются. %) В обчем, на силу проверка идет. Это чтобы сообразить, чем такие соревновательные предметы будут отличатся между собой. :)
4. Не знаю даже, возможно ли такое. =) Тоже переключатель, навроде первого пункта. Но при переключении изменяется не музыка, а сама локация. Например, добавляются столы-стулья, иллюминация разная. =) Впрочем, музыку тоже сюда можно приделать. =) Это возможно? :)

Заранее благодарю за любую помощь. :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Buldog
сообщение Apr 15 2005, 11:02
Сообщение #1034


Level 5
**

Класс: Мастер Оружия
Характер: Chaotic Neutral
Раса: Полуорк



1. С музыкой еще не работал, сказать затрудняюсь.
2. Ну с мишенью можно по количеству дамага попробовать сделать, а так в НВН либо попал, либо нет...
3. Армреслинг она называется :)Хм, тут даж незнаю, можно попробовать на стол вешать как локал обжект одного из соревнующихся, и когда подойдет второй сравнить их силу, у кого больше, тот и соответственно победил, можно еще довавить кубик, тот же д20, всетаки не всегда решает только сила. Ну еще поставить проверку на расстояние, что бы не соревновались участники в разных локациях :)
4. Это можно, заготовить необходимых плэйсейблов и места, куда их расставлять, а потом, при использовании рычага, объеты "расставлять" куда надо.

Скриптов приложить не могу, ничего такова еще не делал :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 15 2005, 17:56
Сообщение #1035


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

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



QUOTE (fali @ Apr 15 2005, 06:06)
1. Как сделать переключатель музыки на локации? Минимум -- включить/выключить музыку, максимум -- с выбором из нескольких заранее определенных мелодий. :) Лучше всего было бы в двух вариантах -- для предмета в инвентаре и для переключателя на локации. =) Хотя и за один, любой, буду благодарна. :)

вроде бы нельзя. Гляну что там по этому поводу.
QUOTE (fali @ Apr 15 2005, 06:06)
2. Как сделать "предмет", с помощью которого можно было бы провести что-то вроде соревнования? Объясняю на примере. :) Есть мишень. Есть несколько лучников. Каждый выпускает по стреле, а мишень в ответ выдает результат -- чей выстрел точнее. Такое можно сделать? :)

только если дамаж смотреть, но это не очень верно. Так как сила разная.
QUOTE (fali @ Apr 15 2005, 06:06)
3. Продолжение второго. =) То же самое, но, к примеру, стол для борьбы... Эмс... Как там она называется... Ну, когда руку противника к столу припечатать стараются. %) В обчем, на силу проверка идет. Это чтобы сообразить, чем такие соревновательные предметы будут отличатся между собой. :)

Buldog хороший вариант привел.
QUOTE (fali @ Apr 15 2005, 06:06)
4. Не знаю даже, возможно ли такое. =) Тоже переключатель, навроде первого пункта. Но при переключении изменяется не музыка, а сама локация. Например, добавляются столы-стулья, иллюминация разная. =) Впрочем, музыку тоже сюда можно приделать. =) Это возможно? :)

Можно, но немного мутновато и с ограничениями.

Вариант 1 как описал Buldog, те креатить плейсы в поинтах. Но это мутно.

Вариант 2 - обставь локу как надо. Плейсы все, что нужны. Теперь те, которые должны появиться позже уничтожь (в предмете закладка advanced там есть состояния. В тч там есть и destroyed). Они окажутся под локацией, нивидимые для игроков. Теперь когда надо, вытаскиваем их оттуда посредством например ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Apr 15 2005, 20:39
Сообщение #1036


Level 5
**

Класс: Рейнджер
Характер: Neutral Good
Раса: Человек



2 fali

1. Для смены музыки используй
void MusicBackgroundChangeDay(object oArea, int nTrack);
void MusicBackgroundChangeNight(object oArea, int nTrack);
и проч. Music* функции.
oArea - арена на которой нужно поменять музыку.
nTrack - номер трека, соответствует номеру строки в ambientmusic.2da, также можно использывать константы TRACK_*.

2-3. Ничего удовлетворительного на ум не приходит. Чеки, конечно, можно какие угодно накидать, но обставить хоть сколь-либо вразумительной анимацией...
Как например такой вариант. Сделать, типа, цепь с динамометром. Участники по очереди тянут цепь, а в локалки записывается результат:
d20()+GetAbilityModifier(ABILITY_STRENGTH, oUser);
У кого больше, тот и выиграл.

4.
QUOTE (Lex @ Apr 15 2005, 17:56)
(в предмете закладка advanced там есть состояния. В тч там есть и destroyed). Они окажутся под локацией, нивидимые для игроков. Теперь когда надо, вытаскиваем их оттуда посредством например ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE)

Классная вещь! А как ты об этом узнал? И эти "уничтоженные" объекты спокойно находится посредством, н.п. GetObjectByTag()?

Похоже, это будет оптимальный вариант. И, чтобы лишний раз не напрягаться, лучше, наверное, дать всем таким скрытым объектам один и тот же тег и актировать их из цикла:
Neverwinter Script Source
string sTag = "SOME_HIDDEN_OBJECT";
int i = 0;
object oPlc;
while( GetIsObjectValid(oPlc = GetObjectByTag(sTag, i++)) )// ;)
{
   AssignCommand(oPlc, ActionPlayAnimation(ANIMATION_PLACEABLE_ACTIVATE));
}

Добавлено в 20:52
Кстати, нечто подобное (изменение музыки, наложение визуальных эффектов, добавление плейсаблов) делали биовары в 3-й главе HotU, при одевании игроком кольца спящего человека. См. скрипт OnPlayerEquipItem модуля XP2_Chapter3 и инклюд hx_inc_ring (кажется).
Там они, вроде, расставляли вейпоинты и давали им имена объектов, которые нужно будет креэйтить:
CreateObject(OBJECT_TYPE_PLACEABLE, GetName(oWP), GetLocation(oWP));

Сообщение отредактировал Friedrich - Apr 15 2005, 20:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 15 2005, 23:54
Сообщение #1037


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

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



QUOTE (Friedrich @ Apr 15 2005, 21:39)
void MusicBackgroundChangeDay(object oArea, int nTrack);
void MusicBackgroundChangeNight(object oArea, int nTrack);

Буду знать.

QUOTE (Friedrich @ Apr 15 2005, 21:39)
И эти "уничтоженные" объекты спокойно находится посредством, н.п. GetObjectByTag()?

да.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
fali
сообщение Apr 17 2005, 13:49
Сообщение #1038


Level 3
*

Класс: Бард
Характер: Chaotic Good
Раса: Полуэльф



Прошу прощения, что не сразу отвечаю -- не получилось раньше. :)

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

Про соревнования... Анимация, в общем-то, не нужна. Можно и просто обычную цель поставить для антуражу, пусть стреляють. =) Главный вопрос в том, как именно определить наиболее меткого. :) По наносимому урону... Так вроде это не совсем меткость, хотя и от нее зависит... Есть ведь дайсометы разные, которые бросают чеки на проверку способностей и навыков. Что в данном случае лучше проверять? И как эту проверку сделать, чтобы её было удобно делать и чтобы всем результат был виден? Впрочем, вариант с цепью тоже вполне может подойти. Выстрелил по цели, дернул цепь -- результат показан, а игроки уже сами цифры сравнят, чтобы решить, кто был точнее. =)
Со столом... В общем-то, тоже не обязательно проверялось наличие рядом двух соперников. Игроки могут и сами между собой разобраться, кто подойдет и на словах обыграть борьбу. Но им в помощь нужно дать возможность бросать чеки на силу/ловкость/тренированность (или что еще можно задействовать?), которые могли бы подсказать им, как идет борьба. :) К примеру, каждый делает несколько таких чеков во время борьбы, отыгрывая результаты, а на последнем уговоренном (третьем или пятом, к примеру, или после какого-то критического броска) -- считают борьбу уже завершенной.

Про изменение локации... Большое и искреннее сенькс. =) Действительно, такой логичный и простой на вид вариант. %) Ещё бы кто-нибудь дал готовый скрипт, который все эти уничтоженные объекты делал видимыми... =)

Большущее спасибо всем уже ответившим. :) Даже если и не получится сейчас со скриптами, я все это сохраню, и потом попробую разобраться, как это делается. Всё равно, наверняка, когда-нибудь нападёт охота изучить скриптописание, хотя бы основы... Если не сейчас, так тогда разберусь. =)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 17 2005, 14:56
Сообщение #1039


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

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



Хм...с лучниками можно так.
Есть мишень и кто-то в нее стреляет. (кстати надо еще подумать и о дистанции). Результат - мишень выдает кол-во очков, которые набрал игрок. Можно их например суммировать. И сравнивать с суммами других игроков....
Думаю, что с мишенями я сделаю системку...самому как раз что-то такое надо.

С силовыми упражнениями думаю модификатор силы, половина модификатора ловкости, половина модификатора инты и модификатор (тут надо придумать, как считать) дисциплины ну и дайс.
Те подходит игрок к столу, щелкает на него, теперь щелкает второй. Пишем результат и какой-нить интересный комент. (типа невероятным усилием игрок А поверг игрока Б и прочее..можно и юморные комменты замутить). Каждому участнику отправить лог с суммой его, чтобы знал :)

Изменение локации - сделаю тебе минимодуль, глянешь, как там все.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Apr 17 2005, 17:11
Сообщение #1040


Миловидный Бегрюссунг
Иконки Групп

Класс: Воин
Характер: Chaotic Good
Раса: Человек
NWN: Модмейкер
Проклятие Левора
Порядок Времени



QUOTE (fali @ Apr 17 2005, 16:49)
Большущее спасибо всем уже ответившим. :) Даже если и не получится сейчас со скриптами, я все это сохраню, и потом попробую разобраться, как это делается. Всё равно, наверняка, когда-нибудь нападёт охота изучить скриптописание, хотя бы основы... Если не сейчас, так тогда разберусь. =)

Ну вот так всегда :D Мы то надеялись...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Алексашка
сообщение Apr 17 2005, 17:15
Сообщение #1041


Level 3
*

Класс: Клерик
Характер: True Neutral
Раса: Человек



QUOTE (Lex @ Apr 17 2005, 14:56)
Хм...с лучниками можно так.
Есть мишень и кто-то в нее стреляет. (кстати надо еще подумать и о дистанции). Результат - мишень выдает кол-во очков, которые набрал игрок. Можно их например суммировать. И сравнивать с суммами других игроков....

У меня есть готовый скрипт. Написан правда для другого был, но принцип похожий. Можно переделать под свои нужды. Мишень как создание. С эффектом парализации. А то бывали смешные случаи, когда мишень начала гоняться за игроком. :D Скрипт писал давно, когда русского языка в тулсете небыло. Нуждается в оптимизации, но руки не доходят. Считает именно попадания, а не повреждения.
Neverwinter Script Source
#include "nw_i0_tool"
void main()
{
    object oAttacker = GetLastAttacker();

//* Should only register if hit with a ranged weapon
if( GetIsPC(oAttacker))
  {

    if(GetWeaponRanged(GetLastWeaponUsed(oAttacker)))
    {
        SpeakOneLinerConversation();

            if(GetDistanceToObject(oAttacker) > 12.0)
            {
                if(GetLocalInt(GetModule(),"archer_trening")< 100)
                {
                    SetLocalInt(GetModule(),"archer_trening",(GetLocalInt(GetModule(),"archer_trening")+1));
                    if(GetLocalInt(GetModule(),"archer_trening")== 100)
                  {

                    effect eDamage = EffectDamage(5000);
                    DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, OBJECT_SELF));

                    SetLocalInt(GetModule(), "archer_trening", 0);

                    RewardPartyXP(500, oAttacker);
                  }
                }
                else
                {

                }
                AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("arch_uspeh",oAttacker));

            }
            else
            {
                AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("blisko",oAttacker));
            }
            }
            else
            {
                AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("bow",oAttacker));
            }
            }
        else
            {
                {
        int nHeal = GetMaxHitPoints(OBJECT_SELF) - GetCurrentHitPoints(OBJECT_SELF);
        effect eHeal = EffectHeal(nHeal);
        {
        if (nHeal > 0)
            ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF);
        }
        }

                AssignCommand(GetNearestObjectByTag("Olodrin"),SpeakOneLinerConversation("signboard11",oAttacker));
            }

        }

Добавлено в [mergetime]1113747557[/mergetime]
Подскажите, как правильно сделать проверку по времени. Я подхожу к неписю, а он говорит приходи через 3 часа. Как запомнить время в которое он мне это сказал и как проверить, что три часа прошло. :shout:
Добавлено в [mergetime]1113748392[/mergetime]
Можно например поставить переменную на 20 попаданий. Чья мишень первой получает 20 попаданий присваивает переменную 1, кто второй переменную два и т.д. На полу я опытным путем рисовал черту на дистанции 15 и если игрок был на шаг ближе, то попадание не засчитывалось, а тренер кричал: "Отойди подальше". Да там еще строка лишняя есть. Я ее делал, чтобы хенчманы, по скудоумию своему, зря в мишень не бились. :lol:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Tiger Greyhawk
сообщение Apr 18 2005, 05:55
Сообщение #1042



Иконки Групп

Класс: Обыватель
Характер: Chaotic Good
Раса: Человек
NWN: Скриптинг [Sn]



QUOTE (Алексашка @ Apr 17 2005, 18:15)
Подскажите, как правильно сделать проверку по времени. Я подхожу к неписю, а он говорит приходи через 3 часа. Как запомнить время в которое он мне это сказал и как проверить, что три часа прошло.

Есть функция int GetTimeHoure(). А потом делаешь проверку через переменную.
Есть ведь Lexicon на это. Или я совсем не так понял твою "проблему" :oops:
Ты, вроде, более-менее разбираешься же. По таким вопросам предлагаю в чат. Гораздо операивнее решится.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 18 2005, 08:31
Сообщение #1043


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

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



в пределах одного дня через GetTimeHoure(), но если чел придет на сдел. день в тот же час, то облом.

Надо преобразовывать месяц, день и час в часы и запомнить. Потом сравнивать с тамки же преобразованием. Разница больше 3-х значить прошло более 3-х часов.
У меня в Тсурле все временные штуки на этом построены
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 18 2005, 15:54
Сообщение #1044


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Возникла проблема с "порядком действий"
Чтобы я и не делал, нифига не работает!
Еа 99% уверен что это баг NWN, на как его обойти?

oPC и oTarget правильные объекты 100%
Строка об атаке не работает :(.
Хотя катсцен работает.

Neverwinter Script Source
effect eCutS = EffectCutsceneDominated();
effect eMind = EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED); // что-нибудь
                                                                                                            // красивое
effect eLink = EffectLinkEffects(eMind, eCuts);

object oTarget = GetAttackTarget(oPC);

ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oPC, 6.00);

//DelayCommand(6.00,AssignCommand(oPC,ClearAllActions(TRUE)));
AssignCommand(oPC,DelayCommand(6.00,ActionAttack(oTarget)));


Сообщение отредактировал RiPPeR - Apr 18 2005, 15:55
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 18 2005, 16:07
Сообщение #1045


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

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



\\ перенес в соотв. тему

Всех предупреждаю последний раз. Кто не видел, не мои проблемы.

КТО НЕ ОЗНАКОМИТСЯ С ПРАВИЛАМИ И НАЧНЕТ ПОСТИТЬ И СОЗДАВАТЬ ТОПИКИ ПОЛУЧИТ ПРЕД.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 18 2005, 16:09
Сообщение #1046


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Извиняюсь, но тут вопросы по скриптам, а у меня скорее баг движка.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 18 2005, 16:14
Сообщение #1047


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

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



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

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
RiPPeR
сообщение Apr 18 2005, 16:18
Сообщение #1048


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

Класс: Страж Тьмы
Характер: Chaotic Neutral
Раса: Дракон
NWN: Скриптинг [PW]



Задержка на 6 сек, потом атака того, кого бил до этого
Добавлено в [mergetime]1113832097[/mergetime]
Все блин, методом встраивания проверок локал интов, брания локал обжектов и других премудростей в скрипт default, все таки заработало. :crazy: :crazy: :crazy:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Алексашка
сообщение Apr 18 2005, 18:58
Сообщение #1049


Level 3
*

Класс: Клерик
Характер: True Neutral
Раса: Человек



QUOTE (Lex @ Apr 18 2005, 08:31)
в пределах одного дня через GetTimeHoure(), но если чел придет на сдел. день в тот же час, то облом.

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

Понял свою проблему. :D "Три часа" я писал для примера. У меня было 18 часов. И проблемка была именно с переходами в следующий день. Нужно было всего лишь скопировать инклюд из Левора :yes: и все заработало. Lex "виноват" :yes: Тсурл никак не начну проходить. Времени не хватат. :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Лито
сообщение Apr 20 2005, 19:03
Сообщение #1050


Level 9
***

Класс: Страж Тьмы
Характер: Chaotic Evil
Раса: Нежить



Пожертвуйте в базу скриптов, систему опыта :oops: . Со всякими коэффицентами для разных классов. Наверняка кто нибудь писал для своих модулей

Еще хотелось бы знать, можно ли редактировать стандартную НВН-скую систему опыта(только не надо мне говорить про ползунок в св-ах модуля.)

З.Ы. Айван нарисуй *умоляющий* смайлик :)

Сообщение отредактировал Лито - Apr 20 2005, 19:03
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

147 страниц V  « < 40 41 42 43 44 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 19th April 2024 - 23:41