XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Kapa6acvlk

offline
Опыт: 151
Активность:
Предмет и его стоимость
Вопрос к умным людям, возможно ли определить стоимость предмета при его подъеме\передаче\продаже и т.п. действиях без создания глобальных переменных или кеша\хеша?
Старый 15.10.2009, 14:21
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Как вариант, записывать стоимость предмета в поле "Health" или в его CustomValue (не помню точно, есть ли он у предметов).
Старый 15.10.2009, 14:59
Kapa6acvlk

offline
Опыт: 151
Активность:
есть, но CustomValue у предметов уже используется, а как ХП его сохранять это не вариант, т.к. можно ударить его разок и у него определяемая стоимость измениться 0_о
Старый 15.10.2009, 15:34
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
создай базу данных на все предметы
Артте добавил:
и, собственно, чем тебя глобальный массив не устраивает?
Старый 15.10.2009, 15:45
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Kapa6acvlk, кому придет в голову ударять по предметам? =) Ну, ты можешь предотвратить этот случай, отлавливая приказ атаки по итему.
Старый 15.10.2009, 15:46
Kapa6acvlk

offline
Опыт: 151
Активность:
Артте:
создай базу данных на все предметы

Артте добавил:
и, собственно, чем тебя глобальный массив не устраивает?
Просто предметов оче6нь много, поэтому не особо хочется создавать БД.
DFlyer:
кому придет в голову ударять по предметам? =)
Есть предметы которые при смерти выпадают, а носить по 2 таких нельзя, чтобы не досталось противнику приходится его уничтожать.
Старый 15.10.2009, 18:39
Чебурашка

offline
Опыт: 5,460
Активность:
Есть предметы которые при смерти выпадают, а носить по 2 таких нельзя, чтобы не досталось противнику приходится его уничтожать.
Сделать триггер, отлавливающий атаку по предмету и уничтожать предмет триггерно
Старый 15.10.2009, 19:55
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Если эти функции работают, то вышеотписавшиеся - краны.
native GetUnitGoldCost      takes integer unitid                        returns integer
native GetUnitWoodCost      takes integer unitid                        returns integer
Старый 15.10.2009, 22:42
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
Kapa6acvlk:
без создания глобальных переменных или кеша\хеша?
а собственно какие причины его не использовать?
df Hunter добавил:
Hellfim:
Если эти функции работают, то вышеотписавшиеся - краны.
native GetUnitGoldCost      takes integer unitid                        returns integer
native GetUnitWoodCost      takes integer unitid                        returns integer
вроде работают :)
Старый 15.10.2009, 23:14
Kapa6acvlk

offline
Опыт: 151
Активность:
df_Hunter:
а собственно какие причины его не использовать?
Причина в том, что не охота создавать БД, возможно есть более простой способ, вот собственно и спрашиваю
Hellfim:
Если эти функции работают, то вышеотписавшиеся - краны.
Я что-то не совсем догоняю, а собственно при чем тут стоимость юнита?
Старый 15.10.2009, 23:35
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Kapa6acvlk, ooops.
Ну тогда такой вариант:
Каждые 0.01 секунды сохранять значение золота для игрока Х. И, когда лавка покупает/продает предмет вычитать новое значение золота из старого.
Старый 16.10.2009, 00:05
Kapa6acvlk

offline
Опыт: 151
Активность:
Hellfim:
Ну тогда такой вариант:
Каждые 0.01 секунды сохранять значение золота для игрока Х. И, когда лавка покупает/продает предмет вычитать новое значение золота из старого.
Пробовал, лажа получается.
Такой еще вопрос, можно ли отдать юниту приказ о продаже конкретного предмета из инвентаря? Юнит комп думаю понятно зачем это надо =)
З.Ы. только не 0,01 сек, для этого есть более нормальное событие.
Kapa6acvlk добавил:
Посочувствуйте мне, я написал БД 1300 строк, руки сейчас отвалятся.
Старый 16.10.2009, 03:52
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
А можно ведь было взять карту, написать программку, если владеешь языком программирования офк, и банально скормить ей файл карты с предметами. А составить из данных jass-код, это элементарно. Остается только в карту скопипастить. Хотя и автоматически в .j можно запихивать. Вообще можно это ещё автоматизировать, добавив в lua. В общем, вариантов множество и совсем не обязательно делать всё руками
Старый 16.10.2009, 15:25
Kapa6acvlk

