매크로를 써보는게 처음이라 기초문법부터 질문드리는점 양해부탁드립니다.
저는 양조 수도사이며 15초쿨을 가진 차단기 '손날 찌르기'를 이용한 차단기를 사용하고자 합니다. 
검색을 통해 다른분이 올려주신 것을 수정해봤는데 현재 코드는 이렇습니다.
원하는 정보들을 출력하는데는 성공했는데 두가지 문제가 생겼습니다.


#showtooltip
/run a=UnitName(t)c="손날 찌르기"t="target"b=UnitCastingInfo(t)d=UnitChannelInfo(t);b=b or d;if a and GetSpellCooldown(c)==0 then if b then s="차단성공 ▶ "..a.."의 ".."["..b.."]" else s="차단실패 ▶ 차단쿨 15s"end;SendChatMessage(s)end;
/시전 손날 찌르기

문제점1. 차단스킬의 사거리 밖에서 대상을 클릭하고 사용해도 해당하는 채팅이 출력됩니다.
->사거리문제로 스킬쿨이 안돌아서 여러번 눌렀을경우에 실패메세지가 계속 출력됩니다.

문제점2. 차단기로 차단이 안되는 스킬들에 (실수로)사용해도 차단성공 메세지가 출력됩니다.

문법질문 1. if문의 조건으로 a,b가 들어가 있는게 보이는데, a와 b의 경우 대상이 선택안됐거나 대상이 아무스킬도 안쓰고있을때 값으로 0이 출력되는게 맞나요?

문법질문 2. 당장 문제점1만 해결되도 쓸만할 것 같아서 검색을 하다가 wow api에서 IsSpellInRange(s,t)란 함수를 발견하고 적용해봤는데 마찬가지네요.. 혹시 원인을 좀 알 수 있을까요

/run c="손날 찌르기"t="target"b=UnitCastingInfo(t)d=UnitChannelInfo(t);b=b or d;a=UnitName(t);if a and GetSpellCooldown(c)==0 and IsSpellInRange(c,t) then if b then s="차단성공 ▶ "..a.."의 ".."["..b.."]" else s="차단실패 ▶ 차단쿨 15s"end;SendChatMessage(s)end;
/시전 손날 찌르기                                                      //마찬가지로 차단실패 메세지 계속출력됨


IsSpellInRange("spellName", [unit]) - Is nil for no valid target, 0 for out of range, 1 for in range
wow api 설명에 의하면 사거리밖에서의 스킬사용은 해당값을 0으로 만들게 되고, 상위 if문 조건이 0 이되면 이후의 
코드가 전부 무시되어야 하는데 차단실패 메세지가 왜뜨는지 모르겠습니다.

의도한 구조는 다음과 같습니다만
if(대상설정 and 스킬사용가능 and 스킬범위만족){
     if(대상이 스킬사용중이면)  성공메세지 출력;
     else 실패메세지 출력;
}
혹시 어느 부분을 수정해야 원하는 결과가 나올까요
LUA라는 언어인것 같은데 와우 매크로 코딩 쉽지않네요ㅠ