Ну а дальше просто получаете x,y героя относительно левого верхнего угла игровой и телепортируете в
x1*dx
y1*dx
где x1,y1 левый верхний угол измерения.
Проще кодом объяснить
//! zinc
library Test {
region R1, R2;
real X1, Y1, X2, Y2, DX, DY, W1, W2, H1, H2;
integer AbilityID = 'Aroa';
function onInit(){
trigger t = CreateTrigger();
integer i;
unit u = gg_unit_edoc_0000;
FogEnable(false);
FogMaskEnable(false);
SelectUnit(u, true);
PanCameraToTimed(GetUnitX(u), GetUnitY(u), 0);
X1 = GetRectMinX(gg_rct_R1);
Y1 = GetRectMinY(gg_rct_R1);
X2 = GetRectMinX(gg_rct_R2);
Y2 = GetRectMinY(gg_rct_R2);
W1 = GetRectMaxX(gg_rct_R1) - X1;
W2 = GetRectMaxX(gg_rct_R2) - X2;
H1 = GetRectMaxY(gg_rct_R1) - Y1;
H2 = GetRectMaxY(gg_rct_R2) - Y2;
R1 = CreateRegion();
R2 = CreateRegion();
RegionAddRect(R1, gg_rct_R1);
RegionAddRect(R2, gg_rct_R2);
for (0 <= i < bj_MAX_PLAYER_SLOTS){
TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_SPELL_EFFECT, null);
}
TriggerAddCondition(t, Condition(function() -> boolean {
unit u = GetTriggerUnit();
real x, y, dx, dy;
boolean isMove = false;
if (GetSpellAbilityId() == AbilityID){
if (IsUnitInRegion(R1, u)){
dx = GetUnitX(u) - X1;
dy = GetUnitY(u) - Y1;
x = X2 + dx*W2/W1;
y = Y2 + dy*H2/H1;
isMove = true;
}
if (IsUnitInRegion(R2, u)){
dx = GetUnitX(u) - X2;
dy = GetUnitY(u) - Y2;
x = X1 + dx*W1/W2;
y = Y1 + dy*H1/H2;
isMove = true;
}
if (isMove){
SetUnitX(u, x);
SetUnitY(u, y);
PanCameraToTimed(x, y, 0);
}
}
u = null;
return false;
}));
BJDebugMsg("Используйте Рев для телепортации");
t = null; u = null;
}
}
//! endzinc
function ForGroupBJ takes group whichGroup, code callback returns nothing
// If the user wants the group destroyed, remember that fact and clear
// the flag, in case it is used again in the callback.
local boolean wantDestroy = bj_wantDestroyGroup
set bj_wantDestroyGroup = false
call ForGroup(whichGroup, callback)
// If the user wants the group destroyed, do so now.
if (wantDestroy) then
call DestroyGroup(whichGroup)
endif
endfunction
» XGM Конкурсы / Warcraft III Mini-Game Contest-2018
» WarCraft 3 / Телепортация по областям в соответствии с координатами
» XGM Конкурсы / Warcraft III Mini-Game Contest-2018
Отредактирован nazarpunk
» WarCraft 3 / Телепортация по областям в соответствии с координатами
Clamp:
» WarCraft 3 / Телепортация по областям в соответствии с координатами
Отредактирован nazarpunk
» WarCraft 3 / Телепортация по областям в соответствии с координатами
Например:
игровая = 1000x500
измерение = 100х50
dy = высота_измерения/высота_игровой = 50/500 = 0.1
x1*dx
y1*dx
где x1,y1 левый верхний угол измерения.
» WarCraft 3 / ZinC: Гнев Деревьев AOE
» WarCraft 3 / Polar
» WarCraft 3 / ZinC: Гнев Деревьев AOE
» WarCraft 3 / Атака всех видимых врагов заклинанием
» WarCraft 3 / Атака всех видимых врагов заклинанием
» WarCraft 3 / Атака всех видимых врагов заклинанием
» WarCraft 3 / Атака всех видимых врагов заклинанием
» WarCraft 3 / Атака всех видимых врагов заклинанием
Отредактирован nazarpunk
» WarCraft 3 / Иконки на заказ
» WarCraft 3 / Атака всех видимых врагов заклинанием
» WarCraft 3 / Атака всех видимых врагов заклинанием
» Администрация XGM / Реклама на сайте
» WarCraft 3 / Атака всех видимых врагов заклинанием
» WarCraft 3 / Атака всех видимых врагов заклинанием
» The movement of the stars / Давайте поговори подробнее о...
» The movement of the stars / Нужна помощь проекту
» The movement of the stars / Давайте поговори подробнее о...
» WarCraft 3 / Заказы на ландшафт
Нужен ландшафт/декор к проэкту.
» The movement of the stars / Давайте поговори подробнее о...