Сейчас 12:58:32 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
урон и расстояние
r0m@nДата: Среда, 09 Февраля 2011, 16:56:25 | Сообщение # 1
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 6
Блокировки:
помогите разобраться. При использовании способности на юнита, надо, чтоб каждые n(к примеру 0.3 сек, в течении 3 сек) юниту наносился бы урон равный расстояние между юнитами(кастующий юнит и "жертва")*уровень способности кастующего. Пожалуйста на триггерах, чтоб разобрался. Я в джассе полный ноль. Напишите, кому не сложно.
 

NestrikДата: Среда, 09 Февраля 2011, 18:39:01 | Сообщение # 2
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 7
Блокировки:
Возникает вопрос: у тебя расстояние при каждом нанесении урона учитывается ? или только в момент каста единовременно учитывается и дальше не работает.
Плюс к тому: много ли воинов/героев могут единовременно применить один и тот же спел? Если по 1 за каждого игрока, то еще можно проделать все с помощью массивов; если дофига: то только локальные переменные; а если всего 1 кастер такой способности на всю игру, то проблем не возникнет и с глобальными переменными:
А вообще принцип такой:
С. Юнит привел способность в действие
У. Примененная способность = Твоя способность
Д.
Изменить переменную Кастер = Юнит применивший способность
Изменить переменную Жертва = Юнит, на которого применили заклинание
Цикл И = от 0 до 10 действия:
Ждать 0,3
Изменить переменную Расстояние = (Дистанция между позициями (Кастер) (Жертва))
Боевая еденица - нанести урон цели (Кастер) нанести (Жертва) (Расстояние*уровень способности) ед. урона типа (Твой тип урона)

Если будет хотя бы 2 кастера с таким заклинанием, то на глобальных переменных эта конструкция работать не будет

 

r0m@nДата: Среда, 09 Февраля 2011, 21:43:28 | Сообщение # 3
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 6
Блокировки:
напиши, пожалуйста, если только один может применять способность. И пожалуйста, так как выглядеть будет в коде. А то в мыслях и я так написать могу. Но честно, давно не практиковался, но помню многое. Но с циклами плохо общаюсь. Разобраться с ними смогу, если будет какой нибудь пример, чтоб вспомнить. Реально, раньше занимался, а тут сел через пару лет, и почти не понимаю. Правда разобрался в некоторых вещах сам, без помощи, то о чем не понимал, но это скорее случайно.
 

NestrikДата: Четверг, 10 Февраля 2011, 16:56:39 | Сообщение # 4
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 7
Блокировки:
карта пример
http://fayloobmennik.net/381268

Добавлено (10-02-2011, 16:55)
---------------------------------------------

Code
function Trig_Ability_Conditions takes nothing returns boolean
     if ( not ( GetSpellAbilityId() == 'AHtb' ) ) then
         return false
     endif
     return true
endfunction

function Trig_Ability_Actions takes nothing returns nothing
     local unit Caster = GetSpellAbilityUnit()
     local unit Victim = GetSpellTargetUnit()
     local location VictimP
     local location CasterP
     local integer I = 0
     set I = 0
     loop
         exitwhen I > 10
         call TriggerSleepAction( 0.30 )
         set VictimP = GetUnitLoc(Victim)
         set CasterP = GetUnitLoc(Caster)
         set udg_Distance = DistanceBetweenPoints(GetUnitLoc(Caster), GetUnitLoc(Victim))
         call UnitDamageTargetBJ( Caster, Victim, ( udg_Distance * I2R(GetUnitAbilityLevelSwapped('AHtb', Caster)) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
         call RemoveLocation (VictimP)  
         call RemoveLocation (CasterP)  
         set I = I + 1
     endloop
     set Caster = null
     set Victim = null
endfunction

//===========================================================================
function InitTrig_Ability takes nothing returns nothing
     set gg_trg_Ability = CreateTrigger(  )
     call TriggerRegisterAnyUnitEventBJ( gg_trg_Ability, EVENT_PLAYER_UNIT_SPELL_EFFECT )
     call TriggerAddCondition( gg_trg_Ability, Condition( function Trig_Ability_Conditions ) )
     call TriggerAddAction( gg_trg_Ability, function Trig_Ability_Actions )
endfunction

Хотя в принципе код :)

Добавлено (10-02-2011, 16:56)
---------------------------------------------
Только вот не знаю: поидее дистанцию обычно делят там например на 10, на 15, а чистую дистанцию рать - слишком много дамага ))

 

