Online MUD игра АРДА

Общедоступные => Строительство и программы => Тема начата: Карина от 09.06.07, 15:30:47

Название: Как проверять заполненность контейнера?
Отправлено: Карина от 09.06.07, 15:30:47
Допустим есть сундук. В сундуке изначально уже что-то лежит.
Его можно открыть, извлечь содержимое, заполнить любым другим содержимым.

Программе нужно принять решение:
если кол-во предметов в судуке = 0 (сундук пуст), то выполнить А
если же кол-во предметов в судуке >= 1 то выполнить Б.

Как мне узнать количество предметов в сундуке?  ::)
Название: Re: Как проверять заполненность контейнера?
Отправлено: Maikroft от 09.06.07, 15:49:41
Бред какой-то. ;)
Название: Re: Как проверять заполненность контейнера?
Отправлено: Локхорн от 09.06.07, 16:02:52
1) опустошить сундук.
2) набрать "жерт все"
3). посчитать количество строк.
Название: Re: Как проверять заполненность контейнера?
Отправлено: Карина от 09.06.07, 17:13:47
вы наверное не поняли.
с точки зрения билдера.
я вешаю тригг на комнату и отслеживаю события, которые происходят с контейнером.
я вижу как его открывают, закрывают, кладут туда предметы, извлекают.
но я не могу посчитать сколько там предметов.
Название: Re: Как проверять заполненность контейнера?
Отправлено: Maikroft от 09.06.07, 17:21:52
Если с точки зрения builder'а: чего ты хочешь добиться в конечном итоге подсчетом предметов?
Название: Re: Как проверять заполненность контейнера?
Отправлено: Карина от 09.06.07, 17:24:13
важен не столько подсчет предметов, сколько наличие их в контейнере.
если контейнер пуст, то программа выполняет некую операцию.
если контейнер чем-то заполнен, хоть одним предметом (можно и больше),
то программа выполняет некую другую операцию
Название: Re: Как проверять заполненность контейнера?
Отправлено: Maikroft от 09.06.07, 17:37:39
Хм. Разве что:

Цитировать
if objtype($o) == 15
if objval0($o) > 10

P.S. Проверка на вместимость, не тестило.
Название: Re: Как проверять заполненность контейнера?
Отправлено: Карина от 09.06.07, 17:58:57
objtype просто даст мне инфу о типе предмета
objval0 для контейнера содержит значение только общего объема и никогда не меняется
но как-то ведь smaug вычисляет сколько в контейнере места?!  ???
он же знает когда нужно сказать "больше не влезает"
Название: Re: Как проверять заполненность контейнера?
Отправлено: Maikroft от 09.06.07, 18:15:42
Не спорю, objval0 - проверка на общую вместимость контейнера, я специально привело пример "if objval0($o) > 10".
Соответственно, в данной строке идет проверка "если вместимость более 10".

В код, пожалуй, не полезу.
Название: Re: Как проверять заполненность контейнера?
Отправлено: Barkett от 09.06.07, 18:39:14
Допустим есть сундук. В сундуке изначально уже что-то лежит.
Его можно открыть, извлечь содержимое, заполнить любым другим содержимым.

Программе нужно принять решение:
если кол-во предметов в судуке = 0 (сундук пуст), то выполнить А
если же кол-во предметов в судуке >= 1 то выполнить Б.

Как мне узнать количество предметов в сундуке?  ::)

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

З.Ы. Условие вверху кстати не требует выяснения ТОЧНОГО кол-ва предметов в сундуке, достаточно знать что их больше одного ;)
Название: Re: Как проверять заполненность контейнера?
Отправлено: Карина от 09.06.07, 18:53:34
предметы из сундука, получил бы их количество в комнате, записал в качестве переменной на моба в качестве хп

как это делается, поточнее, если можно?  ::)
Название: Re: Как проверять заполненность контейнера?
Отправлено: Barkett от 09.06.07, 23:30:24
предметы из сундука, получил бы их количество в комнате, записал в качестве переменной на моба в качестве хп

как это делается, поточнее, если можно?  ::)

http://arda.pp.ru/build/bulletin.txt
Название: Re: Как проверять заполненность контейнера?
Отправлено: Alanna от 10.06.07, 13:41:33
Никакого способа для непосредственной проверки такого условия в мобпрограммах сейчас нет. Никому раньше это не было нужно =о) Если это ДЕЙСТВИТЕЛЬНО будет нужно, можно сделать новую специальную проверку. Способы типа того, о котором говорит Barkett, иногда помогают в подобных случаях, хотя, конечно, специальная проверка лучше. Но нужна ли она?
Название: Re: Как проверять заполненность контейнера?
Отправлено: НеРеВаР от 10.06.07, 22:43:58
Имхо нужна, потому что я сталкивался с такой проблемой:
в программе нужно было подгрузить предмет в контейнер с ограниченной вместимостью, и для этого пришлось вытаскивать оттуда все, что там лежало, и класть только нужные вещи обратно...
Название: Re: Как проверять заполненность контейнера?
Отправлено: Карина от 12.06.07, 18:38:07
Вот, и не только в таких случаях. Я, к примеру, хотела квест на этой проверке завязать. Не вышло...
Чем больше возможностей, тем больше идей. И наоборот, конечно...  ::)