У меня в карте очень криво работает система, просто замучила и не знаю в чем причина.
Есть пустой магазин. В него можно заложить на продажу кучу предметов (до 12 слотов на каждый тип итема). Когда продаешь два предмета с одинаковым типом, то складываются в стэк, и их становится два. Но когда покупаешь, то в стэке становится меньше на 1. Когда становится в стэке 0, то удаляешь нафиг.
ребят у меня варкрафт что-то криво работает. Делаю на гуи или на jass все верно по логике, а потом запускаю и что-то не работает так как надо.
основные фишки и ошибки:
  1. когда покупаешь вещь, то в магазине запускается кулдаун (интервал пополнения). Если его в РО поставить на ноль, то работает нормально. Но я использовал хитрость, перед каждой продажей или покупки триггерной коммандой изменяю это. То есть каждый раз добавляю в магазин итем с изменными стэками. (текущий стэк == максимальному стэку), и работает нормально. Однако не все итемы так работают, короче не всегда так работает что-то.
  1. Когда занятых слотов становится 11, то удаляется абилки. И закладывать в лавку больше нельзя, короче нельзя продать. но если купить итем, то освободится слот. Но бывало, что обратно не добавлялась эта абилка. Все дело в коде. Не знаю по каким-причинам но работает не очень. - баг варкрафта. При добавлении итема в магазин, он может заменить другой итем. Короче продает один итем в слотах магазина, и еще кое-что должно быть 4 итема, когда продаешь, по идее заменяет итем. Но получается так, заменяет не только итем, но итемов становится меньше, становится 3. Короче говоря появляется 1 пустой слот. Чтобы решиить эту проблему нужно запомнить все итемы которые есть в магазине. И самому выдавать. Раньше так делал, но потом возникла кое-какая ошибка и не помог понять. Короче удалил так, а зря
Не смогу объяснить своими словами, потому что что-то не так. Не понимаю, у меня кучу дебагов, а хрень какая-то. Помогите пожалуйста. Три недели кажись не могу норм сделать
Если вначале потыкать, то ничего не заметишь. Но если интенсивно потыкать, то получаются ошибки. Это происходит из-за бага варкрафта, когда закладываешь итем 1, он подменяет итем 2. Итем 2 походу пропадает.

Принятый ответ

Тестил, тестил. Думал найду ошибку. Короче не знаю в чем дело, видимо и в правду баг. Решил по-другому. Ловить поставку, и ловить продажу. То есть ловить то, что пришло, и то, что ушло.
событием - "юнит закладывает в лавку" (EVENT_PLAYER_UNIT_PAWN_ITEM) ловим продажу итемов.
GetSellingUnit() =продающий торговец (типа всякие предметы закладывает в магазин и получает деньги)
GetBuyingUnit()=GetTriggerUnit() = покупающий торговец (это обычно магазин)

событием - "юнит закладывает из лавки (продает артефакт)" (EVENT_PLAYER_UNIT_SELL_ITEM) ловим покупку итемов
GetSellingUnit()=GetTriggerUnit()=продающий торговец (обычно это магазин)
GetBuyingUnit() = покупающий торговец (наш герой получает артефакты)
Решил, я по-своему. Короче, видимо, итем в магазине исчезает при добавлении. Попробовал запоминать все добавленные итемы, и при добавлении я сначала удалю всё в магазине, а потом заново добавлю. Пришлось, еще порядок (номер слотов) запоминать, а то строятся ключи хэша на строгом порядке. Если возьму и заберу итем посередине, придется заново выстраивать порядок.
Не знаю, пока тестил много времени, пока без косяков. Главное, что работает. Меня это радует. Но пока не буду спешить. Мне бы хотелось затестить норм.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
16
7 лет назад
0
вообще не понял, о чем речь во второй проблеме. нормализуй "абилки", "итемы" и т.п., а то кажется, что речь об одном, потом - о другом.
не встречался с багами при использовании динамических продаж юнитов. если слотов в магазе нет, а ты пытаешься добавить еще кого-то в продажу, то хз что там произойдет
0
27
7 лет назад
Отредактирован MpW
0
всмысле нормализуй "абилки", "итемы"?
ну в этом то и хитрость, когда в лавке 5 стэков, покупаешь и становится 4 стэка и 1 еще в кулдауне. Чтобы этого кулдауна не было, я ему добавлял повторно этот же тип (текущий стэк == максимальный стэк == 4). Никогда проблем не было, но иногда что-то итемы пропадают.
Ну и на том и проверки у меня. Если кол-во слотов больше 11, то значит больше не давать.