DreiiДата: Четверг, 10 Февраля 2011, 17:10:25 | Сообщение # 5
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
Quote (Nestrik)
   call TriggerSleepAction( 0.30 )

никчему
Quote (Nestrik)
         call UnitDamageTargetBJ( Caster, Victim, ( udg_Distance * I2R(GetUnitAbilityLevelSwapped('AHtb', Caster)) ), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )

Раскрой Nestrik, Юзай координаты
Quote (Nestrik)
  call TriggerRegisterAnyUnitEventBJ( gg_trg_Ability, EVENT_PLAYER_UNIT_SPELL_EFFECT )

раскрой

Добавлено (10-02-2011, 17:10)
---------------------------------------------

Quote (Nestrik)
     local unit Caster = GetSpellAbilityUnit()

GetTriggerUnit()

Добавлено (10-02-2011, 17:10)
---------------------------------------------

Quote (Nestrik)
 set udg_Distance = DistanceBetweenPoints(GetUnitLoc(Caster), GetUnitLoc(Victim))

раскрой


 

romaN-1998Дата: Четверг, 10 Февраля 2011, 17:14:18 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1368
Награды: 0
Репутация: 10
Блокировки:
Dreii, он просто перевёл тригг в текст.. видно же, даже если посмотреть на условие.. :/
 

r0m@nДата: Четверг, 10 Февраля 2011, 17:59:23 | Сообщение # 7
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 6
Блокировки:
вот блин. Не в коде, а на триггерах. Вообще не соображаю в джасс. Ну в карте гляну позже, но если на джассе, то все равно не пойму. Пример бы на ГУИ, кому не сложно, напишите. Или ссылку на карту, простенькую.
 

DreiiДата: Четверг, 10 Февраля 2011, 18:36:26 | Сообщение # 8
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
romaN-1998, ну цикл сам делал

 

NestrikДата: Пятница, 11 Февраля 2011, 11:25:44 | Сообщение # 9
4 уровень
Группа: Пользователи
Сообщений: 88
Награды: 0
Репутация: 7
Блокировки:
Quote (romaN-1998)
Dreii, он просто перевёл тригг в текст.. видно же, даже если посмотреть на условие.. :/

Абсолютно верно: весь триг написан на гуи, только малость для оптимизации, да и потому как писать много КСкриптов на гуи - глупо, перевел на жасс, цикл переделал.

Quote (Dreii)
 
Quote
  call TriggerSleepAction( 0.30 )

никчему

А вот это как раз нужно: иначе весь дамаг полетит моментально.

Добавлено (11-02-2011, 11:25)
---------------------------------------------
Вот сделал тебе на ГУИ, но работать будет только для одного единовременно-примененного заклинания. Абилка если что "Молот Бурь".
Там я добавил, только, что бы урон писался над тем, кого атакуешь: посмотришь, что там за цифры получаются.

Добавлено (11-02-2011, 11:25)
---------------------------------------------
http://fayloobmennik.net/383136

 

r0m@nДата: Пятница, 11 Февраля 2011, 12:03:21 | Сообщение # 10
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 6
Блокировки:
спасибо огромное, гляну попозже. Может подскажете, где основы джасс скачать. Я так читая понял что call RemoveLocation(переменная точка) удаляет утечки(саму точку)?
 

KartohaДата: Пятница, 11 Февраля 2011, 13:44:42 | Сообщение # 11
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Quote (r0m@n)
Может подскажете, где основы джасс скачать.

Можно здесь.
Quote (r0m@n)
Я так читая понял что call RemoveLocation(переменная точка) удаляет утечки(саму точку)?

Да.
 

r0m@nДата: Пятница, 11 Февраля 2011, 19:13:08 | Сообщение # 12
1 уровень
Группа: Пользователи
Сообщений: 10
Награды: 0
Репутация: 6
Блокировки:
все, по полной в теме разобрался, можете закрывать. Всем большое спасибо! :)
 

  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz