Автор Тема: Как проверять заполненность контейнера?  (Прочитано 14256 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
Допустим есть сундук. В сундуке изначально уже что-то лежит.
Его можно открыть, извлечь содержимое, заполнить любым другим содержимым.

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

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

Оффлайн Maikroft

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Бред какой-то. ;)
Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis

Оффлайн Локхорн

  • Громогласный
  • ******
  • Сообщений: 3420
  • Карма: 4
  • Псевдомудрое и как бы мыслящее
    • http://oper.ru
1) опустошить сундук.
2) набрать "жерт все"
3). посчитать количество строк.
bash: Помоему, у геймеров есть только один инстинкт - инстинкт автосохранения

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
вы наверное не поняли.
с точки зрения билдера.
я вешаю тригг на комнату и отслеживаю события, которые происходят с контейнером.
я вижу как его открывают, закрывают, кладут туда предметы, извлекают.
но я не могу посчитать сколько там предметов.
Ваша тётя

Оффлайн Maikroft

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Если с точки зрения builder'а: чего ты хочешь добиться в конечном итоге подсчетом предметов?
Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
важен не столько подсчет предметов, сколько наличие их в контейнере.
если контейнер пуст, то программа выполняет некую операцию.
если контейнер чем-то заполнен, хоть одним предметом (можно и больше),
то программа выполняет некую другую операцию
Ваша тётя

Оффлайн Maikroft

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Хм. Разве что:

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

P.S. Проверка на вместимость, не тестило.
Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
objtype просто даст мне инфу о типе предмета
objval0 для контейнера содержит значение только общего объема и никогда не меняется
но как-то ведь smaug вычисляет сколько в контейнере места?!  ???
он же знает когда нужно сказать "больше не влезает"
Ваша тётя

Оффлайн Maikroft

  • Братство Ронинов
  • Герой
  • ****
  • Сообщений: 2063
  • Карма: -38
  • He B Ce6e
Не спорю, objval0 - проверка на общую вместимость контейнера, я специально привело пример "if objval0($o) > 10".
Соответственно, в данной строке идет проверка "если вместимость более 10".

В код, пожалуй, не полезу.
Jedem das Seine
Mel in ore, verba in lacis, fel in corde, fraus in fractis

Оффлайн Barkett

  • Любимец Богов
  • ***
  • Сообщений: 1318
  • Карма: -6
Допустим есть сундук. В сундуке изначально уже что-то лежит.
Его можно открыть, извлечь содержимое, заполнить любым другим содержимым.

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

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

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

З.Ы. Условие вверху кстати не требует выяснения ТОЧНОГО кол-ва предметов в сундуке, достаточно знать что их больше одного ;)
если у вас совесть чиста, значит ваш друг - Бог. (с) Е.Ачилова

http://klanz.ru/ref/user_4535

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
предметы из сундука, получил бы их количество в комнате, записал в качестве переменной на моба в качестве хп

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

Оффлайн Barkett

  • Любимец Богов
  • ***
  • Сообщений: 1318
  • Карма: -6
предметы из сундука, получил бы их количество в комнате, записал в качестве переменной на моба в качестве хп

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

http://arda.pp.ru/build/bulletin.txt
если у вас совесть чиста, значит ваш друг - Бог. (с) Е.Ачилова

http://klanz.ru/ref/user_4535

Оффлайн Alanna

  • Бессмертные
  • Победитель нежити
  • *****
  • Сообщений: 613
  • Карма: 5
Никакого способа для непосредственной проверки такого условия в мобпрограммах сейчас нет. Никому раньше это не было нужно =о) Если это ДЕЙСТВИТЕЛЬНО будет нужно, можно сделать новую специальную проверку. Способы типа того, о котором говорит Barkett, иногда помогают в подобных случаях, хотя, конечно, специальная проверка лучше. Но нужна ли она?
Легконогая

Оффлайн НеРеВаР

  • Орден Теней
  • Путешественник
  • **
  • Сообщений: 202
  • Карма: 2
  • Пол: Мужской
Имхо нужна, потому что я сталкивался с такой проблемой:
в программе нужно было подгрузить предмет в контейнер с ограниченной вместимостью, и для этого пришлось вытаскивать оттуда все, что там лежало, и класть только нужные вещи обратно...
There Are A Lot Of People, Totally Opposed To VIOLENCE.
There Are All Dead... (с)

Оффлайн Карина

  • Завсегдатай
  • *
  • Сообщений: 81
  • Карма: 2
  • Здравствуйте, я ваша тётя!
Вот, и не только в таких случаях. Я, к примеру, хотела квест на этой проверке завязать. Не вышло...
Чем больше возможностей, тем больше идей. И наоборот, конечно...  ::)
Ваша тётя