ClotPh, обычный сккил, без изучения DracoL1ch, я уже понимаю... просто пришлось делать при пик героя проверять тип юнитов если это маг то заносим его в группу для таймера остальтное уже сделал как надо
FrigatPlay, Копируй код и создай чистый файл и ставь код и вызывай функция
library TerrainPathability initializer Init
//******************************************************************************
//* BY: Rising_Dusk
//*
//* This script can be used to detect the type of pathing at a specific point.
//* It is valuable to do it this way because the IsTerrainPathable is very
//* counterintuitive and returns in odd ways and aren't always as you would
//* expect. This library, however, facilitates detecting those things reliably
//* and easily.
//*
//******************************************************************************
//*
//* > function IsTerrainDeepWater takes real x, real y returns boolean
//* > function IsTerrainShallowWater takes real x, real y returns boolean
//* > function IsTerrainLand takes real x, real y returns boolean
//* > function IsTerrainPlatform takes real x, real y returns boolean
//* > function IsTerrainWalkable takes real x, real y returns boolean
//*
//* These functions return true if the given point is of the type specified
//* in the function's name and false if it is not. For the IsTerrainWalkable
//* function, the MAX_RANGE constant below is the maximum deviation range from
//* the supplied coordinates that will still return true.
//*
//* The IsTerrainPlatform works for any preplaced walkable destructable. It will
//* return true over bridges, destructable ramps, elevators, and invisible
//* platforms. Walkable destructables created at runtime do not create the same
//* pathing hole as preplaced ones do, so this will return false for them. All
//* other functions except IsTerrainWalkable return false for platforms, because
//* the platform itself erases their pathing when the map is saved.
//*
//* After calling IsTerrainWalkable(x, y), the following two global variables
//* gain meaning. They return the X and Y coordinates of the nearest walkable
//* point to the specified coordinates. These will only deviate from the
//* IsTerrainWalkable function arguments if the function returned false.
//*
//* Variables that can be used from the library:
//* [real] TerrainPathability_X
//* [real] TerrainPathability_Y
//*
globals
private constant real MAX_RANGE = 10.
private constant integer DUMMY_ITEM_ID = 'wolg'
endglobals
globals
private item Item = null
private rect Find = null
private item array Hid
private integer HidMax = 0
public real X = 0.
public real Y = 0.
endglobals
function IsTerrainDeepWater takes real x, real y returns boolean
return not IsTerrainPathable(x, y, PATHING_TYPE_FLOATABILITY) and IsTerrainPathable(x, y, PATHING_TYPE_WALKABILITY)
endfunction
function IsTerrainShallowWater takes real x, real y returns boolean
return not IsTerrainPathable(x, y, PATHING_TYPE_FLOATABILITY) and not IsTerrainPathable(x, y, PATHING_TYPE_WALKABILITY) and IsTerrainPathable(x, y, PATHING_TYPE_BUILDABILITY)
endfunction
function IsTerrainLand takes real x, real y returns boolean
return IsTerrainPathable(x, y, PATHING_TYPE_FLOATABILITY)
endfunction
function IsTerrainPlatform takes real x, real y returns boolean
return not IsTerrainPathable(x, y, PATHING_TYPE_FLOATABILITY) and not IsTerrainPathable(x, y, PATHING_TYPE_WALKABILITY) and not IsTerrainPathable(x, y, PATHING_TYPE_BUILDABILITY)
endfunction
private function HideItem takes nothing returns nothing
if IsItemVisible(GetEnumItem()) then
set Hid[HidMax] = GetEnumItem()
call SetItemVisible(Hid[HidMax], false)
set HidMax = HidMax + 1
endif
endfunction
function IsTerrainWalkable takes real x, real y returns boolean
//Hide any items in the area to avoid conflicts with our item
call MoveRectTo(Find, x, y)
call EnumItemsInRect(Find ,null, function HideItem)
//Try to move the test item and get its coords
call SetItemPosition(Item, x, y) //Unhides the item
set X = GetItemX(Item)
set Y = GetItemY(Item)
static if LIBRARY_IsTerrainWalkable then
//This is for compatibility with the IsTerrainWalkable library
set IsTerrainWalkable_X = X
set IsTerrainWalkable_Y = Y
endif
call SetItemVisible(Item, false)//Hide it again
//Unhide any items hidden at the start
loop
exitwhen HidMax <= 0
set HidMax = HidMax - 1
call SetItemVisible(Hid[HidMax], true)
set Hid[HidMax] = null
endloop
//Return walkability
return (X-x)*(X-x)+(Y-y)*(Y-y) <= MAX_RANGE*MAX_RANGE and not IsTerrainPathable(x, y, PATHING_TYPE_WALKABILITY)
endfunction
private function Init takes nothing returns nothing
set Find = Rect(0., 0., 128., 128.)
set Item = CreateItem(DUMMY_ITEM_ID, 0, 0)
call SetItemVisible(Item, false)
endfunction
endlibrary
ClotPh, Вот думаю было не плохо пикать юнитов в группу если у юнита есть способность то легче через тик циклом по группам проверять... Но видимо я не нашел ибо проверять всех юнитов бред...
quq_CCCP, ты не понял? Бывает тех 2 мага который загрузит герой, у 1 игрока 5 уровень имеет 60 магическая сила от него аура слабо дает, а у 2 игрока имеет 60 ур и магическая 1000 то дает сильнее тот кто владелец сильнее всех ауру повышает магическую силу на 15% учетом что ни как узнать чей это аура.....
quq_CCCP, ну у меня дает если у маг имеет параметр 100 маг сила то кто получает ауру повышает маг ауру на 15% от маг силы владельца
100 * 0.15 = 15 тех кто находит в ауру а тех могут и 200 или 300... Поэтому я решил сделать таймером если герой имеет ауру то находить радиус и давать и отнимать=( quq_CCCP, Но криво почему то то есть если аура теряет в минус уходит хД
Clamp, я не про систему пишу а том что чтобы текст сместил направо например html
<div align="righnt">100%</div> а кодить я умею почти на 70% система все давно просто мультиборд не дает делать сетку разным и выровнять на право у тех столбиков
Название: Искажение времени Метод: Jass MUI: Обязательно Цель: Точка / Область Количество уровней: 1 (Войн) Описание: Маг перемещается в указанную точку и наносит магический урон противникам в небольшой области от точка, при каста 1 сек ожидает прыжка. Технические характеристики: Главное чтоб он не мог прыгать через блокатор пути, а прямо где указано точка перемешен и прыгает если путь закрыт то там и заканчивает..
local force fo = GetPlayersAll()
call ForceRemovePlayer(fo, GetOwningPlayer(s))
if (IsPlayerInForce(GetLocalPlayer(), fo)) then
call SetTextTagVisibility(tt, false)
endif
call DestroyForce(fo)
Georgy12, Если мне память не изменит что мп дает если фонтан являет свой игрок то есть фонтан Player(0) и будет лечить себя и союза от 1 игрока, хотя не тестировал!
globals
constant integer c_HolyBoltMissile_Ability_ID='AIfz' //RAW код способности, что нужно использовать.
constant integer c_HolyBoltMissile_Dummy_ID='u000' //RAW код пустышки, что имеет модель снаряда.
constant real c_HolyBoltMissile_Interval=.03125 //Интервал полета снаряда. 1 \ 0.03125 = 32 кадра в сек.
constant real c_HolyBoltMissile_MissileSpeed_Base=1000. //Скорость снаряда базовая, кол-во проходимой дистанции в 1 сек.
//Если неуверены, что меняем, то код что ниже не советую трогать.
timer HolyBoltMissile__TIMER=CreateTimer()
integer HolyBoltMissile__MAX=0
unit array HolyBoltMissile__CASTER
unit array HolyBoltMissile__TARGET
unit array HolyBoltMissile__DUMMY
real array HolyBoltMissile__HEAL
real array HolyBoltMissile__MS
endglobals
function HolyBoltMissile_Periodic takes nothing returns nothing
local integer i=0
local real dist
local real x
local real y
local real xt
local real yt
local real rad
loop
exitwhen i==HolyBoltMissile__MAX
set x=GetUnitX(HolyBoltMissile__DUMMY[i])
set xt=GetUnitX(HolyBoltMissile__TARGET[i])
set y=GetUnitY(HolyBoltMissile__DUMMY[i])
set yt=GetUnitY(HolyBoltMissile__TARGET[i])
set dist=SquareRoot((xt-x)*(xt-x)+(yt-y)*(yt-y))
if dist>HolyBoltMissile__MS[i] then
set rad=Atan2(yt-y, xt-x)
call SetUnitX(HolyBoltMissile__DUMMY[i],x+HolyBoltMissile__MS[i]*Cos(rad))
call SetUnitY(HolyBoltMissile__DUMMY[i],y+HolyBoltMissile__MS[i]*Sin(rad))
call SetUnitFacing(HolyBoltMissile__DUMMY[i],rad*bj_RADTODEG)
else
call KillUnit(HolyBoltMissile__DUMMY[i])
call UnitDamageTarget(HolyBoltMissile__CASTER[i], HolyBoltMissile__TARGET[i], HolyBoltMissile__HEAL[i], true, false, ATTACK_TYPE_NORMAL, null, null)
call ConditionalTriggerExecute( udg_ClearDamageEvent )
set HolyBoltMissile__MAX=HolyBoltMissile__MAX-1
set HolyBoltMissile__CASTER[i]=HolyBoltMissile__CASTER[HolyBoltMissile__MAX]
set HolyBoltMissile__TARGET[i]=HolyBoltMissile__TARGET[HolyBoltMissile__MAX]
set HolyBoltMissile__DUMMY[i]=HolyBoltMissile__DUMMY[HolyBoltMissile__MAX]
set HolyBoltMissile__HEAL[i]=HolyBoltMissile__HEAL[HolyBoltMissile__MAX]
set HolyBoltMissile__MS[i]=HolyBoltMissile__MS[HolyBoltMissile__MAX]
set HolyBoltMissile__CASTER[HolyBoltMissile__MAX]=null
set HolyBoltMissile__TARGET[HolyBoltMissile__MAX]=null
set HolyBoltMissile__DUMMY[HolyBoltMissile__MAX]=null
set HolyBoltMissile__HEAL[HolyBoltMissile__MAX]=.0
set HolyBoltMissile__MS[HolyBoltMissile__MAX]=.0
set i=i-1
if HolyBoltMissile__MAX==0 then
call PauseTimer(HolyBoltMissile__TIMER)
endif
endif
set i=i+1
endloop
endfunction
function HolyBoltMissile_Cast takes nothing returns boolean
local boolean b=(GetSpellAbilityId()==c_HolyBoltMissile_Ability_ID)
local player p=GetOwningPlayer(GetTriggerUnit())
local real x=GetUnitX(GetTriggerUnit())
local real y=GetUnitY(GetTriggerUnit())
local real xt=GetUnitX(GetSpellTargetUnit())
local real yt=GetUnitY(GetSpellTargetUnit())
local real deg=Atan2(yt-y, xt-x)*bj_RADTODEG
if b then
if HolyBoltMissile__MAX==0 then
call TimerStart(HolyBoltMissile__TIMER,c_HolyBoltMissile_Interval,true,function HolyBoltMissile_Periodic)
endif
set HolyBoltMissile__CASTER[HolyBoltMissile__MAX]=GetTriggerUnit()
set HolyBoltMissile__TARGET[HolyBoltMissile__MAX]=GetSpellTargetUnit()
set HolyBoltMissile__DUMMY[HolyBoltMissile__MAX]=CreateUnit(p,c_HolyBoltMissile_Dummy_ID,x,y,deg)
call SetUnitAnimation(HolyBoltMissile__DUMMY[HolyBoltMissile__MAX],"birth")
call QueueUnitAnimation(HolyBoltMissile__DUMMY[HolyBoltMissile__MAX],"stand")
set HolyBoltMissile__HEAL[HolyBoltMissile__MAX]= RPGCharacter[GetTriggerUnit()].stats[RPG_STAT_DAMAGE_PHYSICAL] * 1.90
set HolyBoltMissile__MS[HolyBoltMissile__MAX]=1000*c_HolyBoltMissile_Interval
set HolyBoltMissile__MAX=HolyBoltMissile__MAX+1
endif
set p=null
return b
endfunction
//===========================================================================
function InitTrig_HolyBoltMissile takes nothing returns nothing
local trigger t = CreateTrigger()
local unit u=CreateUnit(Player(15),c_HolyBoltMissile_Dummy_ID,0,0,0)
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t,Condition( function HolyBoltMissile_Cast ))
call RemoveUnit(u)
set u=null
set t=null
endfunction
» WarCraft 3 / Как узнать чей владелец аура..
DracoL1ch, я уже понимаю... просто пришлось делать при пик героя проверять тип юнитов если это маг то заносим его в группу для таймера остальтное уже сделал как надо
» WarCraft 3 / Библиотека проходимости
» WarCraft 3 / Библиотека проходимости
» WarCraft 3 / Как узнать чей владелец аура..
» WarCraft 3 / Как узнать чей владелец аура..
» WarCraft 3 / Способности и алгоритмы на заказ
» WarCraft 3 / Как узнать чей владелец аура..
100 * 0.15 = 15 тех кто находит в ауру а тех могут и 200 или 300... Поэтому я решил сделать таймером если герой имеет ауру то находить радиус и давать и отнимать=(
quq_CCCP, Но криво почему то то есть если аура теряет в минус уходит хД
» WarCraft 3 / Как сделать чтобы текст было правее в мультиборде
<div align="righnt">100%</div> а кодить я умею почти на 70% система все давно просто мультиборд не дает делать сетку разным и выровнять на право у тех столбиков
Ред. pro100master
» WarCraft 3 / Способности и алгоритмы на заказ
Заказ
Метод: Jass
MUI: Обязательно
Цель: Точка / Область
Количество уровней: 1 (Войн)
Описание: Маг перемещается в указанную точку и наносит магический урон противникам в небольшой области от точка, при каста 1 сек ожидает прыжка.
Технические характеристики: Главное чтоб он не мог прыгать через блокатор пути, а прямо где указано точка перемешен и прыгает если путь закрыт то там и заканчивает..
» WarCraft 3 / Блокиратор пути
Ред. pro100master
» WarCraft 3 / Нужно ли удалять после создание CreateForce()
Ред. pro100master
» WarCraft 3 / Где взять Юнит триггера и получение голды при разрушении здания.
PS Извини пьян
» WarCraft 3 / Каждый секунд увеличивает лаги.
» WarCraft 3 / Каждый секунд увеличивает лаги.
поэтому поставил constant real time_Interval = 0.03 и стало норм
» WarCraft 3 / Аура процентного восстановления здоровья
Ред. pro100master
» WarCraft 3 / Аура процентного восстановления здоровья
» WarCraft 3 / Нужно ли удалять после создание CreateForce()
» WarCraft 3 / Как сделать чтобы текст было правее в мультиборде
Пример скрина такой мультиборд должен
» WarCraft 3 / Отображение урона и отхила.
» WarCraft 3 / Из чего утекают когда там нет точки, но лаги находит...
» WarCraft 3 / Туман войны не раскрывается
либо
чтобы все игроки видел облость надо циклом от 0 до 11
» WarCraft 3 / Туман войны не раскрывается
» WarCraft 3 / Есть ли стандартный способность который лишает передвижение!
» WarCraft 3 / Создать в РО способность