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

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

 Правила этого форума ПРАВИЛА РАЗДЕЛА
> Азы скриптинга NWN/NWN2. Внеклассные занятия, Открыто для всех желающих
Neo
сообщение Oct 6 2007, 22:55
Сообщение #1



Иконки Групп

Класс: Пьяный Мастер
Характер: Lawful Good
Раса: Тварь
MySQL, PHP, JavaScript
Порядок Времени



а это... можно спросить? (IMG:style_emoticons/kolobok_light/blush.gif) а что такое переменная? (IMG:style_emoticons/kolobok_light/blush.gif)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
 
Открыть новую тему
Ответов
mamuc
сообщение Oct 11 2007, 10:17
Сообщение #2


Лорд AxisTown'a
Иконки Групп

Класс: Монах
Характер: Lawful Good
Раса: Дварф
NWN: Маппинг



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

теперь нам из всего найденово надо отобрать нужное и собрать все в месте
и так отбираем из того что выяснили
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);
}

если мы в тулсете поставим еще один сундук, напишем этот скрипт , обзовем его как нибудь и поставим на соответсвующий слот сундука, то он будет работать ..вообще...но выясниться , что за раз он будет уничтожать только один предмет положеный в сундук( можете проверить кстати (IMG:style_emoticons/kolobok_light/declare.gif) )

вроде чего то не хватает (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) не правда ли...
ну а теперь посмотрим, что мы еще не использовали в скрипте из выясненного?

а еще у нас нет двух вещей
1) повторения действий, то есть цикла
2) проверки того уже сундук пустой или нет ( или говоря иначе есть ли нам следующий предмет, которого надо брать для уничтожения или нет)

поскольку мы люди хитрые, мы эти две вещи обьеденим в одно (IMG:style_emoticons/kolobok_light/biggrin.gif)
------------------------------------------------------------------------------------------------------------------------------------

для этого сначало разберемся, что и как делает предложеная Лексом функция проверки валидности обьекта

продолжение следует

Добавлено через 24 минуты 15 секунд

описание функции выглядит так
Цитата
// * Returns TRUE if oObject is a valid object.
int GetIsObjectValid(object oObject)


это означает, что функция GetIsObjectValid являеться одной из тех функций, которые дает логический ответ, и есть только два варианта логического ответа
1) TRUE - "утверждение истинно"
2) FALSE - "утверждение ложно"

что это будет означать в нашем случае? и как это применить?

напомню, что нам важно будет знать есть ли еще предмет в сундуке или нет
а это означает, что
1) проверять на существование( валидность) нам следует oItem
2) удолетворяющий ответ унас должен быть, что такой предмет существует(то есть , когда функция GetIsObjectValid скажет гут - TRUE (IMG:style_emoticons/kolobok_light/biggrin.gif) )

в итоге мы можем написать такое УСЛОВИЕ
GetIsObjectValid (oItem) == TRUE
---------------------------------------------------


Добавлено через 34 минуты 24 секунды

ну а теперь нам осталась вспомнить о циклах
Artlira , несмотря на боязнь слова "цикл", совершенно точно определила тип цикла (циклы,выполняют одни и те же действия ПОКА выполнено какое то условие)- ведь мы не знаем, сколько предметов положено в сундук
и даже написала его оператор( не функцию-кроме функций в языке скриптов есть еще и другие составные части) while (IMG:style_emoticons/kolobok_light/good.gif)
Цитата
Кажется это через функцию while



общий вид цикла с неизвестным числом повторений таков
Цитата
while (<УСЛОВИЕ>)
{
// здесь пишуться те строки скрипта ,
// которые следует выполнять, пока истинно услови

}


теперь вызнаете достаточно, что бы сделать изменения в скрипте, что написан выше..сделайте это самостоятельно (IMG:style_emoticons/kolobok_light/declare.gif)

