garklavs, это значит надо иметь детект урона физ и маг урона
чтобы манипулировать свой урон на крит то резист браслет 200%, а потом уже триггерно наносите урон если шанс на крит магического то умножаем урона иначе просто снять хп.
вроде Substr не помню забыл есть в гуи, просто век не заходил в редактор забываю(( 8gabriel8:
Как циклом по букве проходить? На GUI)
Вот так примерно гуи реализовал и конвентировал в jass
set udg_t = GetEventPlayerChatString()
set bj_forLoopAIndex = 0
set bj_forLoopAIndexEnd = StringLength(udg_t)
loop
exitwhen bj_forLoopAIndex > bj_forLoopAIndexEnd
set udg_b = SubStringBJ(udg_t, bj_forLoopAIndex, IMinBJ((bj_forLoopAIndex + 1), bj_forLoopAIndexEnd))
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
где udg_b это 1 букв каждый цикл и проверяете что хотите узнай что это
Вот хороший библиотека выровняет текст над головой
//==============================================================================
// TEXT TAG - Floating text system by Cohadar - v4.0
//==============================================================================
//
// PURPOUSE:
// * Displaying floating text - the easy way
// * Text is automatically centered depending on it's length
//
// FUNCTION LIST:
// * TextTag_XY(x, y, text, color)
// * TextTag_Unit(unit, text, color)
// * TextTag_GoldBounty(unit, text, killer)
// * TextTag_LumberBounty(unit, text, killer)
//
// color is a color string, example: "|c00FFCC00"
// killer is a killing player, usually: GetOwningPlayer(GetKillingUnit())
// (bounty text is visible only to killer)
//
// HOW TO IMPORT:
// * Just create a trigger named TextTag
// convert it to text and replace the whole trigger text with this one
//==============================================================================
library TextTag
globals
private constant integer MEAN_CHAR_WIDTH = 8
private constant integer MAX_TEXT_SHIFT = 32
private constant real FONT_SIZE = 0.025
private constant real VELOCITY_X = 0
private constant real VELOCITY_Y = .04
private constant real LIFESPAN = 4
private constant real HEIGHT = 16
private constant real FADE_POINT = 2.5
endglobals
//===========================================================================
public function XY takes real x, real y, string text, string color returns nothing
local texttag t = CreateTextTag()
local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
call SetTextTagText(t, color+text, FONT_SIZE)
call SetTextTagPos(t, x-shift, y, HEIGHT)
call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
call SetTextTagVisibility(t, true)
call SetTextTagFadepoint(t, FADE_POINT)
call SetTextTagLifespan(t, LIFESPAN)
call SetTextTagPermanent(t, false)
set t = null
endfunction
//===========================================================================
public function Unit takes unit whichUnit, string text, string color returns nothing
local texttag t = CreateTextTag()
local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
call SetTextTagText(t, color+text, FONT_SIZE)
call SetTextTagPos(t, GetUnitX(whichUnit)-shift, GetUnitY(whichUnit), HEIGHT)
call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
call SetTextTagVisibility(t, true)
call SetTextTagFadepoint(t, FADE_POINT)
call SetTextTagLifespan(t, LIFESPAN)
call SetTextTagPermanent(t, false)
set t = null
endfunction
//===========================================================================
public function GoldBounty takes unit whichUnit, string text, player killer returns nothing
local texttag t = CreateTextTag()
local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
call SetTextTagText(t, text, FONT_SIZE)
call SetTextTagPos(t, GetUnitX(whichUnit)-shift, GetUnitY(whichUnit), HEIGHT)
call SetTextTagColor(t, 255, 220, 0, 255)
call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
call SetTextTagVisibility(t, GetLocalPlayer()==killer)
call SetTextTagFadepoint(t, FADE_POINT)
call SetTextTagLifespan(t, LIFESPAN)
call SetTextTagPermanent(t, false)
set t = null
endfunction
//==============================================================================
public function LumberBounty takes unit whichUnit, string text, player killer returns nothing
local texttag t = CreateTextTag()
local integer shift = IMinBJ(StringLength(text), MAX_TEXT_SHIFT) * MEAN_CHAR_WIDTH
call SetTextTagText(t, text, FONT_SIZE)
call SetTextTagPos(t, GetUnitX(whichUnit)-shift, GetUnitY(whichUnit), HEIGHT)
call SetTextTagColor(t, 0, 196, 0, 255)
call SetTextTagVelocity(t, VELOCITY_X, VELOCITY_Y)
call SetTextTagVisibility(t, GetLocalPlayer()==killer)
call SetTextTagFadepoint(t, FADE_POINT)
call SetTextTagLifespan(t, LIFESPAN)
call SetTextTagPermanent(t, false)
set t = null
endfunction
endlibrary
8gabriel8, получаем длину строк и проходим циклом по 1 букв выдергивая и снова цикл ишем в альфавит русского языка если нет то 1 байт а если есть 2 байт и так расчитиваем и свдиг позиции... Геморой конечно но зная лимита текст над головой не актуально если и будет урон появлять и чат.
Короче неактуально как бы!
и путь не должен русский (А бывает что реестр заносит оригинальный путь варика который не все варик указан путь конечного) не открывает что пришлось папку переминовать в оригинал Warcraft III и открылось много чего нет в инструкции.. либо администрации не допускает...
але ребята уже описали делай 1,2,4,8 так как они никогда не повторяют способность что легче определить какие способности например герой получает 11% скорость то вручаем героя 8% это 1 абилка, а другой 2% абилка и 1% абилка так как повтор не будет никогда, и все запоминаем равкод в массив который герой получил, если сброс или изменение тупо по массиву проходим и удаляем и заново дает новый процент и это до 100% вполне несколько абилок
1,2,4,8,16,32,64 вот и все а если выше 100 то увеличиваем 124 248 и так далее
вы че курите делаете 1,2,4,8 и так далее способности при добавлении заносите в группу добалвеных способностей, при удаление всех удаляем в группе и заново выдаем через power шаг двигаем чем 10000 уровневный абилки
.юнит получает урон
получаем текуший отнимает текуший урон если урон уходит за пределами ниже 0.405 то игнорировать инае расчитать от максхп / (текушего здоровья - урон) * 100 = получаем процент и шаманим со способности!!!
а таймер вполне 2 сек чтобы востановить скорость если реген быстрый!!!
для актуальной исползуем GetRandomInt(1, 10000) <= 400
400 это равен 4% бывает нужды для 0.02% = 2 шанса так вот если рандом ниже или равен то срабатываем действия иначе игнорировать
» WarCraft 3 / Перевод карты без предоставления исходников
» WarCraft 3 / Анимированный Куст
» WarCraft 3 / Актирование способности через триггер?
» WarCraft 3 / Эффект страха
» WarCraft 3 / Проблема с кастомным хп-баром (он же Progress Bar)
» WarCraft 3 / Изменение высоты юнита
» Мир безумного / WarCraft 3 - 1.30 (все патчи PTR)
» WarCraft 3 / Не перемещается область для события. Что делать?
» WarCraft 3 / Что выгоднее?
» WarCraft 3 / Как пофиксить проблему с дуэлью
Например "Как пофиксить проблему с дуэлью" Тогда люди придут и нормально ответят..
» WarCraft 3 / Способности и алгоритмы на заказ
чтобы манипулировать свой урон на крит то резист браслет 200%, а потом уже триггерно наносите урон если шанс на крит магического то умножаем урона иначе просто снять хп.
Ред. pro100master
» WarCraft 3 / Как сделать триггер, из-за которого все слова игрока появляются
8gabriel8: Вот так примерно гуи реализовал и конвентировал в jass
Вот хороший библиотека выровняет текст над головой
» WarCraft 3 / Как сделать триггер, из-за которого все слова игрока появляются
Короче неактуально как бы!
» WarCraft 3 / Не работает превращение, по апгрейду
» WarCraft 3 / Никак не заработает SharpCraft
» WarCraft 3 / Как сделать триггер, из-за которого все слова игрока появляются
» WarCraft 3 / Jass New Gen Pack - Rebuild 1.4
» WarCraft 3 / Не воспроизводится музыка (SetMapMusic())
» WarCraft 3 / Как сделать эту способность триггерами?
1,2,4,8,16,32,64 вот и все а если выше 100 то увеличиваем 124 248 и так далее
» WarCraft 3 / Как сделать эту способность триггерами?
» WarCraft 3 / Как сделать эту способность триггерами?
получаем текуший отнимает текуший урон если урон уходит за пределами ниже 0.405 то игнорировать инае расчитать от максхп / (текушего здоровья - урон) * 100 = получаем процент и шаманим со способности!!!
а таймер вполне 2 сек чтобы востановить скорость если реген быстрый!!!
» WarCraft 3 / Описание предмета
» WarCraft 3 / Изменить информацию в реплее?
» WarCraft 3 / Jass код
400 это равен 4% бывает нужды для 0.02% = 2 шанса так вот если рандом ниже или равен то срабатываем действия иначе игнорировать
» WarCraft 3 / Триггерное количество еды