Добавлен Goodie,
не публикуется
Система проверяет юнита вышел ли он за границу карты
Также в системе присутствуют настройки и установка языкаа также с блекджеком и прочей штуки
Также в системе присутствуют настройки и установка языка
vJass
library UnitLeaveBounds initializer init
/*
vJass
--------------------
By G^M or CLOCK
--------------------
ENG
--------------------
To check the position of the unit, you need to put a condition string:
if (CheckPositionUnit(whichunit))
actions...
endif
Also present system settings...
--------------------
RUS
--------------------
Чтобы проверить позицию юнита, нужно вставить такую строку:
if (CheckPositionUnit(whichunit))
Действия...
endif
Также присутствуют настройки системы...
*/
globals
private real maxx
private real maxy
private real minx
private real miny
//Settings = Настройки
private bool DebugMessages = false // Display Debug Messages ? | Показать отладочное сообщение?
private string Language = "ENG" // Change Language: ENG,RUS | Выберите язык: ENG,RUS
private bool DisplayUnitInMinimap = false // Display unit in Mini map? |Показать юнита на карте?
private bool DisplayCoords = false // Display Coordinates? | Показать координаты?
endglobals
function CheckPositionUnit takes unit u returns boolean
local real x=GetUnitX(u)
local real y=GetUnitY(u)
local real deX=0.0
local real deY=0.0
local bool result = false
if (DebugMessages) then
set deX = x
set deY = y
endif
if (x > maxx) then
set x = maxx
set result = true
elseif (x < minx) then
set x = minx
set result = true
endif
if (y > maxy) then
set y = maxy
set result = true
elseif(y < miny) then
set y=miny
set result = true
endif
if (result and DebugMessages) then
if (Language == "ENG") then
call DisplayTimedTextToPlayer(Player(0),0.,0.,4,"|cFFA0FF00[Check Bounds] : Unit =| |r|cFFA000FF" + GetObjectName(GetUnitTypeId(u)) + "|r |cFFA0FF00|= leaved from bound!|r")
elseif (Language == "RUS") then
call DisplayTimedTextToPlayer(Player(0),0.,0.,4,"|cFFA0FF00[Check Bounds] : Юнит =| |r|cFFA000FF" + GetObjectName(GetUnitTypeId(u)) + "|r |cFFA0FF00|= вышел за границу!|r")
endif
if(DisplayCoords) then
call DisplayTimedTextToPlayer(Player(0),0.,0.,3.9," |cFFA0FF00X =|r |cFFA000FF" + R2S(deX) + "|r\n |cFFA0FF00Y=|r |cFFA000FF" + R2S(deY))
endif
if (DisplayUnitInMinimap) then
call PingMinimap(deX,deY,2.)
endif
endif
set u=null
return result
endfunction
private function init takes nothing returns nothing
set minx=GetCameraBoundMinX() - 500
set miny=GetCameraBoundMinY() - 500
set maxx=GetCameraBoundMaxX() + 500
set maxy=GetCameraBoundMaxY() + 500
endfunction
endlibrary
cJass
library UnitLeaveBounds initializer Start
{
/*
cJASS
--------------------
By G^M or CLOCK
--------------------
ENG
--------------------
To check the position of the unit, you need to put a condition string:
if (CheckPositionUnit(whichunit)){
actions...
}
Also present system settings...
--------------------
RUS
--------------------
Чтобы проверить позицию юнита, нужно вставить такую строку:
if (CheckPositionUnit(whichunit)){
Действия...
}
Также присутствуют настройки системы...
*/
#include "cj_types.j"
private float maxx,maxy,minx,miny
//Settings = Настройки
private bool DebugMessages = false // Display Debug Messages ? | Показать отладочное сообщение?
private string Language = "ENG" // Change Language: ENG,RUS | Выберите язык: ENG,RUS
private bool DisplayUnitInMinimap = false // Display unit in Mini map? |Показать юнита на карте?
private bool DisplayCoords = false // Display Coordinates? | Показать координаты?
bool CheckPositionUnit(unit u){float x=GetUnitX(u),y=GetUnitY(u),deX=0.0,deY=0.0;bool result = false
if (DebugMessages){deX = x;deY = y}
if (x > maxx) {x = maxx;result = true;elseif (x < minx) ;x = minx;result = true}
if (y > maxy) {y = maxy;result = true;elseif(y < miny);y=miny;result = true}
if (result and DebugMessages){
if (Language == "ENG") {
DisplayTimedTextToPlayer(Player(0),0.,0.,4,"|cFFA0FF00[Check Bounds] : Unit =| |r|cFFA000FF" + GetObjectName(GetUnitTypeId(u)) + "|r |cFFA0FF00|= leaved from bound!|r")
elseif (Language == "RUS")
DisplayTimedTextToPlayer(Player(0),0.,0.,4,"|cFFA0FF00[Check Bounds] : Юнит =| |r|cFFA000FF" + GetObjectName(GetUnitTypeId(u)) + "|r |cFFA0FF00|= вышел за границу!|r")
}
if(DisplayCoords){DisplayTimedTextToPlayer(Player(0),0.,0.,3.9," |cFFA0FF00X =|r |cFFA000FF" + R2S(deX) + "|r\n |cFFA0FF00Y=|r |cFFA000FF" + R2S(deY))}
if (DisplayUnitInMinimap){PingMinimap(deX,deY,2.)}
}
u=null;return result
}
private void Start(){minx=GetCameraBoundMinX() - 500;miny=GetCameraBoundMinY() - 500;maxx=GetCameraBoundMaxX() + 500;maxy=GetCameraBoundMaxY() + 500}
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Clamp
ShamaN26, Возможно он говорит за выходи какой то области, а я говорю за границу карты, дабы избежать фатала. Как юнит проходит черную границу, то условие срабатывает и можно делать с юнитом все что угодно.
Давай посмотрим, почему твоя система ненужный хлам:
Отредактирован Goodie
Мне лично эта система помогает
Clamp: