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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
147 страниц V  « < 51 52 53 54 55 > »   
Ответить в эту темуОткрыть новую тему
> Скрипты, Все вопросы и ответы по скриптам
dumbo
сообщение Jun 15 2005, 13:40
Сообщение #1286


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



Scaled
общий смысл цитаты из лексикона сводится к тому, что если хочешь нормально управлять encounter'ом, то рисуй вокруг него триггер, и в OnEnter оного производи необходимые тебе действия. т.е. в твоем случае в OnEnter окружающего encounter триггера нужно вписать:
Neverwinter Script Source
void main()
{
  object oEnc = GetObjectByTag("тэг encounter'а");
  SetEncounterActive(GetIsNight(), oEnc);
}

ps. чтобы не париться с вырисовыванием триггера, проще нарисовать такой же по форме, но чуть больше по размерам и расположить encounter внутри этого триггера.

pss. тэг подправил.. ведь "dd_night_enc" могут и не понять. :)

Сообщение отредактировал dumbo - Jun 15 2005, 13:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение Jun 15 2005, 14:01
Сообщение #1287


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



dumbo
Совсем не обязательно вырисовывать внешний управляющий триггер. Достаточно эти функции юзать на самом Encounter в его OnEnter. ;)

Ночной.
Neverwinter Script Source
void main()
{
  SetEncounterActive(GetIsNight(), OBJECT_SELF);
}


Не ночной.
Neverwinter Script Source
void main()
{
  SetEncounterActive(!GetIsNight(), OBJECT_SELF);
}

Добавлено в [mergetime]1118833521[/mergetime]
ЗЫ. Такая схема вполне успешно ведет себя в Леворе. Так что ремарка от Виктора Моралеса ошибочна. =)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 15 2005, 14:15
Сообщение #1288


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



DBColl
веришь-нет: еще до чтения ремарки проверил именно путем внедрения в OnEnter SetEncounterActive(GetIsNight()) - не ра-бо-та-ет. посмотрел на поведение, и мысли закрались о том, что он выплевывает крич либо до запуска OnEnter, либо просто после прогона OnEnter не проверяет active флаг. после увиденного пошел читать подробнее и в обнаруженной ремарке нашел подтверждение своих мыслей... :)
видимо, у вас там что-то еще приделано... :xz:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DBColl
сообщение Jun 15 2005, 15:23
Сообщение #1289


4-х Кубовый
Иконки Групп

Класс: Некромант
Характер: Lawful Evil
Раса: Человек
NWN: Скриптинг [Sn]
Проклятие Левора



QUOTE (dumbo @ Jun 15 2005, 14:15)
не ра-бо-та-ет. посмотрел на поведение, и мысли закрались о том, что он выплевывает крич либо до запуска OnEnter, либо просто после прогона OnEnter не проверяет active флаг. после увиденного пошел читать подробнее и в обнаруженной ремарке нашел подтверждение своих мыслей...видимо, у вас там что-то еще приделано...

Нет, все именно так, как я сказал. Просто там надо мутить как-то с настройками САМОГО ЭНКАУНТЕРА. Я помню, долго бился с этим вопросом и в итоге нашел именно то положение настроек (active, continued и тп), при котором такая схема заработала. ;) Хотя не исключаю, что что-то в энкаунтерах могло быть пофиксено в ХотУ, потому что Левор, как известно, делался на СоУ и именно ТАМ все работало.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 15 2005, 17:07
Сообщение #1290


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



DBColl
прочитал описание еще раз :) в настройках поставил Single Shot, Active сбросил - вот теперь все правильно работает с SetEncounterActive(GetIsNight()) в OnEnter encounter'a... ;)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 15 2005, 20:20
Сообщение #1291


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

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



В функции

Neverwinter Script Source
void ActionAttack(object oAttackee, int bPassive=FALSE)


FALSE и TRUE - это атака в пассивном и активном режиме, а что эти режимы подразумевают, как их понимать.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 16 2005, 02:51
Сообщение #1292


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