offline
Опыт: 151
Активность:
Артте:
А можно ведь было взять карту, написать программку, если владеешь языком программирования офк, и банально скормить ей файл карты с предметами. А составить из данных jass-код, это элементарно. Остается только в карту скопипастить. Хотя и автоматически в .j можно запихивать. Вообще можно это ещё автоматизировать, добавив в lua. В общем, вариантов множество и совсем не обязательно делать всё руками
Не понял, можно поподробнее? Я сделал следующим образом:
  1. Перевл в SLK
  2. Свел в Excel'е данные в нужный мне код, и скопировал его оттуда =).
Раньше правда я такой фигней не занимался, первый раз так сказать. Столкнулся с несколькими проблемами, варкравт категорически не хочет обрабатывать функцию в которой имеется где-то более 100 return'ов, или elseif'ов, жалко, пришлось все через просто if делать, теперь в функции где-то 500 if многовато не правда-ли? но более простого решения я не нашел. Если бы можно было заставить компьютерного игрока насильно продавать какой-либо предмет можно было бы обойтись без этого геморроя =(
Старый 16.10.2009, 17:20
SRes
1110101000
offline
Опыт: 9,997
Активность:
Артте, О, элементарно ? Так напиши и помоги автору темы. Впадлу или не можешь ? Дай в ЛС ссылочку с описанием строения файла итемов ( название знаю, а инфы об его строении нету) ?
Старый 16.10.2009, 17:27
Артте
Open up your eyes
offline
Опыт: 23,423
Активность:
Я честно говоря не занимался изучением строения таблиц в карте, но не уверен, что это очень сложно. Как будет время, напишу. Сейчас его, увы, нет
Старый 16.10.2009, 18:02
SRes
1110101000
offline
Опыт: 9,997
Активность:
Увы, но war3map.w3t не таблица, а набор байтов, вот его открыть то и следует.
Старый 16.10.2009, 18:21
Elf_Stratigo

offline
Опыт: 4,699
Активность:
GetItemGoldCostById
http://www.wc3jass.com/viewtopic.php?t=191
GetItemWoodCostById
http://www.wc3jass.com/viewtopic.php?t=192

можно также установить прочность предмета == его стоймость, а функция по узнаванию макс прочности существует
Старый 16.10.2009, 18:45
Kapa6acvlk

offline
Опыт: 151
Активность:
Зачем вам строение w3* фалов, если их можно в человеческий вид привести, то бишь SLK, с ним-то работать куда проще.
Может кто еще что посоветует, мне как-то не нравиться 500 if проверок в одной функции, как-то меня это смущает.
Elf_Stratigo:
GetItemGoldCostById
Спасибо конечно, но где взять функцию FindNextItem? К тому же там утечек гора, и БЖ

Отредактировано Kapa6acvlk, 16.10.2009 в 18:54.
Старый 16.10.2009, 18:47
Elf_Stratigo

offline
Опыт: 4,699
Активность:
так всегда - если хочешь сделать чтото хорошее, делай своё ибо никто кроме тебя незнает, чего ты на самом деле хочешь!
это лишь пример алгоритма, разумеется эта штука будет работать очень медленно...

но как вариант - при загрузке карты прогнать все предметы через эти функции и запомнить их стоймость (в массив или хеш)
ну или ту штуку, которую ты уже сделал - в массивы или хеш...
а брать так: запомнить номер первого предмета (обычно он 'I000', если ты не давал свои иды предметам) и возвращать значение так:
return SuperMassivIntov['I000'-GetItemTypeId(item)]
разумеется массив надо строить с учётом этого...

FindNextItem возвращает ближайший предмет к точке
http://www.wc3jass.com/viewtopic.php?t=190
Старый 16.10.2009, 19:04
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 07:09.