Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 Diffchecker를 사용하는 방법. 데스크톱 앱을 사용하면 비교 데이터가 외부로 전송되지 않습니다!
데스크톱 앱 받기
wwtExport diff
생성일
2년 전
비교 결과 만료 없음
초기화
내보내기
공유
설명
1 삭제
행
총
삭제
글자
총
삭제
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
272 행
복사
10 추가
행
총
추가
글자
총
추가
이 기능을 계속 사용하려면 업그레이드해 주세요
Diff
checker
Pro
요금제 보기
277 행
복사
-- 新增外部库地址
-- 新增外部库地址
g_lfs=require('lfs')
g_lfs=require('lfs')
package.path = package.path..";"..g_lfs.writedir().."Scripts\\wwt\\?.lua"
package.path = package.path..";"..g_lfs.writedir().."Scripts\\wwt\\?.lua"
package.cpath = package.cpath..";"..g_lfs.writedir().."Scripts\\wwt\\?.dll"
package.cpath = package.cpath..";"..g_lfs.writedir().."Scripts\\wwt\\?.dll"
-- 定义dcs export函数
-- 定义dcs export函数
do
do
--初始化
--初始化
if g_winwingInit==nil then
if g_winwingInit==nil then
g_winwingInit=true
g_winwingInit=true
-- 声明
-- 声明
local _winwing={}
local _winwing={}
_winwing.selfData={}
_winwing.selfData={}
_winwing.mission=nil
_winwing.mission=nil
_winwing.mod=nil
_winwing.mod=nil
_winwing.output={}
_winwing.output={}
_winwing.common={}
_winwing.common={}
_winwing.clock=0
_winwing.clock=0
_winwing.delay=1.0
_winwing.delay=1.0
_winwing.interval=0.03
_winwing.interval=0.03
_winwing.json=loadfile("Scripts\\JSON.lua")()
_winwing.json=loadfile("Scripts\\JSON.lua")()
local _dev=nil
local _dev=nil
local _devVal=nil
local _devVal=nil
local _key=nil
local _key=nil
local _val=nil
local _val=nil
--加载网络库
--加载网络库
_winwing.net=require("wwtNetwork")
_winwing.net=require("wwtNetwork")
--启动网络
--启动网络
_winwing.net.start()
_winwing.net.start()
--网络就绪
--网络就绪
local _send={}
local _send={}
_send["func"]="net"
_send["func"]="net"
_send["msg"]="ready"
_send["msg"]="ready"
_winwing.net.send(_send)
_winwing.net.send(_send)
do
do
--定义函数
--定义函数
_winwing.LuaExportStart=function()
_winwing.LuaExportStart=function()
--记录日志
--记录日志
log.write("WWT",log.INFO,"Export start!")
log.write("WWT",log.INFO,"Export start!")
--任务就绪
--任务就绪
local _send={}
local _send={}
_send["func"]="mission"
_send["func"]="mission"
_send["msg"]="ready"
_send["msg"]="ready"
_winwing.net.send(_send)
_winwing.net.send(_send)
end
end
_winwing.LuaExportBeforeNextFrame=function()
_winwing.LuaExportBeforeNextFrame=function()
end
end
_winwing.getNet=function(t)
_winwing.getNet=function(t)
--任务开始(仅一次)
--任务开始(仅一次)
if _winwing.mission==nil then
if _winwing.mission==nil then
_winwing.mission=true
_winwing.mission=true
local _send={}
local _send={}
_send["func"]="mission"
_send["func"]="mission"
_send["msg"]="start"
_send["msg"]="start"
_winwing.net.send(_send)
_winwing.net.send(_send)
end
end
--获取机型
--获取机型
local _self=LoGetSelfData()
local _self=LoGetSelfData()
if _self~=nil then
if _self~=nil then
if _winwing.mod~=_self.Name then
if _winwing.mod~=_self.Name then
--记录机型
--记录机型
log.write("WWT",log.INFO,_self.Name)
log.write("WWT",log.INFO,_self.Name)
_winwing.mod=_self.Name
_winwing.mod=_self.Name
local _send={}
local _send={}
_send["func"]="mod"
_send["func"]="mod"
_send["msg"]=_self.Name
_send["msg"]=_self.Name
_winwing.net.send(_send)
_winwing.net.send(_send)
end
end
end
end
--接受网络数据并处理
--接受网络数据并处理
local _get=_winwing.net.get()
local _get=_winwing.net.get()
if type(_get)=="table" and _winwing.mod~=nil then
if type(_get)=="table" and _winwing.mod~=nil then
if _get["func"]=="addOutput" then--添加输出(变化输出)
if _get["func"]=="addOutput" then--添加输出(变化输出)
--遍历数据并添加
--遍历数据并添加
for _dev,_devVal in pairs(_get["args"]) do
for _dev,_devVal in pairs(_get["args"]) do
for _key,_valOld in pairs(_devVal) do
for _key,_valOld in pairs(_devVal) do
if type(_winwing.output[_dev])~="table" then
if type(_winwing.output[_dev])~="table" then
_winwing.output[_dev]={}
_winwing.output[_dev]={}
end
end
_winwing.output[_dev][_key]=_valOld
_winwing.output[_dev][_key]=_valOld
end
end
end
end
elseif _get["func"]=="getOutput" then--获取输出(仅一次)
elseif _get["func"]=="getOutput" then--获取输出(仅一次)
--遍历数据并回应
--遍历数据并回应
local _send={}
local _send={}
_send["func"]=_get["func"]
_send["func"]=_get["func"]
for _dev,_devVal in pairs(_get["args"]) do
for _dev,_devVal in pairs(_get["args"]) do
복사
복사됨
복사
복사됨
if _dev == nil or type(GetDevice(_dev))~='table' then
break
end
GetDevice(_dev):update_arguments()
GetDevice(_dev):update_arguments()
for _key,_valOld in pairs(_devVal) do
for _key,_valOld in pairs(_devVal) do
local _valNew=GetDevice(_dev):get_argument_value(_key)
local _valNew=GetDevice(_dev):get_argument_value(_key)
if type(_send["args"])~='table' then
if type(_send["args"])~='table' then
_send["args"]={}
_send["args"]={}
end
end
if type(_send["args"][_dev])~='table' then
if type(_send["args"][_dev])~='table' then
_send["args"][_dev]={}
_send["args"][_dev]={}
end
end
_send["args"][_dev][_key]=_valNew
_send["args"][_dev][_key]=_valNew
end
end
end
end
_winwing.net.send(_send)
_winwing.net.send(_send)
elseif _get["func"]=="clearOutput" then--清空输出
elseif _get["func"]=="clearOutput" then--清空输出
_winwing.output={}
_winwing.output={}
elseif _get["func"]=="addCommon" then--添加公共接口(变化输出)
elseif _get["func"]=="addCommon" then--添加公共接口(变化输出)
--遍历数据并添加
--遍历数据并添加
for _key,_arg in pairs(_get["args"]) do
for _key,_arg in pairs(_get["args"]) do
_winwing.common[_key]={}
_winwing.common[_key]={}
_winwing.common[_key]["identifyMethod"]=_arg
_winwing.common[_key]["identifyMethod"]=_arg
_winwing.common[_key]["value"]=nil
_winwing.common[_key]["value"]=nil
end
end
elseif _get["func"]=="getCommon" then--获取公共接口(仅一次)
elseif _get["func"]=="getCommon" then--获取公共接口(仅一次)
--遍历数据并回应
--遍历数据并回应
local _send={}
local _send={}
_send["func"]=_get["func"]
_send["func"]=_get["func"]
for _key,_msg in pairs(_get["args"]) do
for _key,_msg in pairs(_get["args"]) do
local _func,_err=loadstring(_msg)
local _func,_err=loadstring(_msg)
if _func then
if _func then
local _status,_result = pcall(_func)
local _status,_result = pcall(_func)
local _send={}
local _send={}
_send["args"][_key]=_result
_send["args"][_key]=_result
else
else
local _send={}
local _send={}
_send["args"][_key]=tostring(_err)
_send["args"][_key]=tostring(_err)
end
end
end
end
_winwing.net.send(_send)
_winwing.net.send(_send)
elseif _get["func"]=="clearCommon" then--清空公共接口
elseif _get["func"]=="clearCommon" then--清空公共接口
_winwing.common={}
_winwing.common={}
elseif _get["func"]=="original" then--原始接口
elseif _get["func"]=="original" then--原始接口
local _func,_err=loadstring(_get["msg"])
local _func,_err=loadstring(_get["msg"])
if _func then
if _func then
local _status,_result = pcall(_func)
local _status,_result = pcall(_func)
local _send={}
local _send={}
_send["func"]=_get["func"]
_send["func"]=_get["func"]
_send["status"]=_status
_send["status"]=_status
_send["msg"]=_result
_send["msg"]=_result
_winwing.net.send(_send)
_winwing.net.send(_send)
else
else
local _send={}
local _send={}
_send["func"]=_get["func"]
_send["func"]=_get["func"]
_send["status"]=false
_send["status"]=false
_send["msg"]=tostring(_err)
_send["msg"]=tostring(_err)
_winwing.net.send(_send)
_winwing.net.send(_send)
end
end
elseif _get["func"]=="setInput" then--设置输入
elseif _get["func"]=="setInput" then--设置输入
--遍历数据并触发
--遍历数据并触发
for _dev,_devVal in pairs(_get["args"]) do
for _dev,_devVal in pairs(_get["args"]) do
for _key,_val in pairs(_devVal) do
for _key,_val in pairs(_devVal) do
복사
복사됨
복사
복사됨
local dev=GetDevice(_dev)
if (_dev ~= nil) then
if dev
.performClickableAction~= nil then
local dev=GetDevice(_dev)
dev:performClickableAction(_key,_val)
if dev
~= nil and dev
.performClickableAction~= nil then
dev:performClickableAction(_key,_val)
end
end
end
end
end
end
end
end
end
end
end
end
end
_winwing.sendNet=function(t)
_winwing.sendNet=function(t)
--发送之前添加的输出数据(变化发送)
--发送之前添加的输出数据(变化发送)
local _sendOutput={}
local _sendOutput={}
_sendOutput["func"]="addOutput"
_sendOutput["func"]="addOutput"
_sendOutput["timestamp"]=t
_sendOutput["timestamp"]=t
for _dev,_devVal in pairs(_winwing.output) do
for _dev,_devVal in pairs(_winwing.output) do
복사
복사됨
복사
복사됨
if GetDevice(_dev)==nil
l
or type(GetDevice(_dev))~='table' then
if GetDevice(_dev)==nil
or type(GetDevice(_dev))~='table' then
break
break
end
end
GetDevice(_dev):update_arguments()
GetDevice(_dev):update_arguments()
for _key,_valOld in pairs(_devVal) do
for _key,_valOld in pairs(_devVal) do
local _valNew=GetDevice(_dev):get_argument_value(_key)
local _valNew=GetDevice(_dev):get_argument_value(_key)
if _valNew~=_valOld then
if _valNew~=_valOld then
_winwing.output[_dev][_key]=_valNew
_winwing.output[_dev][_key]=_valNew
if type(_sendOutput["args"])~='table' then
if type(_sendOutput["args"])~='table' then
_sendOutput["args"]={}
_sendOutput["args"]={}
end
end
if type(_sendOutput["args"][_dev])~='table' then
if type(_sendOutput["args"][_dev])~='table' then
_sendOutput["args"][_dev]={}
_sendOutput["args"][_dev]={}
end
end
_sendOutput["args"][_dev][_key]=_valNew
_sendOutput["args"][_dev][_key]=_valNew
end
end
end
end
end
end
if _sendOutput["args"]~=nil then
if _sendOutput["args"]~=nil then
_winwing.net.send(_sendOutput)
_winwing.net.send(_sendOutput)
end
end
--发送之前添加的公共接口(变化发送)
--发送之前添加的公共接口(变化发送)
local _sendCommon={}
local _sendCommon={}
_sendCommon["func"]="addCommon"
_sendCommon["func"]="addCommon"
_sendCommon["timestamp"]=t
_sendCommon["timestamp"]=t
for _key,_arg in pairs(_winwing.common) do
for _key,_arg in pairs(_winwing.common) do
local _func,_err=loadstring(_arg.identifyMethod)
local _func,_err=loadstring(_arg.identifyMethod)
if _func then
if _func then
local _status,_result = pcall(_func)
local _status,_result = pcall(_func)
if _winwing.json:encode(_result)~=_winwing.json:encode(_arg.value) then
if _winwing.json:encode(_result)~=_winwing.json:encode(_arg.value) then
if type(_sendCommon["args"])~='table' then
if type(_sendCommon["args"])~='table' then
_sendCommon["args"]={}
_sendCommon["args"]={}
end
end
_sendCommon["args"][_key]=_result
_sendCommon["args"][_key]=_result
_arg.value=_result
_arg.value=_result
end
end
else
else
if type(_sendCommon["args"])~='table' then
if type(_sendCommon["args"])~='table' then
_sendCommon["args"]={}
_sendCommon["args"]={}
end
end
_sendCommon["args"][_key]=tostring(_err)
_sendCommon["args"][_key]=tostring(_err)
end
end
end
end
if _sendCommon["args"]~=nil then
if _sendCommon["args"]~=nil then
_winwing.net.send(_sendCommon)
_winwing.net.send(_sendCommon)
end
end
end
end
_winwing.LuaExportActivityNextEvent=function(t)
_winwing.LuaExportActivityNextEvent=function(t)
_winwing.clock=t+_winwing.interval
_winwing.clock=t+_winwing.interval
--接收数据
--接收数据
_winwing.getNet(_winwing.clock)
_winwing.getNet(_winwing.clock)
--发送数据
--发送数据
_winwing.sendNet(_winwing.clock)
_winwing.sendNet(_winwing.clock)
return _winwing.clock
return _winwing.clock
end
end
_winwing.LuaExportStop=function()
_winwing.LuaExportStop=function()
--任务结束,关闭网络
--任务结束,关闭网络
local _send={}
local _send={}
_send["func"]="mission"
_send["func"]="mission"
_send["msg"]="stop"
_send["msg"]="stop"
_winwing.net.send(_send)
_winwing.net.send(_send)
--清空缓存
--清空缓存
_winwing.output=nil
_winwing.output=nil
_winwing.common=nil
_winwing.common=nil
--记录日志
--记录日志
log.write("WWT",log.INFO,"Export stop!")
log.write("WWT",log.INFO,"Export stop!")
end
end
--记录其他的(第三方)export函数,方便之后在执行我们的函数后,执行第三方函数。
--记录其他的(第三方)export函数,方便之后在执行我们的函数后,执行第三方函数。
_winwing.OtherLuaExportStart=LuaExportStart --开始函数
_winwing.OtherLuaExportStart=LuaExportStart --开始函数
_winwing.OtherLuaExportBeforeNextFrame=LuaExportBeforeNextFrame --输入数据到DCS内部,比如控制飞机的横滚
_winwing.OtherLuaExportBeforeNextFrame=LuaExportBeforeNextFrame --输入数据到DCS内部,比如控制飞机的横滚
_winwing.OtherLuaExportActivityNextEvent=LuaExportActivityNextEvent --输出数据到DCS外部,比如获取飞机的高度
_winwing.OtherLuaExportActivityNextEvent=LuaExportActivityNextEvent --输出数据到DCS外部,比如获取飞机的高度
_winwing.OtherLuaExportStop=LuaExportStop --结束函数
_winwing.OtherLuaExportStop=LuaExportStop --结束函数
--定义dcs export函数
--定义dcs export函数
LuaExportStart=function()
LuaExportStart=function()
_winwing.LuaExportStart()
_winwing.LuaExportStart()
if _winwing.OtherLuaExportStart then
if _winwing.OtherLuaExportStart then
_winwing.OtherLuaExportStart()
_winwing.OtherLuaExportStart()
end
end
end
end
LuaExportBeforeNextFrame=function()
LuaExportBeforeNextFrame=function()
_winwing.LuaExportBeforeNextFrame()
_winwing.LuaExportBeforeNextFrame()
if _winwing.OtherLuaExportBeforeNextFrame then
if _winwing.OtherLuaExportBeforeNextFrame then
_winwing.OtherLuaExportBeforeNextFrame()
_winwing.OtherLuaExportBeforeNextFrame()
end
end
end
end
LuaExportActivityNextEvent=function(t)
LuaExportActivityNextEvent=function(t)
t=_winwing.LuaExportActivityNextEvent(t)
t=_winwing.LuaExportActivityNextEvent(t)
if _winwing.OtherLuaExportActivityNextEvent then
if _winwing.OtherLuaExportActivityNextEvent then
t=_winwing.OtherLuaExportActivityNextEvent(t)
t=_winwing.OtherLuaExportActivityNextEvent(t)
end
end
return t
return t
end
end
LuaExportStop=function()
LuaExportStop=function()
_winwing.LuaExportStop()
_winwing.LuaExportStop()
if _winwing.OtherLuaExportStop then
if _winwing.OtherLuaExportStop then
_winwing.OtherLuaExportStop()
_winwing.OtherLuaExportStop()
end
end
end
end
log.write("WWT",log.INFO,"Winwing export installed!")
log.write("WWT",log.INFO,"Winwing export installed!")
end
end
end
end
end
end
저장된 비교 결과
원본
파일 열기
-- 新增外部库地址 g_lfs=require('lfs') package.path = package.path..";"..g_lfs.writedir().."Scripts\\wwt\\?.lua" package.cpath = package.cpath..";"..g_lfs.writedir().."Scripts\\wwt\\?.dll" -- 定义dcs export函数 do --初始化 if g_winwingInit==nil then g_winwingInit=true -- 声明 local _winwing={} _winwing.selfData={} _winwing.mission=nil _winwing.mod=nil _winwing.output={} _winwing.common={} _winwing.clock=0 _winwing.delay=1.0 _winwing.interval=0.03 _winwing.json=loadfile("Scripts\\JSON.lua")() local _dev=nil local _devVal=nil local _key=nil local _val=nil --加载网络库 _winwing.net=require("wwtNetwork") --启动网络 _winwing.net.start() --网络就绪 local _send={} _send["func"]="net" _send["msg"]="ready" _winwing.net.send(_send) do --定义函数 _winwing.LuaExportStart=function() --记录日志 log.write("WWT",log.INFO,"Export start!") --任务就绪 local _send={} _send["func"]="mission" _send["msg"]="ready" _winwing.net.send(_send) end _winwing.LuaExportBeforeNextFrame=function() end _winwing.getNet=function(t) --任务开始(仅一次) if _winwing.mission==nil then _winwing.mission=true local _send={} _send["func"]="mission" _send["msg"]="start" _winwing.net.send(_send) end --获取机型 local _self=LoGetSelfData() if _self~=nil then if _winwing.mod~=_self.Name then --记录机型 log.write("WWT",log.INFO,_self.Name) _winwing.mod=_self.Name local _send={} _send["func"]="mod" _send["msg"]=_self.Name _winwing.net.send(_send) end end --接受网络数据并处理 local _get=_winwing.net.get() if type(_get)=="table" and _winwing.mod~=nil then if _get["func"]=="addOutput" then--添加输出(变化输出) --遍历数据并添加 for _dev,_devVal in pairs(_get["args"]) do for _key,_valOld in pairs(_devVal) do if type(_winwing.output[_dev])~="table" then _winwing.output[_dev]={} end _winwing.output[_dev][_key]=_valOld end end elseif _get["func"]=="getOutput" then--获取输出(仅一次) --遍历数据并回应 local _send={} _send["func"]=_get["func"] for _dev,_devVal in pairs(_get["args"]) do GetDevice(_dev):update_arguments() for _key,_valOld in pairs(_devVal) do local _valNew=GetDevice(_dev):get_argument_value(_key) if type(_send["args"])~='table' then _send["args"]={} end if type(_send["args"][_dev])~='table' then _send["args"][_dev]={} end _send["args"][_dev][_key]=_valNew end end _winwing.net.send(_send) elseif _get["func"]=="clearOutput" then--清空输出 _winwing.output={} elseif _get["func"]=="addCommon" then--添加公共接口(变化输出) --遍历数据并添加 for _key,_arg in pairs(_get["args"]) do _winwing.common[_key]={} _winwing.common[_key]["identifyMethod"]=_arg _winwing.common[_key]["value"]=nil end elseif _get["func"]=="getCommon" then--获取公共接口(仅一次) --遍历数据并回应 local _send={} _send["func"]=_get["func"] for _key,_msg in pairs(_get["args"]) do local _func,_err=loadstring(_msg) if _func then local _status,_result = pcall(_func) local _send={} _send["args"][_key]=_result else local _send={} _send["args"][_key]=tostring(_err) end end _winwing.net.send(_send) elseif _get["func"]=="clearCommon" then--清空公共接口 _winwing.common={} elseif _get["func"]=="original" then--原始接口 local _func,_err=loadstring(_get["msg"]) if _func then local _status,_result = pcall(_func) local _send={} _send["func"]=_get["func"] _send["status"]=_status _send["msg"]=_result _winwing.net.send(_send) else local _send={} _send["func"]=_get["func"] _send["status"]=false _send["msg"]=tostring(_err) _winwing.net.send(_send) end elseif _get["func"]=="setInput" then--设置输入 --遍历数据并触发 for _dev,_devVal in pairs(_get["args"]) do for _key,_val in pairs(_devVal) do local dev=GetDevice(_dev) if dev.performClickableAction~= nil then dev:performClickableAction(_key,_val) end end end end end end _winwing.sendNet=function(t) --发送之前添加的输出数据(变化发送) local _sendOutput={} _sendOutput["func"]="addOutput" _sendOutput["timestamp"]=t for _dev,_devVal in pairs(_winwing.output) do if GetDevice(_dev)==nill or type(GetDevice(_dev))~='table' then break end GetDevice(_dev):update_arguments() for _key,_valOld in pairs(_devVal) do local _valNew=GetDevice(_dev):get_argument_value(_key) if _valNew~=_valOld then _winwing.output[_dev][_key]=_valNew if type(_sendOutput["args"])~='table' then _sendOutput["args"]={} end if type(_sendOutput["args"][_dev])~='table' then _sendOutput["args"][_dev]={} end _sendOutput["args"][_dev][_key]=_valNew end end end if _sendOutput["args"]~=nil then _winwing.net.send(_sendOutput) end --发送之前添加的公共接口(变化发送) local _sendCommon={} _sendCommon["func"]="addCommon" _sendCommon["timestamp"]=t for _key,_arg in pairs(_winwing.common) do local _func,_err=loadstring(_arg.identifyMethod) if _func then local _status,_result = pcall(_func) if _winwing.json:encode(_result)~=_winwing.json:encode(_arg.value) then if type(_sendCommon["args"])~='table' then _sendCommon["args"]={} end _sendCommon["args"][_key]=_result _arg.value=_result end else if type(_sendCommon["args"])~='table' then _sendCommon["args"]={} end _sendCommon["args"][_key]=tostring(_err) end end if _sendCommon["args"]~=nil then _winwing.net.send(_sendCommon) end end _winwing.LuaExportActivityNextEvent=function(t) _winwing.clock=t+_winwing.interval --接收数据 _winwing.getNet(_winwing.clock) --发送数据 _winwing.sendNet(_winwing.clock) return _winwing.clock end _winwing.LuaExportStop=function() --任务结束,关闭网络 local _send={} _send["func"]="mission" _send["msg"]="stop" _winwing.net.send(_send) --清空缓存 _winwing.output=nil _winwing.common=nil --记录日志 log.write("WWT",log.INFO,"Export stop!") end --记录其他的(第三方)export函数,方便之后在执行我们的函数后,执行第三方函数。 _winwing.OtherLuaExportStart=LuaExportStart --开始函数 _winwing.OtherLuaExportBeforeNextFrame=LuaExportBeforeNextFrame --输入数据到DCS内部,比如控制飞机的横滚 _winwing.OtherLuaExportActivityNextEvent=LuaExportActivityNextEvent --输出数据到DCS外部,比如获取飞机的高度 _winwing.OtherLuaExportStop=LuaExportStop --结束函数 --定义dcs export函数 LuaExportStart=function() _winwing.LuaExportStart() if _winwing.OtherLuaExportStart then _winwing.OtherLuaExportStart() end end LuaExportBeforeNextFrame=function() _winwing.LuaExportBeforeNextFrame() if _winwing.OtherLuaExportBeforeNextFrame then _winwing.OtherLuaExportBeforeNextFrame() end end LuaExportActivityNextEvent=function(t) t=_winwing.LuaExportActivityNextEvent(t) if _winwing.OtherLuaExportActivityNextEvent then t=_winwing.OtherLuaExportActivityNextEvent(t) end return t end LuaExportStop=function() _winwing.LuaExportStop() if _winwing.OtherLuaExportStop then _winwing.OtherLuaExportStop() end end log.write("WWT",log.INFO,"Winwing export installed!") end end end
수정본
파일 열기
-- 新增外部库地址 g_lfs=require('lfs') package.path = package.path..";"..g_lfs.writedir().."Scripts\\wwt\\?.lua" package.cpath = package.cpath..";"..g_lfs.writedir().."Scripts\\wwt\\?.dll" -- 定义dcs export函数 do --初始化 if g_winwingInit==nil then g_winwingInit=true -- 声明 local _winwing={} _winwing.selfData={} _winwing.mission=nil _winwing.mod=nil _winwing.output={} _winwing.common={} _winwing.clock=0 _winwing.delay=1.0 _winwing.interval=0.03 _winwing.json=loadfile("Scripts\\JSON.lua")() local _dev=nil local _devVal=nil local _key=nil local _val=nil --加载网络库 _winwing.net=require("wwtNetwork") --启动网络 _winwing.net.start() --网络就绪 local _send={} _send["func"]="net" _send["msg"]="ready" _winwing.net.send(_send) do --定义函数 _winwing.LuaExportStart=function() --记录日志 log.write("WWT",log.INFO,"Export start!") --任务就绪 local _send={} _send["func"]="mission" _send["msg"]="ready" _winwing.net.send(_send) end _winwing.LuaExportBeforeNextFrame=function() end _winwing.getNet=function(t) --任务开始(仅一次) if _winwing.mission==nil then _winwing.mission=true local _send={} _send["func"]="mission" _send["msg"]="start" _winwing.net.send(_send) end --获取机型 local _self=LoGetSelfData() if _self~=nil then if _winwing.mod~=_self.Name then --记录机型 log.write("WWT",log.INFO,_self.Name) _winwing.mod=_self.Name local _send={} _send["func"]="mod" _send["msg"]=_self.Name _winwing.net.send(_send) end end --接受网络数据并处理 local _get=_winwing.net.get() if type(_get)=="table" and _winwing.mod~=nil then if _get["func"]=="addOutput" then--添加输出(变化输出) --遍历数据并添加 for _dev,_devVal in pairs(_get["args"]) do for _key,_valOld in pairs(_devVal) do if type(_winwing.output[_dev])~="table" then _winwing.output[_dev]={} end _winwing.output[_dev][_key]=_valOld end end elseif _get["func"]=="getOutput" then--获取输出(仅一次) --遍历数据并回应 local _send={} _send["func"]=_get["func"] for _dev,_devVal in pairs(_get["args"]) do if _dev == nil or type(GetDevice(_dev))~='table' then break end GetDevice(_dev):update_arguments() for _key,_valOld in pairs(_devVal) do local _valNew=GetDevice(_dev):get_argument_value(_key) if type(_send["args"])~='table' then _send["args"]={} end if type(_send["args"][_dev])~='table' then _send["args"][_dev]={} end _send["args"][_dev][_key]=_valNew end end _winwing.net.send(_send) elseif _get["func"]=="clearOutput" then--清空输出 _winwing.output={} elseif _get["func"]=="addCommon" then--添加公共接口(变化输出) --遍历数据并添加 for _key,_arg in pairs(_get["args"]) do _winwing.common[_key]={} _winwing.common[_key]["identifyMethod"]=_arg _winwing.common[_key]["value"]=nil end elseif _get["func"]=="getCommon" then--获取公共接口(仅一次) --遍历数据并回应 local _send={} _send["func"]=_get["func"] for _key,_msg in pairs(_get["args"]) do local _func,_err=loadstring(_msg) if _func then local _status,_result = pcall(_func) local _send={} _send["args"][_key]=_result else local _send={} _send["args"][_key]=tostring(_err) end end _winwing.net.send(_send) elseif _get["func"]=="clearCommon" then--清空公共接口 _winwing.common={} elseif _get["func"]=="original" then--原始接口 local _func,_err=loadstring(_get["msg"]) if _func then local _status,_result = pcall(_func) local _send={} _send["func"]=_get["func"] _send["status"]=_status _send["msg"]=_result _winwing.net.send(_send) else local _send={} _send["func"]=_get["func"] _send["status"]=false _send["msg"]=tostring(_err) _winwing.net.send(_send) end elseif _get["func"]=="setInput" then--设置输入 --遍历数据并触发 for _dev,_devVal in pairs(_get["args"]) do for _key,_val in pairs(_devVal) do if (_dev ~= nil) then local dev=GetDevice(_dev) if dev ~= nil and dev.performClickableAction~= nil then dev:performClickableAction(_key,_val) end end end end end end end _winwing.sendNet=function(t) --发送之前添加的输出数据(变化发送) local _sendOutput={} _sendOutput["func"]="addOutput" _sendOutput["timestamp"]=t for _dev,_devVal in pairs(_winwing.output) do if GetDevice(_dev)==nil or type(GetDevice(_dev))~='table' then break end GetDevice(_dev):update_arguments() for _key,_valOld in pairs(_devVal) do local _valNew=GetDevice(_dev):get_argument_value(_key) if _valNew~=_valOld then _winwing.output[_dev][_key]=_valNew if type(_sendOutput["args"])~='table' then _sendOutput["args"]={} end if type(_sendOutput["args"][_dev])~='table' then _sendOutput["args"][_dev]={} end _sendOutput["args"][_dev][_key]=_valNew end end end if _sendOutput["args"]~=nil then _winwing.net.send(_sendOutput) end --发送之前添加的公共接口(变化发送) local _sendCommon={} _sendCommon["func"]="addCommon" _sendCommon["timestamp"]=t for _key,_arg in pairs(_winwing.common) do local _func,_err=loadstring(_arg.identifyMethod) if _func then local _status,_result = pcall(_func) if _winwing.json:encode(_result)~=_winwing.json:encode(_arg.value) then if type(_sendCommon["args"])~='table' then _sendCommon["args"]={} end _sendCommon["args"][_key]=_result _arg.value=_result end else if type(_sendCommon["args"])~='table' then _sendCommon["args"]={} end _sendCommon["args"][_key]=tostring(_err) end end if _sendCommon["args"]~=nil then _winwing.net.send(_sendCommon) end end _winwing.LuaExportActivityNextEvent=function(t) _winwing.clock=t+_winwing.interval --接收数据 _winwing.getNet(_winwing.clock) --发送数据 _winwing.sendNet(_winwing.clock) return _winwing.clock end _winwing.LuaExportStop=function() --任务结束,关闭网络 local _send={} _send["func"]="mission" _send["msg"]="stop" _winwing.net.send(_send) --清空缓存 _winwing.output=nil _winwing.common=nil --记录日志 log.write("WWT",log.INFO,"Export stop!") end --记录其他的(第三方)export函数,方便之后在执行我们的函数后,执行第三方函数。 _winwing.OtherLuaExportStart=LuaExportStart --开始函数 _winwing.OtherLuaExportBeforeNextFrame=LuaExportBeforeNextFrame --输入数据到DCS内部,比如控制飞机的横滚 _winwing.OtherLuaExportActivityNextEvent=LuaExportActivityNextEvent --输出数据到DCS外部,比如获取飞机的高度 _winwing.OtherLuaExportStop=LuaExportStop --结束函数 --定义dcs export函数 LuaExportStart=function() _winwing.LuaExportStart() if _winwing.OtherLuaExportStart then _winwing.OtherLuaExportStart() end end LuaExportBeforeNextFrame=function() _winwing.LuaExportBeforeNextFrame() if _winwing.OtherLuaExportBeforeNextFrame then _winwing.OtherLuaExportBeforeNextFrame() end end LuaExportActivityNextEvent=function(t) t=_winwing.LuaExportActivityNextEvent(t) if _winwing.OtherLuaExportActivityNextEvent then t=_winwing.OtherLuaExportActivityNextEvent(t) end return t end LuaExportStop=function() _winwing.LuaExportStop() if _winwing.OtherLuaExportStop then _winwing.OtherLuaExportStop() end end log.write("WWT",log.INFO,"Winwing export installed!") end end end
비교하기