You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
281 lines
10 KiB
281 lines
10 KiB
globals
|
|
string bj_AllString=".................................!.#$%&'()*+,-./0123456789:;<=>.@ABCDEFGHIJKLMNOPQRSTUVWXYZ[.]^_`abcdefghijklmnopqrstuvwxyz{|}~................................................................................................................................"
|
|
//全局系统变量
|
|
unit bj_lastAbilityCastingUnit=null
|
|
unit bj_lastAbilityTargetUnit=null
|
|
unit bj_lastPoolAbstractedUnit=null
|
|
unitpool bj_lastCreatedUnitPool=null
|
|
item bj_lastPoolAbstractedItem=null
|
|
itempool bj_lastCreatedItemPool=null
|
|
attacktype bj_lastSetAttackType = ATTACK_TYPE_NORMAL
|
|
damagetype bj_lastSetDamageType = DAMAGE_TYPE_NORMAL
|
|
weapontype bj_lastSetWeaponType = WEAPON_TYPE_WHOKNOWS
|
|
real yd_MapMaxX = 0
|
|
real yd_MapMinX = 0
|
|
real yd_MapMaxY = 0
|
|
real yd_MapMinY = 0
|
|
private string array yd_PlayerColor
|
|
endglobals
|
|
|
|
//===========================================================================
|
|
//返回参数
|
|
//===========================================================================
|
|
//地图边界判断
|
|
function YDWECoordinateX takes real x returns real
|
|
return RMinBJ(RMaxBJ(x, yd_MapMinX), yd_MapMaxX)
|
|
endfunction
|
|
|
|
function YDWECoordinateY takes real y returns real
|
|
return RMinBJ(RMaxBJ(y, yd_MapMinY), yd_MapMaxY)
|
|
endfunction
|
|
//两个单位之间的距离
|
|
function YDWEDistanceBetweenUnits takes unit a,unit b returns real
|
|
return SquareRoot((GetUnitX(a)-GetUnitX(b))*(GetUnitX(a)-GetUnitX(b))+(GetUnitY(a)-GetUnitY(b))*(GetUnitY(a)-GetUnitY(b)))
|
|
endfunction
|
|
//两个单位之间的角度
|
|
function YDWEAngleBetweenUnits takes unit fromUnit, unit toUnit returns real
|
|
return bj_RADTODEG * Atan2(GetUnitY(toUnit) - GetUnitY(fromUnit), GetUnitX(toUnit) - GetUnitX(fromUnit))
|
|
endfunction
|
|
//生成区域
|
|
function YDWEGetRect takes real x,real y,real width, real height returns rect
|
|
return Rect( x - width*0.5, y - height*0.5, x + width*0.5, y + height*0.5 )
|
|
endfunction
|
|
|
|
//===========================================================================
|
|
//设置单位可以飞行
|
|
//===========================================================================
|
|
function YDWEFlyEnable takes unit u returns nothing
|
|
call UnitAddAbility(u,'Amrf')
|
|
call UnitRemoveAbility(u,'Amrf')
|
|
endfunction
|
|
|
|
//===========================================================================
|
|
//字符窜与ID转换
|
|
//===========================================================================
|
|
function YDWEId2S takes integer value returns string
|
|
local string charMap=bj_AllString
|
|
local string result = ""
|
|
local integer remainingValue = value
|
|
local integer charValue
|
|
local integer byteno
|
|
set byteno = 0
|
|
loop
|
|
set charValue = ModuloInteger(remainingValue, 256)
|
|
set remainingValue = remainingValue / 256
|
|
set result = SubString(charMap, charValue, charValue + 1) + result
|
|
set byteno = byteno + 1
|
|
exitwhen byteno == 4
|
|
endloop
|
|
return result
|
|
endfunction
|
|
|
|
function YDWES2Id takes string targetstr returns integer
|
|
local string originstr=bj_AllString
|
|
local integer strlength=StringLength(targetstr)
|
|
local integer a=0 //分部当前数字
|
|
local integer b=0 //当前处理字
|
|
local integer numx=1 //位权
|
|
local integer result=0
|
|
loop
|
|
exitwhen b>strlength-1
|
|
set numx=R2I(Pow(256,strlength-1-b))
|
|
set a=1
|
|
loop
|
|
exitwhen a>255
|
|
if SubString(targetstr,b,b+1)==SubString(originstr,a,a+1) then
|
|
set result=result+a*numx
|
|
set a=256
|
|
endif
|
|
set a=a+1
|
|
endloop
|
|
set b=b+1
|
|
endloop
|
|
return result
|
|
endfunction
|
|
|
|
function YDWES2UnitId takes string targetstr returns integer
|
|
return YDWES2Id(targetstr)
|
|
endfunction
|
|
|
|
function YDWES2ItemId takes string targetstr returns integer
|
|
return YDWES2Id(targetstr)
|
|
endfunction
|
|
|
|
function GetLastAbilityCastingUnit takes nothing returns unit
|
|
return bj_lastAbilityCastingUnit
|
|
endfunction
|
|
|
|
function GetLastAbilityTargetUnit takes nothing returns unit
|
|
return bj_lastAbilityTargetUnit
|
|
endfunction
|
|
|
|
function YDWESetMapLimitCoordinate takes real MinX,real MaxX,real MinY,real MaxY returns nothing
|
|
set yd_MapMaxX=MaxX
|
|
set yd_MapMinX=MinX
|
|
set yd_MapMaxY=MaxY
|
|
set yd_MapMinY=MinY
|
|
endfunction
|
|
|
|
//===========================================================================
|
|
//===========================================================================
|
|
//地图初始化
|
|
//===========================================================================
|
|
|
|
|
|
//YDWE特殊技能结束事件
|
|
globals
|
|
private trigger array AbilityCastingOverEventQueue
|
|
private integer array AbilityCastingOverEventType
|
|
private integer AbilityCastingOverEventNumber = 0
|
|
endglobals
|
|
|
|
function YDWESyStemAbilityCastingOverTriggerAction takes unit hero, integer index returns nothing
|
|
local integer i = 0
|
|
loop
|
|
exitwhen i >= AbilityCastingOverEventNumber
|
|
if AbilityCastingOverEventType[i] == index then
|
|
set bj_lastAbilityCastingUnit = hero
|
|
if AbilityCastingOverEventQueue[i] != null and TriggerEvaluate(AbilityCastingOverEventQueue[i]) and IsTriggerEnabled(AbilityCastingOverEventQueue[i]) then
|
|
call TriggerExecute(AbilityCastingOverEventQueue[i])
|
|
endif
|
|
endif
|
|
set i = i + 1
|
|
endloop
|
|
endfunction
|
|
|
|
//===========================================================================
|
|
//YDWE技能捕捉事件
|
|
//===========================================================================
|
|
function YDWESyStemAbilityCastingOverRegistTrigger takes trigger trg,integer index returns nothing
|
|
set AbilityCastingOverEventQueue[AbilityCastingOverEventNumber] = trg
|
|
set AbilityCastingOverEventType[AbilityCastingOverEventNumber] = index
|
|
set AbilityCastingOverEventNumber = AbilityCastingOverEventNumber + 1
|
|
endfunction
|
|
|
|
//===========================================================================
|
|
//系统函数完善
|
|
//===========================================================================
|
|
function YDWECreateUnitPool takes nothing returns nothing
|
|
set bj_lastCreatedUnitPool=CreateUnitPool()
|
|
endfunction
|
|
|
|
function YDWEPlaceRandomUnit takes unitpool up,player p,real x,real y,real face returns nothing //unitpool,player,real,real,real
|
|
set bj_lastPoolAbstractedUnit=PlaceRandomUnit(up,p,x,y,face)
|
|
endfunction
|
|
|
|
function YDWEGetLastUnitPool takes nothing returns unitpool
|
|
return bj_lastCreatedUnitPool
|
|
endfunction
|
|
|
|
function YDWEGetLastPoolAbstractedUnit takes nothing returns unit
|
|
return bj_lastPoolAbstractedUnit
|
|
endfunction
|
|
|
|
function YDWECreateItemPool takes nothing returns nothing
|
|
set bj_lastCreatedItemPool=CreateItemPool()
|
|
endfunction
|
|
|
|
function YDWEPlaceRandomItem takes itempool ip,real x,real y returns nothing //unitpool,player,real,real,real
|
|
set bj_lastPoolAbstractedItem=PlaceRandomItem(ip,x,y)
|
|
endfunction
|
|
|
|
function YDWEGetLastItemPool takes nothing returns itempool
|
|
return bj_lastCreatedItemPool
|
|
endfunction
|
|
|
|
function YDWEGetLastPoolAbstractedItem takes nothing returns item
|
|
return bj_lastPoolAbstractedItem
|
|
endfunction
|
|
|
|
function YDWESetAttackDamageWeaponType takes attacktype at,damagetype dt,weapontype wt returns nothing
|
|
set bj_lastSetAttackType=at
|
|
set bj_lastSetDamageType=dt
|
|
set bj_lastSetWeaponType=wt
|
|
endfunction
|
|
//unitpool bj_lastCreatedPool=null
|
|
//unit bj_lastPoolAbstractedUnit=null
|
|
|
|
function YDWEGetPlayerColorString takes player p, string s returns string
|
|
return yd_PlayerColor[GetHandleId(GetPlayerColor(p))] + s + "|r"
|
|
endfunction
|
|
|
|
//===========================================================================
|
|
//===========================================================================
|
|
//系统函数补充
|
|
//===========================================================================
|
|
//===========================================================================
|
|
function YDWEGetUnitItemSoftId takes unit hero,item it returns integer
|
|
local integer i = 0
|
|
loop
|
|
exitwhen i > 5
|
|
if UnitItemInSlot(hero, i) == it then
|
|
return i + 1
|
|
endif
|
|
set i = i + 1
|
|
endloop
|
|
return 0
|
|
endfunction
|
|
//===========================================================================
|
|
//===========================================================================
|
|
//地图初始化
|
|
//===========================================================================
|
|
//===========================================================================
|
|
|
|
//显示版本
|
|
function YDWEVersion_Display takes nothing returns boolean
|
|
call DisplayTimedTextToPlayer(GetTriggerPlayer(), 0, 0, 30,"|cFF1E90FF当前编辑器版本为: |r|cFF00FF00YDWE " + YDWE_VERSION_STRING)
|
|
return false
|
|
endfunction
|
|
|
|
function YDWEVersion_Init takes nothing returns nothing
|
|
local trigger t = CreateTrigger()
|
|
local integer i = 0
|
|
loop
|
|
exitwhen i == 12
|
|
call TriggerRegisterPlayerChatEvent(t, Player(i), "YDWE Version", true)
|
|
set i = i + 1
|
|
endloop
|
|
call TriggerAddCondition(t, Condition(function YDWEVersion_Display))
|
|
set t = null
|
|
endfunction
|
|
|
|
function InitializeYD takes nothing returns nothing
|
|
#if WARCRAFT_VERSION >= 124
|
|
# ifndef YDWE_HASH_INITVAR
|
|
# define YDWE_HASH_INITVAR
|
|
set YDHT=InitHashtable()
|
|
# endif
|
|
#else
|
|
# ifndef YDWE_HASH_INITVAR
|
|
# define YDWE_HASH_INITVAR
|
|
call FlushGameCache(InitGameCache("YDWE.wav"))
|
|
set YDGC=InitGameCache("YDWE.wav")
|
|
# endif
|
|
#endif
|
|
|
|
//=================设置变量=====================
|
|
set yd_MapMinX = GetCameraBoundMinX() - GetCameraMargin(CAMERA_MARGIN_LEFT)
|
|
set yd_MapMinY = GetCameraBoundMinY() - GetCameraMargin(CAMERA_MARGIN_BOTTOM)
|
|
set yd_MapMaxX = GetCameraBoundMaxX() + GetCameraMargin(CAMERA_MARGIN_RIGHT)
|
|
set yd_MapMaxY = GetCameraBoundMaxY() + GetCameraMargin(CAMERA_MARGIN_TOP)
|
|
|
|
|
|
set yd_PlayerColor [0] = "|cFFFF0303"
|
|
set yd_PlayerColor [1] = "|cFF0042FF"
|
|
set yd_PlayerColor [2] = "|cFF1CE6B9"
|
|
set yd_PlayerColor [3] = "|cFF540081"
|
|
set yd_PlayerColor [4] = "|cFFFFFC01"
|
|
set yd_PlayerColor [5] = "|cFFFE8A0E"
|
|
set yd_PlayerColor [6] = "|cFF20C000"
|
|
set yd_PlayerColor [7] = "|cFFE55BB0"
|
|
set yd_PlayerColor [8] = "|cFF959697"
|
|
set yd_PlayerColor [9] = "|cFF7EBFF1"
|
|
set yd_PlayerColor[10] = "|cFF106246"
|
|
set yd_PlayerColor[11] = "|cFF4E2A04"
|
|
set yd_PlayerColor[12] = "|cFF282828"
|
|
set yd_PlayerColor[13] = "|cFF282828"
|
|
set yd_PlayerColor[14] = "|cFF282828"
|
|
set yd_PlayerColor[15] = "|cFF282828"
|
|
//=================显示版本=====================
|
|
call YDWEVersion_Init()
|
|
endfunction
|
|
|