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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
205 страниц V  « < 120 121 122 123 124 > »   
Ответить в эту темуОткрыть новую тему
> Вопросы новичков, Абсолютные глупости
Arilyn Moonblade
сообщение Mar 7 2007, 12:51
Сообщение #3021


Level 5
**

Класс: Разведчик Арфистов
Характер: Chaotic Good
Раса: Эльф



У меня вопрос. Самый простейший скрипт и не получается! (IMG:style_emoticons/kolobok_light/sad.gif)
Когда ПС появляется в области триггера, над ним появляется выплывающий текст.
Я делаю триггер, в слоте Оn_Еnter делаю такой скрипт

NSS
void main()
{
if (GetLocalInt(OBJECT_SELF,"ENTERED")!=1)return;
object oPC=GetEnteringObject();
if (!GetIsPC((oPC))) return;
else
{
AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC,ActionSpeakString("собсно мой текст"));
SetLocalInt(OBJECT_SELF,"ENTERED",1);
}
}


Вроде все правильно тем не менее ничего не выходит, в чем моя ошибка?

Сообщение отредактировал Arilyn Moonblade - Mar 7 2007, 12:52
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 7 2007, 12:53
Сообщение #3022


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



угу вродебы понял пасибо... буду пробовать...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Mar 7 2007, 13:02
Сообщение #3023


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

Класс: Воин
Характер: Lawful Good
Раса: Человек
NWN: Скриптинг [Sn]



Arilyn Moonblade, хех, 3 строчка: if (GetLocalInt(OBJECT_SELF,"ENTERED")!=1)return; Из-за нее скрипт ни когда не выполнется, так как в начале переменная действительна не равна 1 (да же если такой переменной еще и нету). Ну и соответственно строчка SetLocalInt(OBJECT_SELF,"ENTERED",1); не выполница, и скрипт так и не сдвинется с мертвой точки.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Arilyn Moonblade
сообщение Mar 7 2007, 13:04
Сообщение #3024


Level 5
**

Класс: Разведчик Арфистов
Характер: Chaotic Good
Раса: Эльф



Усе понял! (IMG:style_emoticons/kolobok_light/slow.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 7 2007, 16:20
Сообщение #3025


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



(IMG:style_emoticons/kolobok_light/sad.gif) так пока про спам никто презнаваться нихочет... немного отложим то чтоестьрасмотрим другую структуру.

есть два тригера
на onEnter первогостоит

NSS
void main()
{
object oTrig1=GetObjectByTag("Perd_Deru");
object oTrig2=GetObjectByTag("Za_Deru");
object oSt=GetObjectByTag("Strag");
object oSh=GetObjectByTag("Shaman");

if (GetLocalInt(oTrig2, "TriggerState"))
     {
     DestroyObject(oSt,0.0);
     DestroyObject(oSh,0.0);
     DestroyObject(oSt,0.0);
     SetLocalInt(oTrig2, "TriggerState",0);
     }
else
     {
     SetLocalInt(oTrig1, "TriggerState",1);
     }
}


на onEnter второго

NSS
void main()
{
object oTrig1=GetObjectByTag("Perd");
object oTrig2=GetObjectByTag("Za");
location lStart_1=GetLocation(GetObjectByTag("WP_1"));
location lStart_2=GetLocation(GetObjectByTag("WP_2"));
location lStart_3=GetLocation(GetObjectByTag("WP_3"));


if (GetLocalInt(oTrig1, "TriggerState"))
     {
CreateObject(OBJECT_TYPE_CREATURE,"VoinH",lStart_1,FALSE,"Strag");
CreateObject(OBJECT_TYPE_CREATURE,"ShamanH",lStart_2,FALSE,"Shaman");
CreateObject(OBJECT_TYPE_CREATURE,"VoinH",lStart_3,FALSE,"Strag");
SetLocalInt(oTrig1, "TriggerState",0);
     }
else
    {
    SetLocalInt(oTrig2, "TriggerState",1);
    }
}


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

путем ряда тестов пришел к выводу что скорее всего ошибка в
NSS
if (!GetLocalInt(oTrig1, "TriggerState"))


может я чтото не допонимаю в переменных или в условных операторах еще раз просветите

Сообщение отредактировал Teranozavr_REX - Mar 7 2007, 16:42
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 7 2007, 16:44
Сообщение #3026


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

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



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

+ у тебя в скриптах триггеры берутся по разным тэгам: Perd и Perd_Deru например.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 7 2007, 17:21
Сообщение #3027


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



*стёрто* пришла нянька ты кнула носом, ошибка в имени тега все заработало))
всем пасибо извените...
после прадников продолжем

Сообщение отредактировал Teranozavr_REX - Mar 7 2007, 17:48
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 7 2007, 17:47
Сообщение #3028


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

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



ну что могу сказать. Отдебаж.
Введи в разных местах
NSS
SendMessageToPC(GetFirstPC(),"TriggerState="+IntToString(GetLocalInt(oTrig1, "TriggerState")));

