Помощь - Поиск - Пользователи - Календарь
Полная версия: Вопросы новичков
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
Dik Morris
Виталист, сделай фракцию, ему другую настрой как нужно, все.
Aiwan
dumbo а сделай рандом из 5-7. Я проверял почти неделю. Ломал голову wacko.gif Оказалось все просто.
Добавлено в [mergetime]1124359005[/mergetime]
QUOTE (dumbo @ Aug 18 2005, 01:59)
создал две пустые локи 2х2

Сделай их в одних тайлах. А еще лучше копией biggrin.gif
Proydoha
crazy.gif Все началось с того, что я захотел азартных игр в моем модуле... Это рулетка.
Возможно я сделал не грамотно или не правильно. Не судите строго.

Neverwinter Script Source
void main()
{
int iNumber;
string sNumber="";
int iNumberBet; //Сумма которую поставил игрок на число
int iNumberP;//Это номер на который ставит(не ставит) игрок
string sChetNechet="";
int iChetNechet; //Это ставка игрока
int iChetNechetP;//Переменная для проверки: выиграл игрок или нет? 1-Нечет;2-Чет;
int iChetNechetBet; //Сумма которую поставил игрок на чет/нечет
string sBlackRed="";
int iBlackRed;//Это ставка игрока
int iBlackRedP;//Переменная для проверки: выиграл игрок или нет? 1-Красный;2-Черный;
int iBlackRedBet; //Сумма которую поставил игрок на красное/черное
string sPolovina="";
int iPolovina;//Это ставка игрока
int iPolovinaP;//Переменная для проверки: выиграл игрок или нет? 1-числа 1-18;2-числа 19-36;
int iPolovinaBet; //Сумма которую поставил игрок на числа 1-18/19-36
string sTret="";
int iTret;//Это ставка игрока
int iTretP;//Переменная для проверки: выиграл игрок или нет? 1-числа 1-12; 2-числа 13-24; 3-числа 25-36;
int iTretBet;//Сумма которую поставил игрок на числа 1-12/13-24/25-36
string sRyad="";
int iRyad;//Это ставка игрока
int iRyadP;//Переменная для проверки: выиграл игрок или нет?  1-Верхний ряд;2-Средний ряд;3-Нижний ряд;
int iRyadBet;//Сумма которую поставил игрок на числа 3,6,9,12,../2,5,8,11,../1,4,7,10...
int iWIN;//Сумма, которую выиграл игрок

iNumber=Random(37)-1;
if (iNumber==-1) sNumber="Двойное Зеро"; else if (iNumber==0) sNumber="Зеро"; else sNumber=IntToString(iNumber);

if ((iNumber==1) || (iNumber==3) || (iNumber==5) || (iNumber==7) || (iNumber==9) || (iNumber==11) || (iNumber==13)
|| (iNumber==15) || (iNumber==17) || (iNumber==19) || (iNumber==21) || (iNumber==23) || (iNumber==25) || (iNumber==27)
|| (iNumber==29) || (iNumber==31) || (iNumber==33) || (iNumber==35)) {sChetNechet="Не четное"; iChetNechetP=1;}
else if ((iNumber==2) || (iNumber==4) || (iNumber==6) || (iNumber==8) || (iNumber==10) || (iNumber==12) || (iNumber==14)
|| (iNumber==16) || (iNumber==18) || (iNumber==20) || (iNumber==22) || (iNumber==24) || (iNumber==26) || (iNumber==28)
|| (iNumber==30) || (iNumber==32) || (iNumber==34) || (iNumber==36)) {sChetNechet="Четное";iChetNechetP=2;}

if ((iNumber==1) || (iNumber==3) || (iNumber==5) || (iNumber==7) || (iNumber==9) || (iNumber==12) || (iNumber==14)
|| (iNumber==16) || (iNumber==18) || (iNumber==19) || (iNumber==21) || (iNumber==23) || (iNumber==25) || (iNumber==27)
|| (iNumber==30) || (iNumber==32) || (iNumber==34) || (iNumber==36)) {sBlackRed="Красное";iBlackRedP=1;}
else if ((iNumber==2) || (iNumber==4) || (iNumber==6) || (iNumber==8) || (iNumber==10) || (iNumber==11) || (iNumber==13)
|| (iNumber==15) || (iNumber==17) || (iNumber==20) || (iNumber==22) || (iNumber==24) || (iNumber==26) || (iNumber==28)
|| (iNumber==29) || (iNumber==31) || (iNumber==33) || (iNumber==35)) {sBlackRed="Черное";iBlackRedP=2;}

if (iNumber>0 && iNumber<13) {sTret="1-12";iTretP=1;} else if (iNumber>12 && iNumber<25) {sTret="13-24";iTretP=2;}
else if (iNumber>24 && iNumber<37) {sTret="25-36";iTretTret=3;}

if (iNumber>0 && iNumber<19) {sPolovina="1-18";iPolovinaP=1;} else if (iNumber>18 && iNumber<37) {sPolovina="19-36";iPolovinaP=2;}

if ((iNumber==3) || (iNumber==6) || (iNumber==9) || (iNumber==12) || (iNumber==15) || (iNumber==18)
|| (iNumber==21) || (iNumber==24) || (iNumber==27) || (iNumber==30) || (iNumber==33) || (iNumber==36)) {sRyad="Верхний ряд";iRyadP=1;} else
if ((iNumber==2) || (iNumber==5) || (iNumber==8) || (iNumber==11) || (iNumber==14) || (iNumber==17)
|| (iNumber==20) || (iNumber==23) || (iNumber==26) || (iNumber==29) || (iNumber==32) || (iNumber==35)) {sRyad="Средний ряд";iRyadP=2;} else
if ((iNumber==1) || (iNumber==4) || (iNumber==7) || (iNumber==10) || (iNumber==13) || (iNumber==16)
|| (iNumber==19) || (iNumber==22) || (iNumber==25) || (iNumber==28) || (iNumber==31) || (iNumber==34)) {sRyad="Нижний ряд";iRyadP=3;}

if (iNumber==iNumberP) iNumberBet=iNumberBet*//Я не знаю на сколько тут умножать//;
if (iBlackRed==iBlackP) iBlackRedBet=iBlackRed*2;
if (iChetNechet==iChetNechetP) iChetNechetBet=iChetNechetBet*2;
if (iPolovina==iPolovinaP) iPolovinaBet=iPolovinaBet*2;
if (iTret==iTretP) iTretBet=iTretBet*3;
if (iRyad==iRyadP) iRyadBet=iRyadBet*3;

iWIN=iNumberBet+iBlackRedBet+iChetNechetBet+iPolovinaBet+iTretBet+iRyadBet;

SetCustomToken(1,sNumber);
SetCustomToken(2,sBlackRed);
SetCustomToken(3,sChetNechet);
SetCustomToken(4,sPolovina);
SetCustomToken(5,sTret);
SetCustomToken(6,sRyad);
SetCustomToken(7,IntToString(iWIN));
}