короче не знаю в чем проблема. была до этого предыдущая версия. Это будет замечено в этой старой версии Item v8 (ссылка), я подобрал 6 итемов с земли и заложил в лавку. потом подобрал еще 6 итемов, 5 заложил также в лавку. один уже не мог (так и должно, ибо мест нет).
потом купил в лавке (дебаг показывает что в лавке стало снова 10, теперь могу снова заложить итем в лавку), я заложил (дебаг говорит что там 11, но на самом деле там стало 9, просто проданный/заложенный занял место другого, а тот исчез видимо). исправил это дело с помощью интервала (в РО всем итемам выставил интервал пополнения (кулдауна) на ноль и все заработало, и немного в коде подправил (хотя ничего критичного, скорее косметический характер), но больше не знаю что. в новой версии бывают баги, но редко
Загруженные файлы
0
30
7 лет назад
0
дебаг говорит что там 11, но на самом деле там стало 9
Возможно, есть какая-то проблема в том, как считает дебаг, перепроверь.
0
27
7 лет назад
0
Clamp, нет, не в этом.
0
24
6 лет назад
0
Steal nerves, Сделай с нуля или возьми готовую на хайве.
0
27
6 лет назад
Отредактирован MpW
0
Решил добить эту систему, но что-то не понимаю, почему так происходит (логически все верно). Мне кажется дело в варе, а не в коде.
пример
Вот, допустим, у вас есть пустой магазин, и кучу валяющих айтемов.
Вы забиваете полностью магазин предметами. У вас ограничение максимум 11 слотов, больше не может занять. Дебаг пишет, что максимум 11. Там своего рода счетчик. Короче удаляется у магазина абилка 'Apit' (Лавка: Продать предмет), вы не сможете ничего продавать в этот магазин, так как удалена абилка.
Далее покупаем "талисман здоровья", счетчик становится 10. Абилка 'Apit' (Лавка: Продать предмет) добавляется обратно
Далее покупаем "пояс богатыря", счетчик становится 9.
Следом - прикупим "перчатки скорости". счетчик становится 8
покупаем "флейту меткости". счетчик становится 7.
покупаем "одеяние мага". счетчик становится 6.
не хватило места, поэтому будем продавать. часто багуется тогда, когда итемы закладываешь в магазин. Короче может быть так что пропадает из магазина какой-то итем. В этом и баг. Например, продажа произошла, а в магазине новый итем заменил слот со старым, а старый пропал. Или просто пропадает. Увидите ниже. Не знаю, в чем дело. Очень бесит.
Продаю "сапоги скорости", счетчик становится +7
продаю "талисман здоровья", счетчик становится +8. А вот на самом деле в магазине предметов всего 7. Пропало кольцо защиты из магазина.
продаю "пояс богатыря", счетчик становится +9. !!А на самом деле в магазине предметов по прежнему становится 7. Пропал "Огненный плащ".
продаю "перчатки скорости", счетчик становится +10. Конечно изменилось немного +8 стало
продаю "флейту меткости", счетчик показывает +11 (все, я больше не могу продавать/закладывать в этот магазин, так как абилку 'Apit' (Лавка: Продать предмет) удалил). Кол-во итемов в магазине +9
Хотел бы по-другому:
если было бы известно какому магазину ты продаешь, а так сложно узнать. регулировать поставки итемов в магазин и их продажу.
0
16
6 лет назад
0
ну, очевидно, хардкодный баг, я не шарю
0
27
6 лет назад
Отредактирован MpW
0
Тестил, тестил. Думал найду ошибку. Короче не знаю в чем дело, видимо и в правду баг. Решил по-другому. Ловить поставку, и ловить продажу. То есть ловить то, что пришло, и то, что ушло.
событием - "юнит закладывает в лавку" (EVENT_PLAYER_UNIT_PAWN_ITEM) ловим продажу итемов.
GetSellingUnit() =продающий торговец (типа всякие предметы закладывает в магазин и получает деньги)
GetBuyingUnit()=GetTriggerUnit() = покупающий торговец (это обычно магазин)

событием - "юнит закладывает из лавки (продает артефакт)" (EVENT_PLAYER_UNIT_SELL_ITEM) ловим покупку итемов
GetSellingUnit()=GetTriggerUnit()=продающий торговец (обычно это магазин)
GetBuyingUnit() = покупающий торговец (наш герой получает артефакты)
Решил, я по-своему. Короче, видимо, итем в магазине исчезает при добавлении. Попробовал запоминать все добавленные итемы, и при добавлении я сначала удалю всё в магазине, а потом заново добавлю. Пришлось, еще порядок (номер слотов) запоминать, а то строятся ключи хэша на строгом порядке. Если возьму и заберу итем посередине, придется заново выстраивать порядок.
Не знаю, пока тестил много времени, пока без косяков. Главное, что работает. Меня это радует. Но пока не буду спешить. Мне бы хотелось затестить норм.
Загруженные файлы
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.