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

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

Ответ
 
Chester
Best for you!
offline
Опыт: 5,702
Активность:
Восстановить ману
Вопрос таков, как востановить манну за спел который использовал только что?
Старый 14.09.2008, 13:17
Dragon Knight
Меткий стрелок!!!
offline
Опыт: 4,138
Активность:
Отслеживать когда юнит приводит способность в действие и восстанавливать ему ману!
Старый 14.09.2008, 13:39
Пикси

offline
Опыт: 2,422
Активность:
Тут восстанавлвается мана только за завершенные способности, можешь добавить событие "прекращает".
Прикрепленные файлы
Тип файла: w3x Ещё тупо спелл.w3x (16.4 Кбайт, 12 просмотров )
Старый 14.09.2008, 13:41
Scorched

offline
Опыт: 7,912
Активность:
Но динамически просто так не узнать(теоретически можно), сколько он стоил маны, легче поставить, чтобы мана не отнималась или через уровни, если необходима процентная "скидка"
Вопрос: зачем?
Старый 14.09.2008, 13:45
NETRAT

offline
Опыт: 83,712
Активность:
Специальной функции, которая позволяет узнать сколько было потрачено маны на спелл не существует. Эмуляции типа подсчета разницы между маной до начала каста и после завершения каста, могут значительно отличаться от маны потраченной на каст. Т.о. самый верный способ - создавать базу по затратам маны на абилку, что есть занятие геморрное.
Старый 14.09.2008, 15:26
akkolt

offline
Опыт: 13,826
Активность:
перед использованием спелла замеряй ману юнита, а затем после использования вновь ставь ему старое значение.
Старый 14.09.2008, 15:31
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
Т.о. самый верный способ - создавать базу по затратам маны на абилку, что есть занятие геморрное.


ничего геморного в этом нету имхо, как раз самый прсото вариант

ADOLF добавил:
Цитата:
перед использованием спелла замеряй ману юнита, а затем после использования вновь ставь ему старое значение.

очень геморно, почти невозможно
Старый 14.09.2008, 15:40
Chester
Best for you!
offline
Опыт: 5,702
Активность:
Пытался вот таким способом:

Заносил текущее значение маны у юниат и плюсовал к нему что нуна добавить, а потом устанавлевал это значение юниту(все делается сразу, никакиз промежутков времени между занесениет+добавлением и сетом нету). Но оно чёто не пашет. У юнита было изначально 100 маны, он кастонул(-50),(у меня поидее в тригах условия не прошли для каста) и я ему добавлял (текущее знач манны+50), но оно всегда становилось 50, а не 100.

Chester добавил:
З.Ы: Akkolt появился, а то говорил что забил на вар )))
Старый 14.09.2008, 23:48
Gres
Кораэлестраз
offline
Опыт: 18,575
Активность:
А можно гденить посмотреть как расчитывает вар для "Заклинания Крови"?
Старый 15.09.2008, 07:27
V1ctor1ous

offline
Опыт: 23,781
Активность:
Пмоему это невозможно,только если тригерно не отписывать все
Старый 15.09.2008, 07:45
NETRAT

offline
Опыт: 83,712
Активность:
ADOLF то есть база по спеллам это теперь легко? в каком месте? я кэшно понимаю, я кодер, у меня есть утиль, парсящий обьектные файлы, для мя собрать такую базу легко...

Или этот скилл должен работать для максимум пару десятков спеллов?
Старый 15.09.2008, 13:11
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
то есть база по спеллам это теперь легко?


1) это по идее должен делать генПак, но я не пробовал) ну можно самописной тулой делать

2) копипаст строки set database_MANA[n]=0123456789, переставить индекс и значение, что в этом можеть быть сложного?! это примерно 10 кликов на спелл, если это делать ручками даже... тем более что в среднем колво спелов на карту примерно в райное сотни, +/-
Старый 15.09.2008, 14:39
NETRAT