Я сильно налажал?crazy.gif
Lex
мама...


если никто не выскажется, я тебе напишу, как бы я сделал (хотя можно и ошибку поискать, напомни только где там и что не работает...).. но if такого размаха... нееее...
Misty Dragon
QUOTE (Proydoha @ Aug 18 2005, 18:39)
crazy.gif Все началось с того, что я захотел азартных игр в моем модуле... Это рулетка.
Возможно я сделал не грамотно или не правильно. Не судите строго.

Я сильно налажал?crazy.gif

как минимум это тяжелый код на первый взгляд. попробуй поработать над упрощением условия проверки. smile.gif

Neverwinter Script Source
if ((iNumber==1) || (iNumber==3) || (iNumber==5) || (iNumber==7) || (iNumber==9) || (iNumber==11) || (iNumber==13)
|| (iNumber==15) || (iNumber==17) || (iNumber==19) || (iNumber==21) || (iNumber==23) || (iNumber==25) || (iNumber==27)
|| (iNumber==29) || (iNumber==31) || (iNumber==33) || (iNumber==35)) {sChetNechet="Не четное"; iChetNechetP=1;}


Hint: тут у тебя идет инкремент на 2. drag.gif
Proydoha
QUOTE
как минимум это тяжелый код на первый взгляд. все структуры с или можно заменить на одну с формулой.

Я думал об этом, но там уж больно хитрая разметка с красным/черным и горизонтальными рядами чисел. Мне ничего лучше в голову не пришло.

Напиши пожалуйста пример. Я так понимаю лучше. По примерам.
Misty Dragon
QUOTE (Proydoha @ Aug 18 2005, 19:14)
Я думал об этом, но там уж больно хитрая разметка с красным/черным и горизонтальными рядами чисел. Мне ничего лучше в голову не пришло.

разметка тут ни при чем.
Proydoha
Нет я понимаю, что, скажем, в ряде чисел 3,6,9,12,15,18,21,24,27,30,33,36 каждое из чисел на 3 больше предидущего, но я не понимаю как это вставить в проверку. Поэтому и прошу пример.
Lex
Neverwinter Script Source
int Check(int nNumber, int nStart, int nStep)
{
int nIter = 0;
while (nIter*nStep + nStart <= nNumber)
   {
   if (nNumber == nIter*nStep + nStart)
         return TRUE;
   nIter ++;
   }
return FALSE;


ну грубо говоря так. 1 доп функция, описывай ее наверху.
nNumber - твое рандомное число
nStart - первое число в ряду. (тут имеется ввиду ряд чисел.. как в школе все smile.gif )
nStep - длина шага.. все как в школе

те проверка на нечетность такая:
if (Check(nNumber, 1, 2)) \\ нечет
else \\ чет
на твой рад 3,6,9,12 такая:
if (Check(nNumber, 3, 3))

ну и так далее...

даже в этом маленьком коде есть место оптимизации. (не считать каждый раз nIter*nStep + nStart а скидывать все в ту-же nStart и потом к ней nStep плюсовать каждую итерацию.. )
но идея кажись такая... хотя могу и ошибаться.
Proydoha
Суть цикла понял. Спасибо. Отныне я буду учиться мыслить рационально. Цикл проверяет числа с определенным интервалом(по формуле nInter*... и тд.), пока не подберет то которое равняеться nNumber. А подобрав выполнит все что написано после If(Check,... Так?
Но ничто не рождает так много вопросов, как поиски ответа.
Вопрос номер раз: nInter ++ как я понял равносильно nInter=nInter+1?
Вопрос номер два: Что означает ошибка:"Потеря анализатора переменной"?
Вопрос номер три: Так что же все-таки с токенами и рандомом?
Lex
QUOTE (Proydoha @ Aug 18 2005, 23:56)
Вопрос номер раз: nInter ++ как я понял равносильно nInter=nInter+1?

да
QUOTE (Proydoha @ Aug 18 2005, 23:56)
Вопрос номер два: Что означает ошибка:"Потеря анализатора переменной"?

ставь английский тлк. Нехватало еще кривости перевода тут разбирать.
QUOTE (Proydoha @ Aug 18 2005, 23:56)
Вопрос номер три: Так что же все-таки с токенами и рандомом?

а что с ними?
Proydoha
ERROR: PARSING VARIABLE LIST
Все равно не понимаю.

QUOTE
а что с ними?

Они не работают. Ну то есть в самом начале суть вопроса была почему Random(38)-1 все время дает 10 и почему из всех кастомных токенов работает только первый. Меня попросили показать код и потом пошло-поехало, но не зря.
Lex
QUOTE (Proydoha @ Aug 19 2005, 00:24)
ERROR: PARSING VARIABLE LIST
Все равно не понимаю.

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

рандом одно и то же выдает постоянно..тебе к Айвану, он сталкивался с этим.
Все мои рандомы работают нормально..
с Токенами - ХЗ. Вроде как все верно, может вызываешь неправильно их в диалоге?
Proydoha
Вот здесь:
Neverwinter Script Source
int Check(int nNumber, int nStart, int nStep)


Айван свое по этому поводу уже сказал:
QUOTE
Proydoha рандом привязан к локации и тайлам и прочему. ЕСли локи одинаковые и маленькие то будут одни и те же цифры. Я это уже съел. Читай лексикон.

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

С токенами вроде все правильно (или наоборот все неправильно и наверное с них надо начинать так как 10 я увидел через них). <CUSTOM1> мне это выдавал(из моего скрипта).
Lex
Neverwinter Script Source
int Check(int nNumber, int nStart, int nStep)
{
int nIter = 0;
while (nIter*nStep + nStart <= nNumber)
  {
  if (nNumber == nIter*nStep + nStart)
        return TRUE;
  nIter ++;
  }
return FALSE;
}

void main()
{
/// тут твой скрипт
}

так тадо типа.
Добавлено в [mergetime]1124401586[/mergetime]
токены у меня всегда нормально работали.. Надо смотреть уже как это в модуле сделано.
то же самое с рандомами. У меня все было нормуль с ними.
dumbo
хм...
1.
QUOTE
Custom tokens 0-9 are used by Bioware and should not be used.

2. несколько сокращенный вариант твоих проверок:
Neverwinter Script Source
//...
  if (iNumber==-1)
    sNumber="дв.зеро";
  else
    if (!iNumber)
      sNumber="зеро";
    else
    {
      sNumber=IntToString(iNumber);
      iChetNechetP = iNumber % 2;
      iBlackRedP = (
        (iChetNechetP && (iNumber < 10 || (iNumber > 18 && iNumber < 28))) ||
        (!iChetNechetP && ((iNumber > 10 && iNumber < 19) || iNumber > 28))
      );
      iTretP = (iNumber-1) / 12;
      iPolovinaP = (iNumber-1) / 18;
      iRyadP = (iNumber-1) % 3;
      sChetNechet = iChetNechetP ? "нечетное" : "четное";
      sBlackRed = iBlackRedP ? "красное" : "черное";
      sTret = GetSubString(" 1-1213-2425-36", iTretP * 5, 5);
      sPolovina = iPolovinaP ? "19-36" : " 1-18";
      sRyad = GetSubString(" нижнийсреднийверхний", iRyadP * 7, 7) + " ряд";
    }
//...

note: все "проверочные" переменные (iChetNechetP, iBlackRedP...) нумеруются не с 1 (1,2..), а с 0...
zmey
похоже, пора создавать тему типа "вопросы без ответов"...
Извините, что по сто раз одно и то же, прошу по фейсу не бить и через соломинку не надувать... но:

1. Как сделать, чтобы хенчмен при отдыхе не восстанавливал очки жизни

2. есть ли хаки с огнестрельным оружием типа мушкетов и ползающими тварями( змеями, или чем нибудь типа ормирр из POOL OF RADIANCE

3. Как сделать, чтобы при событии on close саркофага В НЕСКОЛЬКИХ локациях в точках WP_SKELET появились скелеты? (таких точек в одной локации может быть несколько). вешать скрипты на on enter каждой локи не выход...

4.Нужен юзабельный труп колдуна в мантии (без инвентаря). Делаю токой, грохая на on spawn непися. Но тогда труп получается или с инвентарём, или неюзабельный. И он исчезает! А мне по сюжету надо, чтобы труп не исчезал, т.к при использовании на это самый труп уникальной силы предмета должен появляться дух. (кстати как прописывать, на что должна бть использована уникальная сила?) crazy.gif


Добавлено в [mergetime]1124435255[/mergetime]
как добавить запись в журнал, если перс взял в инвентарь предмет. (и как сделать, чтобы запись не обновлялась, если перс ВЫЛОЖИЛ предмет, а потом снова ВЗЯЛ?)
Добавлено в [mergetime]1124435429[/mergetime]
Если не трудно, расскажите, что такое RANDOM, CASE, OBJECT_INVALID и как всё это работает.

и ссылочку на последний лесикон, пожалуйста, интернет медленный, да и недешёвый...
Добавлено в [mergetime]1124435531[/mergetime]
yes.gif И если можно, то все выше написанное подробно, с примерами и пояснениями - мне за шесть дней модуль доделать надо...
Добавлено в [mergetime]1124435643[/mergetime]
Здрасьте, Феникс! Ну друг, ну выручил! Шесть часов возни - и я смог сделать диалог с вещью!
-fenix-
QUOTE (zmey @ Aug 19 2005, 10:05)
2. есть ли хаки с огнестрельным оружием типа мушкетов и ползающими тварями( змеями, или чем нибудь типа ормирр из POOL OF RADIANCE

Есть, а где не знаю smile.gif

QUOTE (zmey @ Aug 19 2005, 10:05)
3. Как сделать, чтобы при событии on close саркофага В НЕСКОЛЬКИХ локациях в точках WP_SKELET появились скелеты? (таких точек в одной локации может быть несколько). вешать скрипты на on enter каждой локи не выход..

Делаешь закрытую локу и в нее помешаешь скилетов, на места их появления ставешь WP(можно тригер растянуть), далее с помощью
Neverwinter Script Source
ActionJumpToObject(object oToJumpTo, int bWalkStraightLineToPoint=TRUE)

кидаешь нужных челов к нужному объекту.
Но наверное лучше использовать
Neverwinter Script Source
ActionJumpToLocation(location lLocation)

и объявлять локацию так,
Neverwinter Script Source
location locLoc = Location(GetArea(таг WP), GetPosition(таг WP), GetFacing(таг WP));

Это уже мой вопрос.

QUOTE (zmey @ Aug 19 2005, 10:05)
как добавить запись в журнал, если перс взял в инвентарь предмет. (и как сделать, чтобы запись не обновлялась, если перс ВЫЛОЖИЛ предмет, а потом снова ВЗЯЛ?)

QUOTE (-fenix- @ Aug 13 2005, 18:11)

Есть 3 функции.

Neverwinter Script Source
AddJournalQuestEntry(string szPlotID, int nState, object oCreature, int bAllPartyMembers=TRUE, int bAllPlayers=FALSE, int bAllowOverrideHigher=FALSE)

GetJournalQuestExperience(string szPlotID)



RemoveJournalQuestEntry(string szPlotID, object oCreature, int bAllPartyMembers=TRUE, int bAllPlayers=FALSE)


Создай задание в мастере сюжета и посмотри появившиеся скрипты.


Мож еще, что напишу попожее.
zmey
Феникс, то есть мне толпу скелетов в закрытой локе делать?
Добавлено в [mergetime]1124437147[/mergetime]
Мне ведь нужно штук пятьдесят скелетов и зомби по руниам замка раскидать! diablo.gif crazy.gif
-fenix-
Random(хх) - генератор рандомных чисел, будет генерировать от 0, до нужного числа(хх)-1.
Random(3) будет генерировать числа от 0, до 2.

Neverwinter Script Source
switch (Random(3))
{
case 0:
    //действия
    break;

case 1:
    //действия
    break;

case 2:
    //действия
    break;

}

case - это один из операторов конструкции switch/case. Смысл ее в следующем.
В switch пишется число, скажем Random(3), а в каждом из 3 case условием выполнения операторов стоит свое значение этого числа.
Если рандом даст 2, то выполнятся операторы стоящие в case 2:.
OBJECT_INVALID - если просто перевести, то можносказать, что ОБЪЕКТ НЕ ДЕЙСТВИТЕЛЕН. Короче такого объекта нет или объект не соответствует каким-то условиям.
QUOTE (zmey @ Aug 19 2005, 10:05)
и ссылочку на последний лесикон, пожалуйста, интернет медленный, да и недешёвый...

Я качал с ВРГ.
Добавлено в 10:49
QUOTE (zmey @ Aug 19 2005, 10:37)
Феникс, то есть мне толпу скелетов в закрытой локе делать? Добавлено в 10:39 Мне ведь нужно штук пятьдесят скелетов и зомби по руниам замка раскидать!

Получается так.

Хм, а можно вообще сделать вторую локацию с руинами(копию), только со скелетами.
И после чего там у тебя, при выходе из данной локи кидать чела уже в эту локу. У тебя ведь сундук стоит в подвале, а руины на верху?
Misty Dragon
Neverwinter Script Source
CreateObject(nObjectType, sTemplate, location, bUseAppearAnimation);


этого никто не отменял

QUOTE
1. Как сделать, чтобы хенчмен при отдыхе не восстанавливал очки жизни


Neverwinter Script Source
int iHenchHP = GetCurrentHitPoints(oHench);

запоминаем количество ХП хенча.

Neverwinter Script Source
effect eEffect = EffectDamage(GetMaxHitPoints(oHench) - iHenchHP,DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect,oHench);

удаляем лишние ХП у хенча.
-fenix-
QUOTE (Misty Dragon @ Aug 19 2005, 11:03)

Neverwinter Script Source
effect eEffect = EffectDamage(GetCurrentHitPoints(oHench) - iHenchHP,DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect,oHench);




Небольшая ошибка, наверное так smile.gif
Neverwinter Script Source
effect eEffect = EffectDamage(GetMaxHitPoints(oHench) - iHenchHP,DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect,oHench);

dumbo
-fenix-
с ХП все было правильно.

zmey
создать скелетов во всех вэйпах с тэгом WP_SKELET:
Neverwinter Script Source
void main()
{
  object oWP;
  int nIdx = 0;
  while (GetIsObjectValid(oWP = GetObjectByTag("WP_SKELET", nIdx)))
  {
    CreateObject(OBJECT_TYPE_CREATURE, "NW_SKELETON", GetLocation(oWP));
    nIdx++;
  }
}


делаем юзабельный труп своими руками: в Advanced свойствах непися убираем все галки(всякие дизармы, Leave lootable corpse итд), время ставим на максимум(32767), в OnSpawn вешаем такое:
Neverwinter Script Source
void main()
{
  ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), OBJECT_SELF);
  // ucorpse - !!resref!! созданного нами плэйса с галочкой usable
  // и моделью Invisible Corpse Object
  object oUse = CreateObject(OBJECT_TYPE_PLACEABLE, "ucorpse",
                            GetLocation(OBJECT_SELF));
}

если делаешь через использование предмета, то нужно в скрипте вызываемом при активации проверять цель применения - если это наш ucorpse, то запускать создание духа итд... или просто в свойствах ucorpse на OnUse поставить скрипт...
Lex
QUOTE (Misty Dragon @ Aug 19 2005, 12:03)
Neverwinter Script Source
CreateObject(nObjectType, sTemplate, location, bUseAppearAnimation);



этого никто не отменял

а лучше в закрытую локу 1 скелета как эталон, а потом запустить цикл

Neverwinter Script Source
object oEtalon = GetObjectByTag("ETALON_SKELET");
int i = 0;
object oPoint = GetObjectByTag("WP_SKELET",i);
while (GetIsObjectValid(oPoint))
    {
    CopyObject(oEtalon,GetLocation(oPoint));
    i++;
    oPoint = GetObjectByTag("WP_SKELET",i);
    }

в закрытую локу скелета с тэгом ETALON_SKELET
в локации поинты WP_SKELET
кусок кода суешь куда тебе надо.
Lex
Том III находится тут
Misty Dragon
кхм.. дык, я так и написал smile.gif
впрочем без разницы. главное сначала взять текущие ХП. после реста они восстановятся, т.е. GetMaxHitPoints(oHench) = GetCurrentHitPoints(oHench).
Misty Dragon
QUOTE (Lex @ Aug 19 2005, 11:45)
а лучше в закрытую локу 1 скелета как эталон, а потом запустить цикл


не факт. итерации лучше разворачивать в последовательные команды, где это только возможно. не известно, оптимизирует ли интерпретатор байт-код, но желательно сделать сделать это. в асме и плюсах это дает хорошую прибавку к производительности.
dumbo
Misty Dragon
применительно к нвн-скриптам(да и вообще к любым известным мне интерпретаторам) принцип разворачивания циклов неактуален. вообще. пока не видел интерпретатора с конвеерами и предсказаниями переходов. а даже если таковой и найдется, то это будет бред чистой воды - на каждую команду байт-кода в любом случае делается куча переходов, вызовов итд. не парься впредь. wink.gif
Lex
Том IV
Proydoha
QUOTE
Custom tokens 0-9 are used by Bioware and should not be used.

Как оказалось именно из-за этого шли все косяки в скрипте. И рандом работал нормально. Так что я извиняюсь за причиненное беспокойство... И пожалуй задам еще один вопрос...
Каким образом можно организовать прием ставок так, что бы игрок мог ввести сумму самостоятельно?

(Все это дело я вешаю на ветки диалога. Его можно будет приостановить до тех пор пока игрок введет требуемую сумму?)
Valleo
Нужно автивировать НПС с которым ты разговариваешь на то чтобы он слушал (SetListener() вроде... посмотри в скриптах), потом задать шаблоны на прием ставок (SetListenPattern(тут параметры, смотри описание скрипта)). И все - когда нужно на определенную ветку вешай переменную, которая будет означать что он принимает ставшу, говоришь в толк ставку по шаблону и он принимает ставку... Короче тебе надо полазить по скриптам банков (должны быть на форуме) с голосовым управлением. Там все понятно.
Exectrix
Вот, нашёл такие слова:
QUOTE
В Авроре есть возможность создать собственный класс со своими харками и т.д.  с Vhall


Очень интересно... Куда жмать?
-fenix-
Exectrix, это не жать, это ручками делать надо. Само создание - это ковыряние 2da файлов, смотри в соответствующей теме.
Из скриптов тут только выдача начального оружия и что-то в этом духе - это есть в базе.
Exectrix
QUOTE
Из скриптов тут только выдача начального оружия и что-то в этом духе

А по подробней об этом иожно? Хочу шоб PC появлялся с пустым мешком при запуске модуля...
-fenix-
QUOTE (Exectrix @ Aug 21 2005, 11:59)
А по подробней об этом иожно? Хочу шоб PC появлялся с пустым мешком при запуске модуля...

Скажем так.

На OnClientEnter в св-вах модуля
Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oItem = GetFirstItemInInventory(oPC);

while (GetIsObjectValid(oItem))
    {
    DestroyObject(oItem);
    oItem = GetNextItemInInventory(oPC);
    }

int i;

for (i=0; i<=13; i++)
    {
    oItem = GetItemInSlot(i, oPC);
    DestroyObject(oItem);
    }
}

Анамиэль
Не подскажет ли кто ,как возможно принудительно снизить уровень персонажа ?
Aiwan
QUOTE (Анамиэль @ Aug 21 2005, 21:37)
Не подскажет ли кто ,как возможно принудительно снизить уровень персонажа ?

Конкретнее. Снизить это как и для чего и у кого? К примеру уже в игре, либо еще не получен хр, либо уже получен надо заморозить. Обрисуй ситуацию.
Lex
QUOTE (Анамиэль @ Aug 21 2005, 19:37)
Не подскажет ли кто ,как возможно принудительно снизить уровень персонажа ?

Анами, заходи на канал, умеешь же и там тебе на все вопросы ответим сразу. smile.gif Ты их только задавать успевай smile.gif
Анамиэль
QUOTE (Aiwan @ Aug 21 2005, 19:49)
Конкретнее. Снизить это как и для чего и у кого? К примеру уже в игре, либо еще не получен хр, либо уже получен надо заморозить. Обрисуй ситуацию.

Конкретно acute.gif .Скажем у PC уровень 2, и уровень надо понизить до 1.В моем модуле это должно бы произойти после того как РС заходит в "неправильный" портал.Заморозить хр само собой не надо.
-=-=-=-=-=-=-
Lex у меня сейчас проблемы с инетом ...только на форум и получается выкладывать мои "умные
вопросы" biggrin.gif
Aiwan
Neverwinter Script Source
void main()
{
            object oPC = GetPCSpeaker(); // Игрок в диалоге
            SetXP(oPC, 100); // присвоим игроку хр нужное
}

Добавлено в [mergetime]1124655026[/mergetime]
А что за модуль?
DEM
Уже 4 том? Прикольно...


Скажите, как зделать что бы после разговор имя НеПиСи менялось?

И можно ли зделать, что бы предположим с 12.00-20.00 игрок (ну или хотя бы тот же НЕПИСЬ) меняли модель? Ну там становились вампиром и т.д.
Lex
QUOTE (DEM @ Aug 22 2005, 00:32)
Скажите, как зделать что бы после разговор имя НеПиСи менялось?

поменять самого НПС. Create\Destroy

QUOTE (DEM @ Aug 22 2005, 00:32)
И можно ли зделать, что бы предположим с 12.00-20.00 игрок (ну или хотя бы тот же НЕПИСЬ) меняли модель? Ну там становились вампиром и т.д.

можно. в ХБ проверяй время и если модель не поменяна, меняй.
Анамиэль
QUOTE (Aiwan @ Aug 21 2005, 22:54)
Добавлено в [mergetime]1124655026[/mergetime]
А что за модуль?

все заработало...спс yes.gif
а модуль лично для меня ,делаю его по мотивам Готики 2, во всяком случае частично.Но показывать что то рано dntknw.gif ..у меня с марта только 3 локи готово более менее.
Сорри за offtopic.gif kiss.gif
DraX
Доброго всем времени суток!
У меня вопрос такого плана. Как сделать так, чтобы после того, как игрок пройдя по определенному месту (в данном случае, ловушке), у него отнималась здоровье. Но, внимание! Чтобы его не просто кацануло, а постепенно aka если персонаж подходит на... триггер, пускай, то у него начинает по-немногу отбавляться здоровье. А как только он сойдет с триггера, все прекращается. Подскажите, плз. this.gif
T34
Если устроить конкурс самых глупых вопросов, то я, вероятно,займу первое место.
Как редактировать официальные кампании?
При запуске тулсет разрешает править только имеющиеся модули, к кампаниям отношения не имеющие.
Dik Morris
1) Пройди, компании.
2) Открой их тулсетом.

