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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Парочка другая вопросов <3
DarkCoteДата: Пятница, 28 Октября 2011, 10:38:11 | Сообщение # 1
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
У меня опять возник вопрос ^_^
Вот создаю я дамми юнита после применения способности и он "идёт" в конкретном направлении. Как сделать так, что если он соприкасается с противником, то *происходит какое-то действие*?
Объясните лучше на примере триггеров, желательно русских ^_^


Сообщение отредактировал DarkCote - Пятница, 28 Октября 2011, 19:27:08
 

Ty3uKДата: Пятница, 28 Октября 2011, 10:57:05 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Пикаешь периодическим таймером юнитов в области 100 от дамми. Если там есть юниты- то делаешь что надо

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DarkCoteДата: Пятница, 28 Октября 2011, 11:10:02 | Сообщение # 3
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
Ty3uK, какой лучше евери взять? Ну чтобы без лагов в случае массового применения?
 

Ty3uKДата: Пятница, 28 Октября 2011, 11:18:36 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
.04

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DarkCoteДата: Пятница, 28 Октября 2011, 19:29:37 | Сообщение # 5
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
Чтобы не мучать форум многочисленными темами буду сливать вопросы сюда ^_^ ^_^
Вопрос №2: У меня в игре лагает лёд, а точнее его система. Пожалуйста не сливайтесь ссылками на ту старую тему про лёд, ибо там ссылки на наработки всё равно не рабочие.
Вот скрины моего льда:

Что с ним не так? Как добиться максимальной оптимизации вообще без кода?
 

Ty3uKДата: Пятница, 28 Октября 2011, 19:56:52 | Сообщение # 6
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
DarkCote, могу написать эту системку в несколько строчек, которые ты уже через кастом скрипт будешь вставлять где надо

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DarkCoteДата: Пятница, 28 Октября 2011, 19:58:22 | Сообщение # 7
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
Ty3uK, мне надо именно триггеры ^_^
Просто карта не TFTшная, а кастом скрипты вроде являются функцией фрозена... Вродебы))
 

Ty3uKДата: Пятница, 28 Октября 2011, 20:01:39 | Сообщение # 8
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
DarkCote, нифига. Фрозен использует новые типы глобалок, объекты и прочее. я писал мультиборд на хэше, который был как карта для ROC

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DarkCoteДата: Пятница, 28 Октября 2011, 20:03:41 | Сообщение # 9
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
Ty3uK, тобишь твой кастом скрипт прокатит в роке?
 

Ty3uKДата: Пятница, 28 Октября 2011, 20:07:18 | Сообщение # 10
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
DarkCote, конечно

Добавлено (28 Октябрь 2011, 20:05:57)
---------------------------------------------
Code
local integer i = 0
local real x
local real y
loop
exitwhen i > 12
set x = GetWidgetX(udg_Hero[i]) + 20. * Cos(GetRandomReal(1, 360.) * .017)
set y = GetWidgetY(GetOrderedUnit()) + 20. * Sin(GetRandomReal(1, 360.) * .017)
call SetUnitPosition(udg_Hero[i], x, y)
endloop

на каждую новую строчку новый кастомскрипт. Зато без утечек

Добавлено (28 Октябрь 2011, 20:07:18)
---------------------------------------------
Но это смещение будет в рандомном направлении. Если нужно направление героя, то GetRandomReal(1., 360.) замени на GetUnitFacing(udg_Hero[i])


╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал Ty3uK - Пятница, 28 Октября 2011, 20:06:25
 

SirNikolasДата: Воскресенье, 30 Октября 2011, 19:30:18 | Сообщение # 11
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Ty3uK, впиши еще в код условие на terraintype.

 

Ty3uKДата: Воскресенье, 30 Октября 2011, 19:48:46 | Сообщение # 12
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Я ему уже в аське кидал. Проверку на террайн тип и через таймер

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

DarkCoteДата: Понедельник, 31 Октября 2011, 02:35:56 | Сообщение # 13
Кот
Группа: Проверенные
Сообщений: 948
Награды: 0
Репутация: 176
Блокировки:
Вопрос №3
Внизу скриншот триггера, который имеет утечку. Но вот только какую и как её исправить? После второго применения появляются лаги, с каждым разом всё больше.
 

SirNikolasДата: Понедельник, 31 Октября 2011, 15:34:47 | Сообщение # 14
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
constant function Trig_Hero_Samogon_Ability takes nothing returns integer
     return 'A000'
endfunction

function Trig_Hero_Samogon_Conditions takes nothing returns boolean
     return GetSpellAbilityId() == Trig_Hero_Samogon_Ability()
endfunction

function Trig_Hero_Samogon_Timer takes nothing returns nothing
     if udg_Hero_Samogon_Phase == 0 then
         set udg_SpellUnit[14] = CreateUnit(Player(0), udg_SpellUnitSAMOGON[udg_Hero_Samogon_Level], udg_Hero_Samogon_Real[0], udg_Hero_Samogon_Real[1], .0)
         set udg_Hero_Samogon_Phase = 1
         call TimerStart(udg_Hero_Samogon_Timer, .25, false, function Trig_Hero_Samogon_Timer)
     elseif udg_Hero_Samogon_Phase == 1 then
         call PauseUnit(udg_Hero_Samogon_Unit, true)
         call IssueTargetOrderById(udg_SpellUnit[14], 851983, udg_Hero_Samogon_Real[2], udg_Hero_Samogon_Real[3])
         set udg_Hero_Samogon_Phase = 2
         call TimerStart(udg_Hero_Samogon_Timer, 1., false, function Trig_Hero_Samogon_Timer)
     else
         call PauseUnit(udg_Hero_Samogon_Unit, false)
         call RemoveUnit(udg_SpellUnit[14])
     endif
endfunction

function Trig_Hero_Samogon_Actions takes nothing returns nothing
     set udg_Hero_Samogon_Unit = GetTriggerUnit()
     set udg_Hero_Samogon_Real[0] = GetWidgetX(udg_Hero_Samogon_Unit)
     set udg_Hero_Samogon_Real[1] = GetWidgetY(udg_Hero_Samogon_Unit)
     set udg_Hero_Samogon_Real[2] = GetSpellTargetX()
     set udg_Hero_Samogon_Real[3] = GetSpellTargetY()
     set udg_Hero_Samogon_Level = GetUnitAbilityLevel(udg_Hero_Samogon_Unit, Trig_Hero_Samogon_Ability())
     set udg_Hero_Samogon_Phase = 0
     call TimerStart(udg_Hero_Samogon_Timer, .03, false, function Trig_Hero_Samogon_Timer)
endfunction

function InitTrig_Hero_Samogon_Actions takes nothing returns nothing
     local trigger trig = CreateTrigger()
     call TriggerRegisterPlayerUnitEvent(trig, Player(0), EVENT_PLAYER_UNIT_SPELL_EFFECT, null)
     call TriggerAddCondition(trig, Condition(function Trig_Hero_Samogon_Conditions))
     call TriggerAddAction(trig, function Trig_Hero_Samogon_Actions)
     set trig = null
endfunction
Вот. Конвертируй триггер в текст, замени код на этот. Также нужно создать переменные Hero_Samogon_Unit (юнит), Hero_Samogon_Real (массив действительных), Hero_Samogon_Level (целочисленная), Hero_Samogon_Phase (целочисленная) и Hero_Samogon_Timer (таймер). Во второй строке замени 'A000' на raw-код способности (его можно узнать, нажав Ctrl+D в Редакторе Объектов).


 

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

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