Kapa6acvlk
offline
Опыт:
151Активность: |
Предмет и его стоимость
Вопрос к умным людям, возможно ли определить стоимость предмета при его подъеме\передаче\продаже и т.п. действиях без создания глобальных переменных или кеша\хеша? |
15.10.2009, 14:21 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
43,079Активность: |
Как вариант, записывать стоимость предмета в поле "Health" или в его CustomValue (не помню точно, есть ли он у предметов). |
15.10.2009, 14:59 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kapa6acvlk
offline
Опыт:
151Активность: |
есть, но CustomValue у предметов уже используется, а как ХП его сохранять это не вариант, т.к. можно ударить его разок и у него определяемая стоимость измениться 0_о |
15.10.2009, 15:34 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Артте
Open up your eyes
offline
Опыт:
23,423Активность: |
создай базу данных на все предметы
Артте добавил: и, собственно, чем тебя глобальный массив не устраивает? |
15.10.2009, 15:45 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DFlyer
<3 MJ
offline
Опыт:
43,079Активность: |
Kapa6acvlk, кому придет в голову ударять по предметам? =) Ну, ты можешь предотвратить этот случай, отлавливая приказ атаки по итему. |
15.10.2009, 15:46 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kapa6acvlk
offline
Опыт:
151Активность: |
Артте:
создай базу данных на все предметы Артте добавил: и, собственно, чем тебя глобальный массив не устраивает? Просто предметов оче6нь много, поэтому не особо хочется создавать БД.
DFlyer:
кому придет в голову ударять по предметам? =) Есть предметы которые при смерти выпадают, а носить по 2 таких нельзя, чтобы не досталось противнику приходится его уничтожать. |
15.10.2009, 18:39 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Чебурашка
offline
Опыт:
5,460Активность: |
Сделать триггер, отлавливающий атаку по предмету и уничтожать предмет триггерно |
15.10.2009, 19:55 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
Если эти функции работают, то вышеотписавшиеся - краны.
|
15.10.2009, 22:42 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
Kapa6acvlk:
а собственно какие причины его не использовать? df Hunter добавил: Hellfim: вроде работают :) |
15.10.2009, 23:14 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kapa6acvlk
offline
Опыт:
151Активность: |
|
15.10.2009, 23:35 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
Kapa6acvlk, ooops. Ну тогда такой вариант: Каждые 0.01 секунды сохранять значение золота для игрока Х. И, когда лавка покупает/продает предмет вычитать новое значение золота из старого. |
16.10.2009, 00:05 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kapa6acvlk
offline
Опыт:
151Активность: |
Hellfim:
Пробовал, лажа получается. Такой еще вопрос, можно ли отдать юниту приказ о продаже конкретного предмета из инвентаря? Юнит комп думаю понятно зачем это надо =) З.Ы. только не 0,01 сек, для этого есть более нормальное событие.
Kapa6acvlk добавил: Посочувствуйте мне, я написал БД 1300 строк, руки сейчас отвалятся. |
16.10.2009, 03:52 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Артте
Open up your eyes
offline
Опыт:
23,423Активность: |
А можно ведь было взять карту, написать программку, если владеешь языком программирования офк, и банально скормить ей файл карты с предметами. А составить из данных jass-код, это элементарно. Остается только в карту скопипастить. Хотя и автоматически в .j можно запихивать. Вообще можно это ещё автоматизировать, добавив в lua. В общем, вариантов множество и совсем не обязательно делать всё руками |
16.10.2009, 15:25 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kapa6acvlk
offline
Опыт:
151Активность: |
Артте:
Не понял, можно поподробнее? Я сделал следующим образом:
|
16.10.2009, 17:20 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SRes
1110101000
offline
Опыт:
9,997Активность: |
Артте, О, элементарно ? Так напиши и помоги автору темы. Впадлу или не можешь ? Дай в ЛС ссылочку с описанием строения файла итемов ( название знаю, а инфы об его строении нету) ?
|
16.10.2009, 17:27 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Артте
Open up your eyes
offline
Опыт:
23,423Активность: |
Я честно говоря не занимался изучением строения таблиц в карте, но не уверен, что это очень сложно. Как будет время, напишу. Сейчас его, увы, нет |
16.10.2009, 18:02 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
SRes
1110101000
offline
Опыт:
9,997Активность: |
Увы, но war3map.w3t не таблица, а набор байтов, вот его открыть то и следует.
|
16.10.2009, 18:21 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
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 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kapa6acvlk
offline
Опыт:
151Активность: |
Зачем вам строение w3* фалов, если их можно в человеческий вид привести, то бишь SLK, с ним-то работать куда проще.
Может кто еще что посоветует, мне как-то не нравиться 500 if проверок в одной функции, как-то меня это смущает. Elf_Stratigo:
Спасибо конечно, но где взять функцию FindNextItem? К тому же там утечек гора, и БЖ Отредактировано Kapa6acvlk, 16.10.2009 в 18:54. |
16.10.2009, 18:47 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
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 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|