Я делаю так: закидываю, в одну папку, тулсет и мод, (мод, в папке нвн, он находится) потом, перетаскиваю мод на иконку, тулсета. Усе
Lex
QUOTE (DraX @ Aug 22 2005, 15:27)
У меня вопрос такого плана. Как сделать так, чтобы после того, как игрок пройдя по определенному месту (в данном случае, ловушке), у него отнималась здоровье. Но, внимание! Чтобы его не просто кацануло, а постепенно aka если персонаж подходит на... триггер, пускай, то у него начинает по-немногу отбавляться здоровье. А как только он сойдет с триггера, все прекращается. Подскажите, плз. this.gif

есть в базе скриптов.
Ghost
QUOTE (T34 @ Aug 22 2005, 17:04)
Как редактировать официальные кампании?

В папке NWM лежат файлы кампании.. Перенеси их в папку Modules и измени окончание с nwm на mod.
T34
QUOTE (Dik Morris @ Aug 22 2005, 16:08)
1) Пройди, компании.

Я прошел первую главу. Этого недостаточно, чтобы можно было ее редактировать, нужно пройти всю оригинальную кампанию целиком?
Dik Morris
Нет, по моему такая последовательность:
Прелюдию, прошел нихрена biggrin.gif
1 главу, прошел открылась, прелюдия
Вроде так, но точно не помню unsure.gif
А вообще, не парься, не проходи. Вон как Ghost, посоветывал делай, так. Удобней и быстрее.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.