-fenix-
пассивный режим означает то, что атакующий не будет бежать к атакуемому. если у него будет только оружие ближнего боя, то он будет курить бамбук. иначе постреляет.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 16 2005, 13:09
Сообщение #1293


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

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



Люди просветите, что в функциях делает это - int Reserved1(), int Reserved2...int Reserved85(), это ваще за чем?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
dumbo
сообщение Jun 16 2005, 15:45
Сообщение #1294


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

Класс: Фея
Характер: Chaotic Evil
Раса: Тварь
NWN: Скриптинг [PW]



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

ps. в результате прений и мега-флуда(ныне почившего) было выяснено: функции ReservedXX были введены в xp1(SoU) и заменены в xp2(HotU) на группу функций типа itemproperty и функции работы с ними.

Сообщение отредактировал dumbo - Jun 17 2005, 12:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 17 2005, 11:24
Сообщение #1295


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

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



Тут вот особо продвинутые люди создают собственные функции, не подскажет ли кто из них как это делать?

Или тут так не объяснить? Тогда хоть скажите с помощью каких прог(иль в самом тулсете), я тогда сам буду ковыряться(без тупых вопросов не обойтись:D).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 17 2005, 13:06
Сообщение #1296


Level 5
**

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



QUOTE=-fenix-, Jun 17 2005, 11:24]Тут вот особо продвинутые люди создают собственные функции, не подскажет ли кто из них как это делать?[/QUOTE]
Если это "тупой вопрос", то
функции объявляются следующим образом:
<тип возвращаемого значения> <имя функции>(<список параметров>)
{
<тело функции, т.е. тут описано, собственно то что эта функция делает.>
}

Пример:
Neverwinter Script Source
//[NSS]
// Вот функция kill. Она ничего не возвращает, поэтому
// типом возвращаемого значения будет void
// Функция имеет два аргумента:
// object oVictim - это тот кого мы собираемся кильнуть
// int nVis - константа визуального эффекта, которым будет
// сопровождаться смерть несчастного.
void kill(object oVictim, int nVis=VFX_IMP_DEATH)
{
  effect eVis = EffectVisualEffect(nVis); 
  ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oVictim);
  ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oVictim);
}

// Вот функция hasItem, она проверяет наличие предмета с тегом sTagItem
// В инвентаре объекта oInventory
// Вернет TRUE если предмет есть, а иначе - FALSE
int hasItem(object oInventory, string sItemTag)
{
  return GetIsObjectValid(GetItemPossessedBy(oInventory, sItemTag));
}

// вот функция main - главная функция скрипта.
// С нее начинается выполнения сценария и из нее вызываются
// все остальные функции. Эта функция убет нарушителя, если
// тот наступит куда не следует, не имея соответствующего
// аусвайса!
void main()
{
  object oIntruder = GetEnteringObject();
  if(!hasItem(oIntruder, "Ausweis"))
  {
    kill(oIntruder);
  }
}


Добавлено в [mergetime]1119003303[/mergetime]
QUOTE (-fenix- @ Jun 17 2005, 11:24)
Скриптер проекта

:swoon:
Если, вдруг имелось ввиду, как делать движковые функции, то сомневаюсь, что тут тебе кто-нить поможет (*слегка косится на Думбо*).
Хотя особо продвидуные наверное могут и не такое. Сделали ведь, говорять, какие-то умельцы SetName.

Сообщение отредактировал Friedrich - Jun 17 2005, 13:08
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 17 2005, 19:58
Сообщение #1297


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

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



Friedrich
Я ни этот вопрос имел ввиду тупым. Я имел ввиду, что есле это трудно объяснить тут, то намекните и я сам буду разбераться, задавая попутно тупые вопросы.

А пользоваться этими функциями так ?
Neverwinter Script Source
void kill(object oVictim, int nVis=VFX_IMP_DEATH)
{
  effect eVis = EffectVisualEffect(nVis);
  ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oVictim);
  ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oVictim);

}

void main()
{
object oPC = GetPCSpeaker();

kill(oPC, VFX_IMP_DEATH);

}


их надо объявлять в каждом скрипте.

QUOTE
Если, вдруг имелось ввиду, как делать движковые функции, то сомневаюсь, что тут тебе кто-нить поможет

Было бы интересно, но я до этого еще не дорос :)

QUOTE
Скриптер проекта

это к чему???

И еще вопросы
1) Есть в НвН массивы или какие - нибудь условия со счетчиком(как в паскале for) или их делать с помощью while?
2) Есть в НвН метки(как в паскале label)?
3) просветите, что такое инклюд и как его юзать.

Почему столько вопросов? Потому что у меня наконец появилось время для того, что бы заняться изучением НвН'овского скриптинга по человечески. !!!НАКОНЕЦ!!!

Вот скачал сейчас два томика :) скриптов, веселый вечер у меня намечается.

Сообщение отредактировал -fenix- - Jun 17 2005, 20:15
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 17 2005, 22:25
Сообщение #1298


Level 5
**

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



Феникс, лексикон посмотреть не судьба? Или с аглицким вообще никак? Даже если никак, то все равно посмотреть на досуге будет не вредно.

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

Чтобы не переписывать одни и те же функции в разных скриптах, их можно объединять в библиотеки - инклюды (Биоварские инклюды обычно называится nw_i0_* или x*_inc_*, нп: nw_i0_generic).

Директивой #include "filename" при компиляции соотыетствующий файл будет добавлен к основному скрипту. Инклюд не должен содержать функии main.

Далее,
1) циклы в НВСкрипте конечно есть:
int i;
for (i = 0; i < 5; i++)
{
// statements ...
// this loop will cycle i as 0, 1, 2, 3, and 4
}
Аналог for i:=0 to 4 do
или н.п.:
for(i = 4; i >= 0; i--){}
аналог: for i:= 4 downto 0 do

while (expression) { statement; }
выполняется, пока expression истинно. Как в паскале, в общем.

do {statement;} while(expression); Как repeat ... until, только выполняется пока условие истинно.

2) Меток и goto естественно нету, т.к. они есть атрибут "дурного стиля программирования" (или фортрана). :D

3) Массивов как таковых нету, но если очень нужно - то их можно симулировать с помощью локалок по принципу:
Имя локалки = имя массива + номер ячейки. См. биоварский инклюд nw_o0_itemmaker

Еще советую почитать, хотя-бы книжечку по Си, которую тут Айван где-то выкладывал (на предмет синтаксиса). Хотя это не обязательно, Лексикону тебе за глаза хватит.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 18 2005, 13:17
Сообщение #1299


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

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



QUOTE
Феникс, лексикон посмотреть не судьба? Или с аглицким вообще никак? Даже если никак, то все равно посмотреть на досуге будет не вредно.


Да. С англицким вообще никак, но лексикон скачал и ковыряю его потихоньку с помощью сократа и лингво. :(

У меня просто раньше времени не было разбераться в НвН скриптах, экзамены и все такое. Все, что увидел мельком, это if и локалки, их пока и юзал. Про циклы с пост и предусловием в статьях нашел, а про for и label нигде не написано, вот и спросил есть ли таковые. Спсибо за ответы :good:

И новый вопросик

Перевод Валео ни кто не заканчивал?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Aiwan
сообщение Jun 18 2005, 22:46
Сообщение #1300


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

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



QUOTE (-fenix- @ Jun 18 2005, 16:17)
Перевод Валео ни кто не заканчивал?

Нет. Есть желание? Вперед!
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
defolt
сообщение Jun 18 2005, 22:51
Сообщение #1301


Level 8
***

Класс: Рейнджер
Характер: Chaotic Evil
Раса: Нежить



что такое Валео?..или кто такой?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 19 2005, 10:52
Сообщение #1302


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

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



QUOTE
что такое Валео?..или кто такой?


Кто такой. Автор перевода функций скриптов тулсета на русском. Но он дощел до "G" и дальше видемо надоело, тем более, что осталось еще наверно 3/4.

QUOTE
Нет. Есть желание? Вперед!


Желание есть и английский там понять можно(только это дополнительное время), да вот только этих функций еще до Х..., очень много. Короче нужно просто много времени, а его как раз и нет. Уламываю друга, каторый в английском шарит, помочь, но он пока усердно отбивается. :D
Добавлено в 17:19
Тут где-то говорили про функцию, каторая заставляет телеги ездить, кораблики плавать. Ненапишите ее еще разок ПЛИЗ
Добавлено в 22:10
Написал вот это

Neverwinter Script Source
void main()
{
object oPC = GetEnteringObject();
object oNPC1 = GetObjectByTag("NPC_1");
object oNPC2 = GetObjectByTag ("NPC_2");
object oWP = GetObjectByTag ("WP_PC_1");
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/

  if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1)

    return;

    {
    SetLocalInt(OBJECT_SELF, "TRIGGER", 1);
    SetCutsceneMode(oPC);
    AssignCommand(oNPC1, ClearAllActions());
    AssignCommand(oPC, ClearAllActions());

    ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP)));
    ActionDoCommand(AssignCommand(oPC, SetCameraFacing(280.0, 20.0, 45.0,
    CAMERA_TRANSITION_TYPE_MEDIUM)));

    ActionWait(2.5);

    ActionDoCommand(AssignCommand(oNPC1, ActionMoveToObject(oPC)));
    ActionDoCommand(AssignCommand(oNPC1, ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE,
    1.0, 3.0)));
    ActionDoCommand(AssignCommand(oNPC1, PlayVoiceChat(VOICE_CHAT_HELLO)));
    ActionDoCommand(AssignCommand(oNPC1, SpeakString("ÏÐÈÂÅÒ")));
    ActionDoCommand(AssignCommand(oPC, SetCutsceneMode(oPC, FALSE)));
    ActionDoCommand(AssignCommand(oNPC1, ActionStartConversation(oPC)));
    }

}


все нормально только:

НПС должен выполнить команды в таком порядке подойти к ПС-> проиграть анимацию-> проиграть звук-> сказать привет.

А на деле получается так сказал привет-> проиграл звук-> подошел-> проиграл анимацию

ПОЧЕМУ ТАК?



Сообщение отредактировал -fenix- - Jun 19 2005, 22:12
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 20 2005, 19:22
Сообщение #1303


Level 5
**

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



QUOTE (-fenix- @ Jun 19 2005, 10:52)
ActionDoCommand(AssignCommand(oNPC1, ActionMoveToObject(oPC)));
    ActionDoCommand(AssignCommand(oNPC1, ActionPlayAnimation(ANIMATION_FIREFORGET_SALUTE,
    1.0, 3.0)));
    ActionDoCommand(AssignCommand(oNPC1, PlayVoiceChat(VOICE_CHAT_HELLO)));
    ActionDoCommand(AssignCommand(oNPC1, SpeakString("ÏÐÈÂÅÒ")));


Чего такое очередь дейсвий в курсе? Вижу в курсе.

Тогда почему SpeakString, а не ActionSpeakString и PlayVoiceChat, значит, тоже надо в очередь ставить (которая на НПС1 своя собственная).
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
-fenix-
сообщение Jun 20 2005, 19:40
Сообщение #1304


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

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



Friedrich:V: Усе допер.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zik
сообщение Jun 21 2005, 02:53
Сообщение #1305


Level 4
**

Класс: Оборотень
Характер: Neutral Evil
Раса: Тварь



Приветствую вас.

Вот такой у меня вопрос- если в инвентаре игрока есть допустим 10 stacked items (незнаю как перевести- суммированных? :xz: ),
Например 10 зелий лечения. Как при определенном действии уничтожить 5 из них? Например в диалоге- чтобы нпс забирал заданное кол-во этих зелий?

Сообщение отредактировал Zik - Jun 21 2005, 06:53
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Dik Morris
сообщение Jun 21 2005, 08:13
Сообщение #1306


Вечно меняющийся
Иконки Групп

Класс: Монах
Характер: True Neutral
Раса: Человек
NWN: Скриптинг [Sn]