Сообщение отредактировал mamuc - Oct 11 2007, 11:44
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Сообщений в этой теме
- Neo   Азы скриптинга NWN/NWN2. Внеклассные занятия   Oct 6 2007, 22:55
- - Aiwan   Переме́нная в традиционных языках программиро...   Oct 7 2007, 11:45
- - Vhall   QUOTE(Ёжик @ Oct 7 2007, 14:03) Почему oN...   Oct 7 2007, 13:43
- - mamuc   ЦитатаИнтеджер integer - это целое значение. может...   Oct 8 2007, 09:26
- - Neo   Цитата(mamuc @ Oct 8 2007, 10:26) маленьк...   Oct 8 2007, 13:43
- - mamuc   ЦитатаКаждый в скрипте имя oSelf сменит на свой ни...   Oct 8 2007, 14:23
- - Aiwan   mamuc, мне нужен был результат в виде кода. Я хочу...   Oct 8 2007, 16:14
- - Artlira   mamuc Если проиграть вариант с сундуком, то должн...   Oct 9 2007, 02:36
- - Lex   Да, именно так и будет. Добавлено через 3 минуты ...   Oct 9 2007, 08:15
- - mamuc   ЦитатаПри условии, что сундук пуст (OnClose), cкри...   Oct 9 2007, 08:54
- - Aiwan   Не надо ничего объединять. Лебедь Рак и Щука тоже ...   Oct 9 2007, 09:10
- - mamuc   ЦитатаНе надо ничего объединять. Лебедь Рак и Щука...   Oct 9 2007, 09:19
- - Griffon   Хорош вам уже грызться Neverwinter Script Sour...   Oct 9 2007, 11:33
- - Aiwan   Цитата(mamuc @ Oct 9 2007, 12:19) то есть...   Oct 9 2007, 11:52
- - mamuc   Цитатаobject Target=PC если ты хочешь это сделать ...   Oct 9 2007, 11:56
- - Griffon   Найти не так все сложно Neverwinter Script Source...   Oct 9 2007, 12:27
- - mamuc   Цитатаobject oUser = GetLastUsedBy() ; это есть то...   Oct 9 2007, 13:05
- - Artlira   ЦитатаЕсть мысли (Хотя бы на словах), как сделать ...   Oct 9 2007, 13:40
- - Griffon   Цитата(mamuc @ Oct 9 2007, 12:56) и еще о...   Oct 9 2007, 13:40
- - mamuc   ЦитатаМне кажется надо изменить определение объект...   Oct 9 2007, 13:53
- - Artlira   Цитатаа теперь найдите функцию с какой вы можете д...   Oct 9 2007, 14:42
- - mamuc   ЦитатаGiveGoldToCreature(GetPCSpeaker(),1000);? фу...   Oct 9 2007, 14:53
- - Griffon   Не не верно. Это подойдет при разговоре. Правильна...   Oct 9 2007, 14:56
- - mamuc   ЦитатаGiveGoldToCreature(GetLastClosedBy(),1000)? ...   Oct 9 2007, 15:27
- - Lex   Цитата(Artlira @ Oct 9 2007, 15:42) GiveG...   Oct 9 2007, 15:59
- - Griffon   Neverwinter Script Sourcevoid main() {   ...   Oct 9 2007, 18:34
- - Lex   Цитата(Griffon @ Oct 9 2007, 19:34) пришл...   Oct 9 2007, 19:51
- - Griffon   Идея идиотская, конечно же. Поскольку придется выл...   Oct 9 2007, 21:24
- - Lex   Цитата(Griffon @ Oct 9 2007, 22:24) пасат...   Oct 9 2007, 21:27
- - Artlira   Цитатакак скриптом сделать уничтожение всего , что...   Oct 10 2007, 04:14
- - Lex   Цитата(Artlira @ Oct 10 2007, 05:14) 2. О...   Oct 10 2007, 08:55
- - mamuc   то Griffon Цитатаvoid main() { object oPC ...   Oct 10 2007, 09:25
- - Lex   Может не стоит пока циклы?   Oct 10 2007, 09:40
- - mamuc   ЦитатаМожет не стоит пока циклы? стоит - это ведь...   Oct 10 2007, 09:47
- - Lex   Цитата(mamuc @ Oct 10 2007, 10:47) и кста...   Oct 10 2007, 11:00
- - mamuc   Цитатаа я кстати знаю как без цикла это сделать, п...   Oct 10 2007, 12:13
- - Lex   Цитата(mamuc @ Oct 10 2007, 13:13) и без ...   Oct 10 2007, 12:26
- - mamuc   а условие у нас и так само собой появиться - ведь ...   Oct 10 2007, 12:37
- - Lex   Цитата(mamuc @ Oct 10 2007, 13:37) ...   Oct 10 2007, 13:02
- - mamuc   Цитататы чего-то путаешь unacquire, а не unequip....   Oct 10 2007, 13:14
- - Griffon   mamuc, Цитата(mamuc @ Oct 10 2007, 10:25...   Oct 10 2007, 15:32
- - Artlira   Цитатабеда в том, что это - первый предмет в сунду...   Oct 10 2007, 15:36
- - Lex   Цитата(Artlira @ Oct 10 2007, 16:36) Може...   Oct 10 2007, 16:12
- - mamuc   и так, мы уже довольно подробно разобрали задачу о...   Oct 11 2007, 10:17
- - Artlira   Цитатасуть именно "в круговую". И еще - ...   Oct 11 2007, 10:58
- - Lex   Цитата(Artlira @ Oct 11 2007, 11:58) if (...   Oct 11 2007, 11:23
- - mamuc   то Artlira только одна маленькая ошибка(даже н...   Oct 11 2007, 11:43
- - Lex   Цитата(Griffon @ Oct 9 2007, 22:24) функц...   Oct 13 2007, 17:27
- - Vhall   [ OFFTOP ]QUOTE(Lex @ Oct 13 2007, 18:27)...   Oct 13 2007, 18:07
- - Lex   Вал, 6 из 10 правильно Добавлено через 21 минуту...   Oct 13 2007, 18:45
- - shadowdweller   [ OFFTOP ] 1. .. определяет, кто последний взял/по...   Oct 13 2007, 20:10
- - Lex   shadowdweller, 1 неправильное.   Oct 13 2007, 20:33
- - shadowdweller   Эх, если бы еще уметь пользоваться всеми этими фун...   Oct 13 2007, 20:59
- - Artlira   Цитатаcобсно задание простое. Описать что делает с...   Oct 19 2007, 12:05
- - mamuc   у нас была небольшая пауза во время которой вы мог...   Oct 19 2007, 12:48
- - Artlira   Цитататеперь нам надо весь процесс квеста отскрипт...   Oct 29 2007, 04:49
- - Lex   Цитата(Artlira @ Oct 29 2007, 04:49) Мне ...   Oct 29 2007, 09:37
- - mamuc   Lex я дал такое задание и потому , что оно ЕСТЕСТВ...   Oct 29 2007, 10:11
- - shadowdweller   Решилась таки тоже ответить. В принципе, тут мо...   Oct 30 2007, 23:40
2 страниц V   1 2 >


Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



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