22

» WarCraft 3 / Как узнать чей владелец аура..

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

» WarCraft 3 / Библиотека проходимости

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
22

» WarCraft 3 / Как узнать чей владелец аура..

ClotPh, Вот думаю было не плохо пикать юнитов в группу если у юнита есть способность то легче через тик циклом по группам проверять... Но видимо я не нашел ибо проверять всех юнитов бред...
22

» WarCraft 3 / Как узнать чей владелец аура..

quq_CCCP, ты не понял? Бывает тех 2 мага который загрузит герой, у 1 игрока 5 уровень имеет 60 магическая сила от него аура слабо дает, а у 2 игрока имеет 60 ур и магическая 1000 то дает сильнее тот кто владелец сильнее всех ауру повышает магическую силу на 15% учетом что ни как узнать чей это аура.....
22

» WarCraft 3 / Способности и алгоритмы на заказ

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

» WarCraft 3 / Как узнать чей владелец аура..

quq_CCCP, ну у меня дает если у маг имеет параметр 100 маг сила то кто получает ауру повышает маг ауру на 15% от маг силы владельца
100 * 0.15 = 15 тех кто находит в ауру а тех могут и 200 или 300... Поэтому я решил сделать таймером если герой имеет ауру то находить радиус и давать и отнимать=(
quq_CCCP, Но криво почему то то есть если аура теряет в минус уходит хД
22

» WarCraft 3 / Как сделать чтобы текст было правее в мультиборде

Clamp, я не про систему пишу а том что чтобы текст сместил направо например html
<div align="righnt">100%</div> а кодить я умею почти на 70% система все давно просто мультиборд не дает делать сетку разным и выровнять на право у тех столбиков
22

» WarCraft 3 / Способности и алгоритмы на заказ

Заказ

Название: Искажение времени
Метод: Jass
MUI: Обязательно
Цель: Точка / Область
Количество уровней: 1 (Войн)
Описание: Маг перемещается в указанную точку и наносит магический урон противникам в небольшой области от точка, при каста 1 сек ожидает прыжка.
Технические характеристики: Главное чтоб он не мог прыгать через блокатор пути, а прямо где указано точка перемешен и прыгает если путь закрыт то там и заканчивает..
22

» WarCraft 3 / Блокиратор пути

FrigatPlay, скачай готоый библиотека на проверка и не мучить =) Я вот с нуля карту делал всех библиотек потом начал понимать суть джасс
22

» WarCraft 3 / Нужно ли удалять после создание CreateForce()

nvc123, почему например так
call ShowTextTagForceBJ( false, GetLastCreatedTextTag(), GetPlayersAll() )
call ShowTextTagForceBJ( true, GetLastCreatedTextTag(), GetForceOfPlayer(GetOwningPlayer(u)) )
То понимаеш, чтo уже не удалить старый Force
Поэтому изрощаю код
local force fo = GetPlayersAll()
call ForceRemovePlayer(fo, GetOwningPlayer(s))
if (IsPlayerInForce(GetLocalPlayer(), fo)) then
        call SetTextTagVisibility(tt, false)
endif
 call DestroyForce(fo)
22

» WarCraft 3 / Где взять Юнит триггера и получение голды при разрушении здания.

в РО есть такой отвечает 3 параметра за убийсва нагруду голда а в тригере включить игрок награду за убийсвта дело сделано...
PS Извини пьян
22

» WarCraft 3 / Каждый секунд увеличивает лаги.

Clamp, Спасибо! Понял но если делить реальное число то должен результат реал а не 0, но все таки понял....
22

» WarCraft 3 / Каждый секунд увеличивает лаги.

Принятый ответ
Sergey105, нет его 1раз запускают если они с нуля а так растет каждый атак +1 потом таймер удаляет его, причиной было это
constant real time_Interval = 1/32 тут почему то трабл таймер в мега скорость идет,
поэтому поставил constant real time_Interval = 0.03 и стало норм
22

» WarCraft 3 / Аура процентного восстановления здоровья

Georgy12, Если мне память не изменит что мп дает если фонтан являет свой игрок то есть фонтан Player(0) и будет лечить себя и союза от 1 игрока, хотя не тестировал!
22

» WarCraft 3 / Аура процентного восстановления здоровья

Принятый ответ
Эм есть и другая аура лечение для союзников без заклинание. Это "Дух целитель" рав-код Aoar
22

» WarCraft 3 / Как сделать чтобы текст было правее в мультиборде

ScopteRectuS, нет там могут число разные а пробел не спасет
Пример скрина такой мультиборд должен
Загруженные файлы
22

» WarCraft 3 / Отображение урона и отхила.

Тут выше поста выложили к ссылку на дамаг а отхил от регенерации или прочих то поможет www.hiveworkshop.com/threads/heal-event-for-gui-version-1-1-1-1.... он связян с дамаг версия 3.5
22

» WarCraft 3 / Из чего утекают когда там нет точки, но лаги находит...

Принятый ответ
Ой извини, уже нашел ошибку
if GetUnitAbilityLevel(WhistlePhysical_CASTER[i], c_WhistlePhysical_Buff_ID) == 0 then вот что было такой переменный оказалось в другой способности
22

» WarCraft 3 / Туман войны не раскрывается

Georgy12, call CreateFogModifierRectBJ( true, игрок, FOG_OF_WAR_VISIBLE, область)
call CreateFogModifierRectBJ( true, игрок, FOG_OF_WAR_VISIBLE, область) вот так
либо
local fogmodifier loc = CreateFogModifierRect(whichPlayer, whichFogState, r, true, false)
call FogModifierStart(loc)
ты установил Player(3) значит это 4 игрок а ты в тест карту запускает 1 игрок пойми!!!
чтобы все игроки видел облость надо циклом от 0 до 11
22

» WarCraft 3 / Туман войны не раскрывается

а ты знал что такой функция есть простой
call FogEnable(false)
call FogMaskEnable(false)
22

» WarCraft 3 / Создать в РО способность

Вот простой jass снаряд без стана оптимальный код
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