Zik!!! Делается это очень просто для начала создай нужное зелье и дай ему ТЭГ затем, открываешь редактор диалогов, и соответственно открываешь тот диалог, который нужен тебе, далее выбираешь ту ветку диалога в которой NPC должен забрать у игрока зелья, когда ты ее выберешь, нажми вкладку СОВЕРШЕНЫ ДЕЙСТВИЯ там нажми кнопку МАСТЕР СКРИПТОВ там выбери ВОЗМИТЕ У ИГРОКА и в окошечке ВОЗЬМИ ПРЕДМЕТ пиши ТЭГ твоего зелья. Все закончить.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zik
сообщение Jun 21 2005, 09:12
Сообщение #1307


Level 4
**

Класс: Оборотень
Характер: Neutral Evil
Раса: Тварь



В таком случае к сожалению забирается именно предмет- то есть в данном случае все зелья, сложенные в один набор с этим тэгом.
Я имею в виду те предметы, у которых есть размер стэка. К примеру дефолтно у зелий он 10, то есть зелья одинакогого типа сложатся в 1 наборчик с подписью 10. У стрел- 99. Мне необходимо забрать только часть - допустим у меня лежит 99 стрел (изображается как стрела, занимающая 2 квадратика инвентори с подписью 99), мне нужно из них взять 33.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lex
сообщение Jun 21 2005, 10:13
Сообщение #1308


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

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



Работа со стеком у вещей :
Neverwinter Script Source
void SetItemStackSize(object oItem, int nSize)

Neverwinter Script Source
int GetItemStackSize(object oItem)

Технология такая: нашел вещь, узнал сколько их в стеке. Если больше, чем тебе надо взять, то
SetItemStackSize(oItem,GetItemStackSize(oItem)-N)
где N - cколько надо взять.
Иначе берем все (DestroyObject()), N понижаем на GetItemStackSize(object oItem) и бежим дальше по циклу.

(ДО этого надо сделать проверку на общее кол-во вещей и сравнить с N. Скрипт такой есть в базе)





Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Zik
сообщение Jun 21 2005, 11:50
Сообщение #1309


Level 4
**

Класс: Оборотень
Характер: Neutral Evil
Раса: Тварь



А если из общего количества вещей в инвентори отнимать? Например есть 1 упаковка 10 бутылок и одна неполная- 7, всего 17 бутылок, надо отнять 12.

Вот таким скриптом я узнаю сколько всего бутылок в инвентори игрока:
CODE
int GetNumItems(object oTarget,string sItem)
{
int nNumItems = 0;
object oItem = GetFirstItemInInventory(oTarget);
while (GetIsObjectValid(oItem) == TRUE)
{
if (GetTag(oItem) == sItem)
{
nNumItems = nNumItems + GetNumStackedItems(oItem);
}
oItem = GetNextItemInInventory(oTarget);
}
return nNumItems;
}


Не подскажете как из него отнимать? Что нибудь вроде SetNumItems
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Friedrich
сообщение Jun 21 2005, 14:04
Сообщение #1310


Level 5
**

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



Zik
Чего-нить в этом роде
Neverwinter Script Source
int removeStackItems(object oInventory, string sItem, int nNum)
{
  object oItem = GetFirstItemInInventory(oInventory);
  int nCount = nNum; // столько итемов осталось удалить
  while(GetIsObjectValid(oItem) && (nCount > 0))
  {
    if(GetTag(oItem) == sItem)
    {
      int nStack = GetItemStackSize(oItem);
      if (nStack <= nCount)    // ЕСЛИ в стопке предметов меньше,
      {                        // чем нам нужно удалить:
        DestroyObject(oItem);  // - удаляем все стопку
        nCount-=nStack;        // - уменьшаем счетчик на кол-во уд-х пред-ов
      } else                       
      { // ИНАЧЕ сокращ. размер стопки и обнуляем счетчик
        SetItemStackSize(oItem, nStack-nCount);
        nCount = 0;
      } 
    } 
    oItem = GetNextItemInInventory(oInventory);
  }
  return nNum - nCount; // возвращаем кол-во уд-х пред-ов
}

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

147 страниц V  « < 51 52 53 54 55 > » 
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 4th May 2025 - 16:06