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

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

Ответ
 
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Какой функцией в переменную внести количество брони юнита?
Нужно внести не % а само количество брони, например у пехотинца 2 брони и мне надо какой-то функцией вернуть в переменную (integer или real - сёравно) это число.
Просто указать 2 не годится. т.к. у разных юнитов может быть разная броня (базовая) + бонусы
Старый 21.03.2008, 18:41
adic3x

offline
Опыт: 108,439
Активность:
мда, тут что то устойчивое, в плане недопонимания... ну ладно)
составить бд по броне на каждый тип юнита
к нему прибавить все бонусы (проверить все бафы дающие броню и шмот)
прибавить броню от характеристик героя (ловкость)
что непонятно?!
Старый 21.03.2008, 18:50
Lawliet

offline
Опыт: 6,322
Активность:
а что ты от него хотел? судя по опыту ты в 43 раза умнее)
Старый 21.03.2008, 19:07
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
всё бы ничего, да только я не умею составлять базы и не представляю как прибавить к ней бонусы от баффов / ловкости героя, примерчик сделать можеш?
Кстати разьве нет прямой функции или способа занести в переменную броню юнита, только бд? Например есть же функция которая использует UNIT_STATE_LIFE

Отредактировано happy_horror, 21.03.2008 в 20:14.
Старый 21.03.2008, 19:55
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
happy_horror
А как ты думаешь, если бы была прямая функция, тебе бы стали говорить о таком черезж... способе? Да, UNIT_STATE_LIFE есть, а UNIT_STATE_ARMOR ytne? как ты сам знаешь, так что только бд.
Старый 21.03.2008, 21:27
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Внесу небольшую ясность:

1. Я могу создать БД - используя SCV, это для меня не сложно

2. Я не знаю как в примитивном триггере
Код:
событие 
  - юнит получает урон

действие 
  - установить здоронье атакованного юнита = текущее здоровье - урон + зашита юнита из БД + защита от ловкости + защита от бафов + защита от итемов


вычислить числа: защита от бафов, защита от итемов ( предполагаю что через ту же БД, только разьве что, сделать проверку на наличие итемов и бафов); но может есть иной - более быстрый способ? (как получить бонус защиты от ловкости - я знаю)
Старый 22.03.2008, 03:05
adic3x

offline
Опыт: 108,439
Активность:
Код:
globals
 real array r_a_u // nohero default armor
 real array r_a_h // hero default armor
 real array r_a_i // item bonus
 real array r_a_b // buffs
endglobals

function GetUnitArmor takes unit u returns nothing
 local real r
 local real i
 local real c=0x00
 if IsUnitType(u, UNIT_TYPE_HERO)then
  set r=r_a_h[GetUnitTypeId(u)-0x48303030]+GetHeroAgi(u, true)*.07
 else
  set r=r_a_u[GetUnitTypeId(u)-0x68303030] 
 endif
 loop
  set i=GetItemTypeId(UnitItemInSlot(u, c))
  if i!=0x00then
   set r=r+r_a_i[i-0x49303030]
  endif
  set c=c+0x01
  exitwhen c==0x06
 endloop
 set c==0x00
 loop
  if GetUnitAbilityLevel(u, 0x42303030+c)!=0x00 then
   set r=r+r_a_b[c]
  endif
  set c=c+0x01
  exitwhen c==0x20
 endloop  
endfunction

function Init takes nothing returns nothing
 set r_a_u[0x00]=1. // 0x00==0x68303030-0x68303030
 set r_a_u[0x01]=0. // 0x01==0x68303031-0x68303030
 set r_a_u[0x02]=5. // 0x02==0x68303032-0x68303030

 set r_a_h[0x00]=-1.// 0x00==0x48303030-0x48303030

 set r_a_i[0x00]=8. // 0x00==0x49303030-0x49303030
 set r_a_i[0x01]=1. // 0x00==0x49303031-0x49303030

 set r_a_b[0x00]=4. // 0x00==0x42303030-0x42303030
 // .........
endfunction


ADOLF добавил:
предпологается что афтор знаком с жассом и знает о равкодах и о том как с ними работать
Старый 22.03.2008, 09:38
happy_horror
2 + 2 = 22 :-D
offline
Опыт: 7,818
Активность:
Цитата:
Сообщение от ADOLF
ADOLF добавил:
предпологается что афтор знаком с жассом и знает о равкодах и о том как с ними работать


Ах, если бы, а где можно узнать о том, что это за рав коды такие? Если можно - ссылочку в студию
Старый 22.03.2008, 18:03
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Старый 22.03.2008, 18:18
adic3x

offline
Опыт: 108,439
Активность:
ща настрочу...

ищем в гугле ASC II tabl - таблица чара и его инт значения
запускаем вин калк - там есть переведение 16 10 8 2 систем
это для начала)

теперь... асц два - 256 шестиричная си, легко переводиться в 16, того собстно и юзаю хексу... 'A000' равно 0x41303030, причем А=41, 0=30, все просто) (это все есть а асц два таблице)
0х - просто приставка, обозначающая что число в хексе)
Старый 22.03.2008, 22:19
Ответ

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

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

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

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



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