기본 콘텐츠로 건너뛰기

추천 가젯

리눅스 홈서버 알림용 텔레그램 봇(Telegram Bot) 연동 및 쉘 스크립트 구축 가이드

개인 홈서버를 운영하다 보면 백업 완료 여부나 시스템 에러 같은 단방향 알림을 스마트폰으로 빠르게 받아보고 싶어집니다. 외부 메일 서버나 복잡한 SMTP 설정을 거치지 않고, 가장 확실하고 가볍게 쓸 수 있는 텔레그램 봇을 이용한 홈서버 알림 구축 방법 을 정리합니다. 1단계: 텔레그램 봇 생성하기 (BotFather) 텔레그램 앱을 켜고 상단 검색창에 BotFather 를 검색하여 공식 봇(파란색 체크마크 확인)을 엽니다. 대화창에 아래 명령어를 입력하여 새로운 봇을 만듭니다. Plaintext /newbot 봇의 이름(Name)을 입력합니다. (예: My Home Server Bot ) 봇의 아이디(Username)를 입력합니다. (반드시 영문이며 끝에 bot 또는 _bot 으로 끝나야 합니다. 예: my_home_backup_bot ) 생성이 완료되면 HTTP API 토큰(Token)이 발급됩니다. 이 토큰을 안전하게 보관합니다. 2단계: 내 Chat ID(채팅방 고유 번호) 확인하기 텔레그램은 보안상 사용자가 먼저 봇에게 말을 걸어야 메시지를 받을 수 있으며, 봇이 나에게 메시지를 보내려면 고유 Chat ID 가 필요합니다. 텔레그램 검색창에 userinfobot 을 검색하여 들어갑니다. 하단의 [시작하기] 버튼을 누르면 내 계정의 정보와 함께 Id (숫자) 값을 알려줍니다. 이 숫자를 복사해 둡니다. [중요] 1단계에서 만든 내 봇의 아이디(예: @my_home_backup_bot )를 검색해서 대화창을 열고, [시작] 버튼을 누르거나 아무 메시지나 먼저 한 번 전송해 둡니다. 3단계: 리눅스 쉘 스크립트 작성 및 테스트 서버(터미널)에서 환경변수를 설정하고 curl 명령어를 통해 테스트 메시지를 보낼 수 있습니다. 특히 인자값이 없을 때를 대비해 기본값 처리를 해두면 유용합니다. 아래 내용을 포함하는 쉘 스크립트 파일(예: send_telegram.sh )을 작성합니다. Bash #!/bin/bash # 환경변수 설정 (실제 토큰과 C...

외교술이 게임 프로그램 내부에서 어떻게 작동하는가? (for HoMM III 3.2 & 4.0)

이 글은 http://heroescommunity.com/viewthread.php3?TID=28341 의 글을 구글번역기로 번역한 후 한국인이 읽기 쉽도록 수정한 글입니다.
일단 해당 글도 비판을 받은 부분이 있으니 잘 보시기를 바랍니다.

외교술이 어떻게 작동하는가? (for HoMM III 3.2 & 4.0)

(변수가 많아서 변수를 설명하고 있다. )

1. [Hero_Power]

영웅의 1차스킬 전투능력이 중요하다.
Hero_Power = sqrt ((1 + 0.05 * Attack) * (1 + 0.05 * Defense)); 

2. [Total_Army_Power]

영웅 군대의 총 힘은 영웅과 군대의 힘을 곱한 후 소수점을 버림으로 이루어진다. 
같은 수준의 군대라도 마력영웅이 조금 더 불리하다. 
Total_Army_Power = floor (Hero_Power * Army_Power); 

Army_Power는 아래 링크에서 Fight Value와 유닛의 숫자를 곱한 후 합한 값을 생각하자. 
http://heroes.thelazy.net/wiki/AI_value
점수만 보고 생각할 때, 피닉스가 주당 4기에서 2+1기로 HoTA에서 패치 되었는데, 
피닉스가 아니라 고스트드래곤에게 그런 기회가 와야한다고 생각한다. 아니면 해골변환기에서 좀비를 해골용 뼈 부속으로라도 변환이라도 좀 시켜줬으면... 


3. [k]

k = Total_Army_Power / Neutrals_Power;
 k 값은 서로의 군대의 전투능력의 비를 나타낸다.

4. [Power_Factor] (fixed)

Power_Factor = 11 if k >= 7;
Power_Factor = floor(2*(k - 1)) if 1 <=;= k < 7;
Power_Factor = -1 if 0.5 < k < 1;
Power_Factor = -2 if 0.333 < k <= 0.5; 
Power_Factor = -3 if k <= 0.333;

주의: 0.333은 333/1000을 의미하지 , 1/3을 의미하지 않는다. 
Now I am sure.(확신하단다)

 5. 동정이라고 번역되지만 동질감이 좀 더 해석이 용이 하겠다. [Sympathy]

영웅의 군대에 중립유닛과  같은 종류의 유닛이 존재하는가가 핵심이다. 0과 1사이가 굉장히 크기때문에 멍청한 컴퓨터의성을 점령한 후 주위에 남아있는 고위 유닛은 한마리라도 어디서 보충을 해서 공격하자.

Sympathy = 0 ;영웅의 군대에 중립유닛과 같은 유닛이 존재하지 않을 때.

Sympathy = 1 ;적어도 한종류의 유닛이 중립유닛과 같은 종류일 때, 같은 종류라는 것은 업그레이드, 다운그레이드 관계에 있는 유닛을 말한다. 
Sympathy = 2 ; 같은 종류인 영웅의 유닛이 다른 유닛의 비해 압도적으로 많을 때 포트리스 군대이지만 놀이 압도적으로 많다면 중립 놀군대는 좀 더 영웅의 군대에 합류하고 싶어진다.  그 압도적인을 어떻게 수적 표현으로 나타낼지는 모른다. 
if total number of creatures (or their upgrades/downgrades) of the same kind as neutrals in hero's army are strictly bigger than number of all the other beings in the army;
주의 다음은 합류계산에만 작용한다. 
  길에 있는 중립유닛들 중에 모든 정령류가 들어갈 수 있는 유닛이 있는가 보다. 합류계산에 있어서 공기의 정령을 업그레이드 해서 계산할 때는 땅, 물, 불 정령은 할 수 없다.  그리고 폭풍의 정령을 다운그레이드해서 계산할 때도, 마그마, 얼음, 에너지 정령은 그렇게 하지 못한다. 2레벨 유닛이 숫자가 가장 많으니  컨플럭스를 만들면서 페널티를 준듯하다. 


6. [카리스마 (Ch)]  

Ch = Power_Factor + Diplomacy_Level + Sympathy;


7. [공격성 (X)] (작을 수록 합류)

X = -4 (always)  완전 중립
X = 10 (always) 야만적 중립 
X in [1,7] for 친근한 중립 
X in [1,10] for 공격적 중립;
X in [4..10] for 적대적 중립;
 정수일 것으로 생각된다. 이 값은 새로운 게임을 시작할 때, 저 값 사이의 값으로 난수발생기로 정해진다. 


이제 부터 계산에 들어간다. 

8. 카리스마가 공격성보다 약하면 싸운다.  (Ch

9. 카리스마가 공격성보다 크거나 같다면 다양한 선택지가 생긴다. (Ch>=X)

  • Sympathy + Diplomacy_Level + 1 >= X 이면 중립유닛이 공짜로 합류한다. (같은 수준의 전투력인 군대가 카리스마가 있다고 가정한다. 중요한 것은 이과 정은 9번과정을 거치고 나서를 말한다. 일단 군대로 겁박하는 것이 중요함.
  • 9-1이 아닐 경우 Sympathy + 2*Diplomacy_Level + 1 >= X, 외교술 레벨에 2를 곱한 후, 돈으로 합류를 요구한다. 여기에는 이 중립유닛을 사는데 필요한 총 gold를 말한다. 자원은 요구하지 않는다. 
  • 합류를 거절 했을 때,  Ch>X일 경우는, 중립유닛을 내쫓거나, 공격할 수 있다. 
  • 합류를 거절 했을 때, Ch=X일 경우는 공격당한다. 연립해서 구할 수 있다.  외교술 없이 비슷한 수준의 군대인데, 공짜로 합류한다는 경우나, 군대가 많이 약하지만 외교술로 어거지로 돈으로 구매해서 살 수 있는 경우, 거절하면 항복하거나 죽어야 한다는 것을 명심하자.
쉬움 난이도에서는 모든 영웅은 숨겨진 외교술 기술을 가지고 있다. 기술 없을 때 1, Basic일때 2, advance 및 Expert는 3으로 여전히 최대 3이다.  쉬움 난이도가 아닐 때는, 외교술이 없는 영웅은 계산식을 볼 때, 돈으로 중립유닛을 살 수 없다. 

그외 답변에서 알 수 있는 정보들, X값인 10일 때는 절 대 합류 할 수 없다.
동질감 (2) + 2*3(외교술 전문가) +1  = 9 < 10. 퇴각은 시킬 수 있다. 

댓글