узнаешь, где косяк. Или не присваивается, или условие глючит.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 7 2007, 17:49
Сообщение #3029


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



Это на заметку возьму пасибо

не все еще заработало )) и дебаг веселые вещи показывает пока помучаюсь если не получиться я вернусь))

Сообщение отредактировал Teranozavr_REX - Mar 7 2007, 18:08
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 15 2007, 13:38
Сообщение #3030


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



все косяки исправил ( вчасносте в определении тригера была рефр сылка а не тег и не работало (IMG:style_emoticons/kolobok_light/sad.gif) )
возникла новая проблема...

мне надо проверить есть ли у того кто наступил на тригер некий итем.
как сделатьпроверку я знаю вродебы
воврос в том как определить\обьявить обект что то типа "тот кто наступил на тригер"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
StalkerDtN
сообщение Mar 15 2007, 14:21
Сообщение #3031


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

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [Sn]



QUOTE(Teranozavr_REX @ Mar 15 2007, 17:38) [snapback]105767[/snapback]
воврос в том как определить\обьявить обект что то типа "тот кто наступил на тригер"
NSS
// The value returned by this function depends on the object type of the caller:
// 1) If the caller is a door it returns the object that last
//    triggered it.
// 2) If the caller is a trigger, area of effect, module, area or encounter it
//    returns the object that last entered it.
// * Return value on error: OBJECT_INVALID
//  When used for doors, this should only be called from the OnAreaTransitionClick
//  event.  Otherwise, it should only be called in OnEnter scripts.
object GetEnteringObject()



ps: используется на onEnter триггера)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 15 2007, 18:32
Сообщение #3032


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



пааасибо помогло все прикрасно работает ...

теперь последний так сказать штрих

НПС что респиться по событию тригера...
должен ити по некоему моршруту...
я его проложил точками маршрута...
так вот...
1) если просто проложить маршрут точками, то дойдя до конца маршрута НПС, возвращайеться назад, а надо что бы останавливался, это как то можно???
2) как скриптом заставить НПС ити к поинту ???
3) возможно ли сделатьчтото типа так:
НПС идет к поинту когда доходит уничтожаеться...( как уничтожатьуже нашел... там помойму задержка естьесли я не ошибаюсь до уничтожения если мона пользоваться ею то насколько она будет подтормаживать сервер...)

Сообщение отредактировал Teranozavr_REX - Mar 15 2007, 18:35
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Alian REXis
сообщение Mar 16 2007, 15:39
Сообщение #3033


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

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



QUOTE(Teranozavr_REX @ Mar 15 2007, 18:32) [snapback]105785[/snapback]
2) как скриптом заставить НПС ити к поинту ???

NSS
AssignCommand(oNPC,ActionMoveToObject(GetWayPointByTag("tag")));
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 16 2007, 17:41
Сообщение #3034


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



пасибо помогло только там GetWaypointByTag если вдруг кто то еще решит воспользоваться))


как повернуть НПС так что бы он смотрел в заданом направлении??
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 16 2007, 17:58
Сообщение #3035


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

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



SetFacing(...)
SetFacingPoint(...)

лексикон бы скачал и не парился
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Mar 16 2007, 18:56
Сообщение #3036


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



Дальше
слот OnUsed
как определить обьект (плеера) кторый использовал предмет???

P.S с вами получаеться куда лудше и быстрее а главное веселее
а пролексикон уже писал естьон уменя не помогает((

Сообщение отредактировал Teranozavr_REX - Mar 16 2007, 18:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Mar 16 2007, 18:59
Сообщение #3037


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

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



омг.. ну если не Лексикон, то хоть фильр функций в скрипт-редакторе попользуй. Например попробуй саааамый тупой вариант - написать в фильтр слово "use". О!! Чудо!! Среди прочих было
NSS
GetLastUsedBy();

Колдовство, ей богу. Сам не понимаю, как оно так получилось.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
azathoth
сообщение Mar 16 2007, 20:00
Сообщение #3038


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

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



Небывальщина... (IMG:style_emoticons/kolobok_light/smile.gif)

QUOTE(Teranozavr_REX @ Mar 15 2007, 18:32) [snapback]105785[/snapback]
3) возможно ли сделатьчтото типа так:
НПС идет к поинту когда доходит уничтожаеться...( как уничтожатьуже нашел... там помойму задержка естьесли я не ошибаюсь до уничтожения если мона пользоваться ею то насколько она будет подтормаживать сервер...)

Можно триггером на "месте прибытия", который уничтожит нужный объект.

Но лучше построить очередь действий:

выглядеть будет примерно так:
NSS
AssignCommand(oNPC,ActionMoveToObject(GetWayPointByTag("tag")));
...
AssignCommand(oNPC,ActionDoCommand(DestroySelf(...))));

Чтобы очереть не сбилась "по пути" ее надо закрыть (SetCommandable).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Apr 3 2007, 15:24
Сообщение #3039


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