offline
Опыт: 83,712
Активность:
ADOLF а где тут маппинг AbilityID -> ManaCost? Или поиск по массиву это круто?
Старый 15.09.2008, 14:49
J
expert
offline
Опыт: 48,447
Активность:
ща адольф предложить чето типа разложения рав кода на биты и кодирования индекса массива в первые 13 битов
Старый 15.09.2008, 14:56
adic3x

offline
Опыт: 108,439
Активность:
жон ясновидящий великий ;)
зачем поиск?
первый вариант
dataBASE[abilityID-0x41303030]
второй - засовывать в байты чтонить, если можно, но там имхо не все влезет, это надо смотреть, тогда вообще в коде ничего не дб правда)
Старый 15.09.2008, 15:11
NETRAT

offline
Опыт: 83,712
Активность:
ADOLF для того что бы всем было понятно, следовало написать dataBASE[abilityID-'A000'] т.о. сразу видно что стандартные абилки и абилки с равкодом отличным от A0['0'-'z']* не поддерживаются.
И где тут собственно
Цитата:
ничего геморного
и
Цитата:
самый прсото вариант
?
Старый 15.09.2008, 15:56
J
expert
offline
Опыт: 48,447
Активность:
NETRAT если ты пытаешся переубедить адольфа в простате и универсальности метода, то знай, это безполезно, проверено и аналитически доказано ^^

Отредактировано Jon, 15.09.2008 в 16:12.
Старый 15.09.2008, 16:06
adic3x

offline
Опыт: 108,439
Активность:
Цитата:
стандартные абилки и абилки с равкодом отличным от A0['0'-'z']* не поддерживаются.

хм, честно говоря я сейчас с трудом представляю мапу на стандартных абилах, более того как правила большиство карт оптимизируется, правка подобного в слк так же вполне возможна

либо кешь - немного медленне и не так тру (ну ладно, но врпниципе тоже чем не вариант)

а что в этом геморного? хорошо, даже если проставлять их вручную - это скока - 10 минут? 15? все, потом достаточно добавить ману из бд при касте спела и все. весь сыр бор пчму? нет в этом ничего такого мего геморного (я про базы данных в жасс) так же можно назвать проставление МанаКоста в ро большим гемором ;)

а на факте создание карт - таки гемор)

ADOLF добавил:
Jon, а ты к чему тут влезаешь? да, предложите более просто вариант решение большого куста задачь, которые шас решаются успешно через бд...
Старый 15.09.2008, 16:11
J
expert
offline
Опыт: 48,447
Активность:
кстате, чем не вариант?
представить рав код как строку, и в самом начале для всех абилок создать бд в массиве где индесы - хендлы строк
ведь это будет делатся при инициализации карты, а тогда стек строк незаполнен больее восми тысяч... да и работать будет ко всем абилкам
» т.е. вот так
Код:
globals
     integer array ManaForAbil
endglobals

function S2Ix takes string str returns integer
    return str
    return 0
endfunction

function SetManaAbil takes integer AbilCode, integer ManaCast returns nothing
    set ManaForAbil[S2Ix(I2S(AbilCode))] = ManaCast
endfunction

function GetManaAbil takes integer AbilCode returns integer
    return ManaForAbil[S2Ix(I2S(AbilCode))]
endfunction

function InitAndLoadMap takes nothing returns nothing
    call SetManaAbil ('xxxx', xxx)
    call SetManaAbil ('xxxx', xxx)
    call SetManaAbil ('xxxx', xxx)
endfunction

Отредактировано Jon, 15.09.2008 в 16:35.
Старый 15.09.2008, 16:16
NETRAT

offline
Опыт: 83,712
Активность:
ADOLF в качестве одного из методов, составляющих slk оптимизацию, предлагалось переносить часть полей/обьектов в стандартные обьекты
ой заколебешься в связанных slk коды выправлять...
РО = БД, один из основных принципов БД - отсутствие избыточности данных
Кеш медленно, массивы трудно - вот тебе и база по спеллам.

NETRAT добавил:
Jon будет работать, если ничего вдруг не упадет
Старый 15.09.2008, 16:29
Ответ

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

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

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

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



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