и так, мы уже довольно подробно разобрали задачу очишщения сундука и в процессе обсуждения нащли нужные инструменты ( функции и команды) которые позволят это сделать( и еще надо заметитьпопутно нашли несколько функций, которые нам здесь не понадобяться-ибо не соответсвует тому , что нужно, но это отнюдь не означает, что вы их не будетеиспользовать потом в других местах и задачах-то есть опыт все равно приобретен)
теперь нам из всего найденово надо отобрать нужное и собрать все в месте
и так отбираем из того что выяснили
1 строчка скрипта - определяем "рабочее тело" то есть обьект -сундук
Цитата
object oChest = OBJECT_SELF;
2 строчка скрипта - берем первый предмет из лежащих в сундуке
Цитата
object oItem = GetFirstItemInInventory(oChest);
3 строчка скрипта - уничтожаем выбранный обьект-итем
Цитата
DestroyObject(oItem);
4 строчка скритпа - выбираем следующий предмет из сундука
Цитата
GetNextItemInInventory(oChest);
тогда унас получился примерно такой скрипт
Neverwinter Script Source
void main()
{
object oChest = OBJECT_SELF;
object oItem = GetFirstItemInInventory(oChest);
DestroyObject(oItem);
GetNextItemInInventory(oChest);
}
если мы в тулсете поставим еще один сундук, напишем этот скрипт , обзовем его как нибудь и поставим на соответсвующий слот сундука, то он будет работать ..вообще...но выясниться , что за раз он будет уничтожать только один предмет положеный в сундук( можете проверить кстати

)
вроде чего то не хватает

не правда ли...
ну а теперь посмотрим, что мы еще не использовали в скрипте из выясненного?
а еще у нас нет двух вещей
1) повторения действий, то есть цикла
2) проверки того уже сундук пустой или нет ( или говоря иначе есть ли нам следующий предмет, которого надо брать для уничтожения или нет)
поскольку мы люди хитрые, мы эти две вещи обьеденим в одно
------------------------------------------------------------------------------------------------------------------------------------
для этого сначало разберемся, что и как делает предложеная Лексом функция проверки валидности обьекта
продолжение следует
Добавлено через 24 минуты 15 секунд
описание функции выглядит так
Цитата
// * Returns TRUE if oObject is a valid object.
int GetIsObjectValid(object oObject)
это означает, что функция GetIsObjectValid являеться одной из тех функций, которые дает логический ответ, и есть только два варианта логического ответа
1) TRUE - "утверждение истинно"
2) FALSE - "утверждение ложно"
что это будет означать в нашем случае? и как это применить?
напомню, что нам важно будет знать есть ли еще предмет в сундуке или нет
а это означает, что
1) проверять на существование( валидность) нам следует oItem
2) удолетворяющий ответ унас должен быть, что такой предмет существует(то есть , когда функция GetIsObjectValid скажет гут - TRUE

)
в итоге мы можем написать такое УСЛОВИЕ
GetIsObjectValid (oItem) == TRUE
---------------------------------------------------
Добавлено через 34 минуты 24 секунды
ну а теперь нам осталась вспомнить о циклах
Artlira , несмотря на боязнь слова "цикл", совершенно точно определила тип цикла (циклы,выполняют одни и те же действия ПОКА выполнено какое то условие)- ведь мы не знаем, сколько предметов положено в сундук
и даже написала его оператор( не функцию-кроме функций в языке скриптов есть еще и другие составные части) while
Цитата
Кажется это через функцию while
общий вид цикла с неизвестным числом повторений таков
Цитата
while (<УСЛОВИЕ>)
{
// здесь пишуться те строки скрипта ,
// которые следует выполнять, пока истинно услови
}
теперь вызнаете достаточно, что бы сделать изменения в скрипте, что написан выше..сделайте это самостоятельно