Доброе время суток, и снова свами я, со своими вопросами

два скриптика точнее наверное всегонавсегострочки интересуют
1) как сделать так что бы Чар получил бонус АС (скажем додж) на какой то интервал времени
2) как сделатьтак что бы Чар получил бонус к с килу (скажем Лоре) на какой то интервал времени

P/S обе эти вещи закручю на палочку... при использовании думаю должнополучиться)

Сообщение отредактировал Teranozavr_REX - Apr 3 2007, 15:27
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 3 2007, 16:26
Сообщение #3040


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

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



см описания функций:
Neverwinter Script Source
ApplyEffectToObject()
EffectSkillIncrease()
EffectACIncrease()
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Apr 4 2007, 18:02
Сообщение #3041


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



Neverwinter Script Source
#include "x2_inc_switches"
void main()
{
int nEvent = GetUserDefinedItemEventNumber();
if(nEvent == X2_ITEM_EVENT_ACTIVATE)
{
object oPC=GetLastUsedBy();
effect eACDodg=EffectACIncrease(20,AC_DODGE_BONUS,AC_VS_DAMAGE_TYPE_ALL);
ApplyEffectToObject(1,eACDodg,oPC,1.0);
SendMessageToPC(oPC,"TEST");
}
}

И снова я. Я тут как не мучался, не заработало. Уже пол дня сижу. Но день закончлся и мне пора может кто до утра поймет в чем тут ошибка.

что должно делать
есть итем с тегом А (бутылочка на которой висит использовать1 раз вдень)
есть скрипт с именем А ( собственноон прикреплен в начале)

мало того что нет ожидаемого эфекта ( а именно 20 додж ас)
так даже на строку дебага нереагирует ...

да и так и не понял что дает первый параметр у ApplyEffectToObject
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 4 2007, 20:43
Сообщение #3042


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

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



Цитата(Teranozavr_REX @ Apr 4 2007, 19:02) [snapback]106813[/snapback]
да и так и не понял что дает первый параметр у ApplyEffectToObject

DURATION_TYPE - тип наложения эффекта.
Примерно вот так:
TEMPORARY - временный
INSTANТ - постоянный
PERMANENT - разовый
Разница между INSTANT и PERMANENT весьма зыбкая.. но некоторые эффекты накладываются только каким-то одним (из этих 2х) образом. Подробнее см. описания или лексикон.

по скрипту:
Neverwinter Script Source
object oPC=GetLastUsedBy();

не канает. Читай описание функции.
Тебе нужна функция связанная с использованием предмета, а не взаимодействием с объектом. GetLastItemActivator() - вроде такая.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
diggers
сообщение Apr 5 2007, 01:10
Сообщение #3043


Level 2
*

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



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

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

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

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

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

Тогда глаза не будут так разбегаться от обилия кода. Кому как, мне вынос кусков кода в функции сильно помогает(где это возможно).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Apr 5 2007, 08:41
Сообщение #3044


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

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



Цитата(diggers @ Apr 5 2007, 02:10) [snapback]106824[/snapback]
DURATION_TYPE_PERMANENT это разновидность DURATION_TYPE_TEMPORARY, только при PERMANENT таймер эффекта вообще не крутится, то есть эффект будет держаться вечно(пока не будет отдиспелен).

наверное. Хотя вроде были случаи, когда это неверно (для визуалок), но я так навскидку их не вспомню. Но на практике обычно получалось так:
если нужен временный эффект - темпорари, а если постоянный, то инстант/перманент, в зависимости от описания.

Цитата(diggers @ Apr 5 2007, 02:10) [snapback]106824[/snapback]
Вместо таких громоздких констант удобнее использовать их значения:
DURATION_TYPE_INSTANT = 0
DURATION_TYPE_TEMPORARY = 1
DURATION_TYPE_PERMANENT = 2

тоже не сказал бы. Читать удобнее константы.
Цитата(diggers @ Apr 5 2007, 02:10) [snapback]106824[/snapback]
то потратил бы на отладку всего пару минут. Сразу понял бы где ошибка.

я потратил пару секунд чтобы понять, что не приходит сообщение потому что oPC определен неверно. Так что все относительно (IMG:style_emoticons/kolobok_light/smile.gif) . Но вынос функции дебага эт правильный ход, вроде как все так делают.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Teranozavr_REX
сообщение Apr 5 2007, 12:19
Сообщение #3045


Level 4
**

Класс: Некромант
Характер: Chaotic Good
Раса: Нежить



всем спасибо заработало...

как написать условие используют только (список класов) и если есть хоть какой то другой класс то предмет не используеться...

может есть какаято командочка ???
потому что мне пока только на ум приходит проверить через
Neverwinter Script Source
GetLevelByClass

по всем классам которые не должны использовать а так как таких намногобольше чем тех ктоиспользует получаеться очень громоздкое условие
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

205 страниц V  « < 120 121 122 123 124 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29th July 2025 - 12:53