--[[
          DOTAͨøļ

  
  Q שũҩԩY 
  
              
                      
       һ           
              ڶ      
                      
                           У


ע⡿ħޣʾʾϢ
						   
£
10.05.31   1.1
1.˸ļᵼӦWERTϼʹõ
10.05.10   1.1
1.֧ѡжӢ۵
09.09.15   1.1
1.޸ʾԻ
2.˵λʶbug
3.һЩϸ
09.09.09
1.޸ʾϢλ
2.ðʱĸЧ
3.һЩϸ
09.09.01
1.޷ʾ
09.08.23
1.ʾɾʾ
2.һЩӢ۱޷ʹͨøļbug
09.08.10
1.ʾ
2.ѡλб,겻øĽӢʱ,ļ.
3.ðʱвЧ,Էðʱżܻѧ.

飺
    dotaӢ۵ļܵĿݼ?ͳͳĳͳ
һļ?еİWERTδӢ۵1~4?һ
÷鷳?Ǿű,ʵĲÿ
Ӣ,ʹüʱӵӦ.

ʹ˵
ٹϽűִѡ,Ϸʼ֮,Ctrl+Pʼ
  (ע)
ڼסѡӢԭ14ܵĿݼ,δӼ̰
  ,ѡ֪ΰTRFW.
Ӣԭļܾͱ滻˳еWERT,
  ֪,W൱ڰ˵һ,E,R,Tֱǵ
  ,,ļ.
ô,ʱCtrl+Pصһ.
ȡʹøĽű,ctrl+Qִֹͣнű.

ע
WERTϰ߿и,λüű
ÿݼCtrl+P,Ctrl+QҲи,λ
  ű
۶ӵж4ܵӢ,ѡԵĽ4ܸWERT
  λ,紬,ڶбܿԲݼx
  ΪE,رȻΪR
ܻӭ,qq:167849866 ; bbs.war3h.com

                                      ߣǡ

                                                    ]]

--ű

--û޸Ĵ
--ĸ޸ĺļܿݼ޸
--ֱΪ81876982滻ΪQWER
nNewCode1=87     --87ΪWļ
nNewCode2=69     --69ΪEļ
nNewCode3=82     --82ΪRļ
nNewCode4=84     --84ΪTļ
--ĸʼüȡü޸
--޸ķͬ
nSetkey=80       --80ΪPļ
nSetkeyC=32      --32Ϊctrlļ
nCancelkey=79    --79ΪOļ
nCancelkeyC=32   --32Ϊctrlļ
--û޸Ĵ

nOldCode1=0
nOldCode2=0
nOldCode3=0
nOldCode4=0
nSetting=5

tHeroidtab={"iveE","mveE","I00H","J00H","mlbH","W60H","800U","510E","rglH","F00H","E00H","G00H","I10N","H10N","T10N","J10N","O10N","310N","410N","510N","R00H","I70H"}
ntablength=#tHeroidtab

tCodeNumb={"0","1","2","3","4","5","6","7","8","9"}
tCodeWord={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
tCodeFunc={"F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12"}

function fCodeToKey(code)
	if code>=48 and code<=57 then return tCodeNumb[code-47] end
	if code>=65 and code<=90 then return tCodeWord[code-64] end
	if code>=112 and code<=123 then return tCodeFunc[code-111] end
end

idWsh,ridWsh=0,0
idSet,ridSet=0,0

function myd3dsettext()
    war3w = getwar3window()
    --war3wl,war3wr,war3wt,war3wb = getwindowrect(war3w)
    win3wl,win3wr,win3wt,win3wb = getclientrect(war3w)
    x=(win3wr-win3wl)*0.05
    y=(win3wb-win3wt)*0.655
    if nShowstay==0 then 
        idWsh, ridWsh = d3dsettext(idWsh, ridWsh,'֡', 5000, x, y, "", 0x0000ff, nAlpha, 8, 16, 500, 0, 0, 0,0,2000)    
        idSet, ridSet = d3dsettext(idSet, ridSet,strText, 5000, 16*4+x, y, "", 0xffffff, nAlpha, 8, 16, 500, 0, 0, 0,0,2000)
    else
        idWsh, ridWsh = d3dsettext(idWsh, ridWsh,'֡', 30000, x, y, "", 0x0000ff, nAlpha, 8, 16, 500, 0, 0, 0,0,2000)    
        idSet, ridSet = d3dsettext(idSet, ridSet,strText, 30000, 16*4+x, y, "", 0xffffff, nAlpha, 8, 16, 500, 0, 0, 0,0,2000)
    end
end

setkeywatch('keyhookfunc')

function keyhookfunc(keycode, controlkey, downorup)
    if 0==iswar3front() then return 0 end
    if downorup==1 then return 0 end
    if keycode==nCancelkey and controlkey==nCancelkeyC then 
        nSetting=5
        nAlpha = 255
        nShowstay=0
        strText='ͨøļȡ'
        myd3dsettext()
		return 1
    end
    if keycode==nSetkey and nSetkeyC==controlkey then 
        nSetting=4
        strHeros=getcurrentunit()
        nAlpha = 255
        nShowstay=1
        strText='ʼͨøļѡӢۣΰ¸ӢĬϵļȼ'
        myd3dsettext()
        return 1
    elseif nSetting==4 and keycode>64 and keycode<91 then
        keydown(0)
        keyup(0)
        nSetting = 3
        nOldCode1=keycode
        nAlpha = 255
        nShowstay=1
        strText='ļ  '..fCodeToKey(keycode)..'  '..fCodeToKey(nNewCode1)
        myd3dsettext()
        return 1
    elseif nSetting==3 and keycode>64 and keycode<91 then
        keydown(0)
        keyup(0)
        nSetting = 2
        nOldCode2=keycode
        nAlpha = 255
        nShowstay=1
        strText=strText..'    '..fCodeToKey(keycode)..'  '..fCodeToKey(nNewCode2)
        myd3dsettext()
        return 1
    elseif nSetting==2 and keycode>64 and keycode<91 then
        keydown(0)
        keyup(0)
        nSetting = 1
        nOldCode3=keycode
        nAlpha = 255
        nShowstay=1
        strText=strText..'    '..fCodeToKey(keycode)..'  '..fCodeToKey(nNewCode3)
        myd3dsettext()
        return 1
    elseif nSetting==1 and keycode>64 and keycode<91 then
        keydown(0)
        keyup(0)
        nSetting = 0
        nOldCode4=keycode
        nAlpha = 255
        nShowstay=0
        strText=strText..'    '..fCodeToKey(keycode)..'  '..fCodeToKey(nNewCode4)..'       ͨøļóɹ'
        myd3dsettext()
        return 1
    else
        nHeroSelected=0
        if strHeros==getcurrentunit() then
            nHeroSelected=1
        else
            strHerostmp=getcurrentunit()
            for i=1,ntablength,1 do
                if strHerostmp==tHeroidtab[i] then
		    nHeroSelected=1
		end
            end
        end
        if 0==ischat() and nSetting==0 and nHeroSelected==1 and (controlkey==0 or controlkey==4 or controlkey==8)  then
            if keycode==nNewCode1 then
                keydown(nOldCode1)
                keyup(nOldCode1)
                return 1
            elseif keycode==nNewCode2 then
                keydown(nOldCode2)
                keyup(nOldCode2)
                return 1
            elseif keycode==nNewCode3 then
                keydown(nOldCode3)
                keyup(nOldCode3)
                return 1
            elseif keycode==nNewCode4 then
                keydown(nOldCode4)
                keyup(nOldCode4)
                return 1
            end
        end
    end
    return 0
end