Background games redeemer ko KR - Rudokhvist/ArchiSteamFarm GitHub Wiki
๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฒ์ ๋ฑ๋ก๊ธฐ๋ ASF์ ํน๋ณํ ๋ด์ฅ๊ธฐ๋ฅ์ผ๋ก, ์ฃผ์ด์ง Steam ํค(์ ์ด๋ฆ)์ ์งํฉ์ ๋ถ๋ฌ์ค๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฑ๋กํ ์ ์๊ฒ ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ํนํ ๋ฑ๋กํ ํค๊ฐ ๋ง์์ ์ ์ฒด ํค ๋ฑ๋ก์๋ฃ ์ ์ RateLimited
์ํ ๊ฐ ๋ ๊ฒ์ด ํ์คํ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ๊ฒ์ ๋ฑ๋ก๊ธฐ๋ ํ๊ฐ์ ๋ด ๋ฒ์๋ฅผ ๊ฐ๋๋ก ๋ง๋ค์ด์ก์ผ๋ฉฐ, RedeemingPreferences
๋ฅผ ์ด์ฉํ์ง ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ํ์ํ๋ค๋ฉด redeem
๋ช
๋ น์ด ์ ํจ๊ป ํน์ ๋์ ํด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ถ๋ฌ์ค๊ธฐ๋ ํ์ผ๊ณผ IPC์ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
ASF๋ config
๋๋ ํ ๋ฆฌ์ BotName.keys
๋ผ๋ ํ์ผ์ ์ธ์ํฉ๋๋ค. ์ด๋ BotName
์ ์ฌ์ฉํ๋ ๋ด์ ์ด๋ฆ์
๋๋ค. ์ด ํ์ผ์ ๊ฒ์์ ์ด๋ฆ๊ณผ ํค๊ฐ ํญ ๋ฌธ์๋ก ์๋ก ๊ตฌ๋ถ๋๊ณ ์ค๋ฐ๊ฟ์ผ๋ก ๋๋๋ ๊ณ ์ ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ํฉ๋๋ค. ํญ์ด ์ฌ๋ฌ๊ฐ ์๋ค๋ฉด ์ฒซ๋ฒ์งธ ํญ๋ชฉ์ ๊ฒ์์ ์ด๋ฆ์ผ๋ก, ๋ง์ง๋ง ํญ๋ชฉ์ ํค๋ก ๊ฐ์ฃผ๋๋ฉฐ, ์ค๊ฐ์ ๋ชจ๋ ๊ฒ์ ๋ฌด์๋ฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
POSTAL 2 ABCDE-EFGHJ-IJKLM
Domino Craft VR 12345-67890-ZXCVB
A Week of Circus Terror POIUY-KJHGD-QWERT
Terraria ๋ฌด์๋ฉ๋๋ค ์ด๊ฒ๋๋ฌด์๋ฉ๋๋ค ZXCVB-ASDFG-QWERT
๋์ , ํค๋ง ์๋ ํ์์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ๊ฐ ํญ๋ชฉ์ ์ค๋ฐ๊ฟ์ผ๋ก ๊ตฌ๋ถ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ASF๋ ์ ํํ ์ด๋ฆ์ ์ฑ์๋ฃ๊ธฐ ์ํด ๊ฐ๋ฅํ๋ค๋ฉด Steam์ ์๋ต์ ์ฌ์ฉํฉ๋๋ค. Steam์ ๋ฑ๋ก๋๋ ํจํค์ง๋ ํ์ฑํ ๋๋ ๊ฒ์์ ๋ ผ๋ฆฌ๋ฅผ ๋ฐ๋ฅผ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ข ๋ฅ์ ํค ํ๊ทธ๋์ง ํค์ ์ด๋ฆ์ ์ง์ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋ฃ์ด์ฃผ๋ ๊ฒ์ ๋ฐ๋ผ ์ ํํ ๊ฒ์์ด๋ฆ์ ๋ณผ ์๋ ์๊ณ Humble Indie Bundle 18 ๊ฐ์ ์ง์ ๋ ํจํค์ง ์ด๋ฆ, ๋๋ Half-Life 4๊ฐ์ ์์ ํ ์๋ชป๋์๊ฑฐ๋ ์ ์ฌ์ ์ผ๋ก ์ ์์ ์ธ ์ด๋ฆ์ด ๋ํ๋ ์๋ ์์ต๋๋ค.
ABCDE-EFGHJ-IJKLM
12345-67890-ZXCVB
POIUY-KJHGD-QWERT
ZXCVB-ASDFG-QWERT
์ฌ์ฉํ๊ธฐ๋ก ํ ํ์๊ณผ ์๊ด์์ด ASF๋ ๋ด ์์์๋ ์ดํ์ ์คํ๋์ ํค
ํ์ผ์ ๋ถ๋ฌ์ฌ ๊ฒ์
๋๋ค. ํ์ผ์ ๊ตฌ๋ฌธ๋ถ์๊ณผ ์๋ชป๋ ํญ๋ชฉ์ ์๋ต์ด ๋๋๋ฉด ์ ์์ ์ผ๋ก ๊ฐ์ง๋ ๊ฒ์์ด ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๊ธฐ์ด์ ์ถ๊ฐ๋๋ฉฐ, BotName.keys
ํ์ผ์ config
๋๋ ํ ๋ฆฌ์์ ์ญ์ ๋ฉ๋๋ค.
์์์ ์ธ๊ธํ ํค ํ์ผ์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป, ASF๋ ASF-ui๋ฅผ ํฌํจํ ์ด๋ ํ IPC ๋๊ตฌ์์๋ ์คํ๊ฐ๋ฅํ GamesToRedeemInBackground
**ASF API ๋์ **์ ์ ๊ณตํฉ๋๋ค. IPC๋ฅผ ์ฌ์ฉํ๋ฉด ํญ ๋ฌธ์ ๋์ ์ฌ์ฉ์ ์ง์ ๊ตฌ๋ถ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ํ ๊ตฌ๋ฌธ๋ถ์์ ์ง์ ํ ์ ์๊ฑฐ๋, ์์ ํ ์ฌ์ฉ์ํ๋ ์์ ๋ง์ ํค ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ฑ ๋ ๊ฐ๋ ฅํฉ๋๋ค.
๊ฒ์์ ์ฑ๊ณต์ ์ผ๋ก ๋ถ๋ฌ์ค๋ฉด ๋๊ธฐ์ด์ ์ถ๊ฐ๋ฉ๋๋ค. ASF๋ ๋ด์ด Steam ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด์๊ณ ๋๊ธฐ์ด์ด ๋น์ด์์ง ์๋ ํ ๊ณ์ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋๊ธฐ์ด์ ๊ฒํ ํฉ๋๋ค. ๋ฑ๋ก์ ์๋ํ๊ณ RateLimited
๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ ํค๋ ๋๊ธฐ์ด์์ ์ญ์ ๋ฉ๋๋ค. ๊ฒฐ๊ณผ๋ config
๋๋ ํ ๋ฆฌ์ ํ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. NoDetail
, BadActivationCode
, DuplicateActivationCode
๋ฑ ํค๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐBotName.keys.used
ํ์ผ์, ๊ทธ ์ธ์ ๊ฒฝ์ฐ BotName.keys.unused
์ ์ ์ฅ๋ฉ๋๋ค. Steam ๋คํธ์ํฌ๋ ํค์ ๋ํด ์๋ฏธ์๋ ๊ฒ์์ด๋ฆ์ ํ์ ์ ๋ณด์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ASF๋ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฒ์ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ๊ฒ ํด์ ํ์ํ๊ฑฐ๋ ์ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ง์ ์ด๋ฆ์ ์ฌ์ฉํด์ ํค๋ฅผ ํ๊ทธ์ง์ ํ ์ ์์ต๋๋ค.
์ด ๊ณผ์ ์์ ๊ณ์ ์ด RateLimited
์ํ๊ฐ ๋๋ฉด ์ฟจ๋ค์ด์ด ์ฌ๋ผ์ง๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์ํด์ ๋๊ธฐ์ด์ด ์์๋ก ํ์๊ฐ๋์ ์ ์ง๋ฉ๋๋ค. ๊ทธ ํ์, ๋ฉ์ถ์๋ ๊ณณ์์ ์ ์ฒด ๋๊ธฐ์ด์ด ๋น๋๊น์ง ๊ณผ์ ์ ๊ณ์ํฉ๋๋ค.
100๊ฐ์ ํค ๋ชฉ๋ก์ด ์๋ค๊ณ ๊ฐ์ ํฉ์๋ค. ์ฒซ๋ฒ์งธ๋ก ASF config
๋๋ ํ ๋ฆฌ์ BotName.keys.new
ํ์ผ์ ์๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๋น ํ์ผ์ด์ด์ ๋ถ๋ฌ์ค๊ธฐ๋ฅผ ํ๋ฉด ์๋๋ฏ๋ก, ASF๊ฐ ํ์ผ์ด ์์ฑ๋์๋ง์ ๊ฐ์ ธ๊ฐ๋ฉด ์๋๋ค๋ ๊ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํด์ ํ์ผ์ .new
ํ์ฅ์๋ฅผ ๋ถ์์ต๋๋ค.
์ด์ ํ์ผ์ ์ด์ด์ 100๊ฐ์ ํค๋ฅผ ์ฌ๊ธฐ์ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ ํฉ๋๋ค. ํ์ํ๋ค๋ฉด ํ์๋ ์์ ํฉ๋๋ค. ์์ ์ ํ๊ณ ๋๋ฉด BotName.keys.new
ํ์ผ์ ์ ํํ๊ฒ 100์ค(ํน์ ๋ง์ง๋ง ์ค๋ฐ๊ฟ์ผ๋ก 101์ค)์ด๊ณ , ๋ชจ๋ ์ค์ ๊ฒ์์ด๋ฆ\tํค\n
์ ๊ตฌ์กฐ๋ก ๋์ด์์ ๊ฒ์
๋๋ค. ์ฌ๊ธฐ์์ \t
๋ ํญ ๋ฌธ์๋ฅผ, \n
๋ ์ค๋ฐ๊ฟ์ ์๋ฏธํฉ๋๋ค.
์ด์ ASF๊ฐ ๊ฐ์ ธ๊ฐ๋ ๋๋ค๋ ๊ฒ์ ์๋ ค์ฃผ๊ธฐ ์ํด์ BotName.keys.new
ํ์ผ์ BotName.keys
์ผ๋ก ์ด๋ฆ์ ๋ฐ๊ฟ ์ค๋น๊ฐ ๋์ต๋๋ค. ์ด๋ฆ์ ๋ฐ๊พธ๋ ์๊ฐ, ASF๋ ์ฌ์์ ์์ด ์๋์ผ๋ก ํ์ผ์ ๋ถ๋ฌ์ค๊ณ ๋ชจ๋ ๊ฒ์์ด ๊ตฌ๋ฌธ๋ถ์๋์ด ๋๊ธฐ์ด์ ์ถ๊ฐ๋๋ฉด ํ์ผ์ ์ญ์ ํฉ๋๋ค.
BotName.keys
ํ์ผ์ ์ฌ์ฉํ๋ ๋์ IPC API ๋์ ์ ์ฌ์ฉํ๊ฑฐ๋, ์ํ๋ค๋ฉด ๋ ๊ฒฝ์ฐ๋ฅผ ์กฐํฉํ ์๋ ์์ต๋๋ค.
์๊ฐ์ด ์ข ์ง๋๋ฉด BotName.keys.used
์ BotName.keys.unused
ํ์ผ์ด ์์ฑ๋ ๊ฒ์
๋๋ค. ์ด ํ์ผ๋ค์ ๋ฑ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ด๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, BotName.keys.unused
๋ฅผ BotName2.keys
ํ์ผ๋ก ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ์ฒซ๋ฒ์งธ ๋ด์ด ์ฌ์ฉํ์ง ์์ ํค๋ฅผ ๋ค๋ฅธ ๋ด์ ์ ๊ณตํ๊ฒ ๋ฉ๋๋ค. ํน์ ๋ฏธ์ฌ์ฉ ํค๋ฅผ ๋ค๋ฅธ ํ์ผ์ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ ํด์ ๋ณด๊ดํด ๋ ์๋ ์์ต๋๋ค. ํ๊ธฐ ๋๋ฆ์
๋๋ค. ASF๋ ๋๊ธฐ์ด์ ๊ณ์ ๊ฒํ ํ๋ฉฐ, ์ ํญ๋ชฉ์ด used
์ unused
ํ์ผ์ ์ถ๊ฐ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ด ํ์ผ๋ค์ ์ฌ์ฉํ๊ธฐ ์ ์ ๋๊ธฐ์ด์ ์์ ํ ๋น๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. ๋ง์ฝ ๋๊ธฐ์ด์ด ์์ ํ ๋น๊ธฐ ์ ์ ์ ํ์ผ์ ์ ๊ทผํด์ผ๋ง ํ๋ค๋ฉด, ๋จผ์ ๊ฒฐ๊ณผ๋ฌผ ํ์ผ์ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ ๋ฑ์ผ๋ก ์ด๋ํ๊ณ , ๊ทธ๋ค์์ ๊ตฌ๋ฌธ ๋ถ์ํ์ญ์์ค. ASF๋ ๋น์ ์ด ์์
์ ํ๋ ๋์์๋ ์๋ก์ด ๊ฒฐ๊ณผ๋ฅผ ํ์ผ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ํค ์ผ๋ถ์ ์์ค์ด ์๊ธธ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋น์ ์ด ํค๊ฐ 3๊ฐ ๋ค์ด์๋ ํ์ผ์ ์ฝ์ ํ ์ญ์ ํ์ต๋๋ค. ํ์ง๋ง ๊ทธ๋์ ASF๋ ๋น์ ์ด ์ญ์ ํ ํ์ผ์ 4๊ฐ์ ๋ค๋ฅธ ํค๋ฅผ ์ถ๊ฐํ์๋ค๋ ์ฌ์ค์ ๋์ณ๋ฒ๋ ธ์ต๋๋ค. ์ ํ์ผ๋ค์ ์ ๊ทผํ๊ณ ์ถ๋ค๋ฉด ํ์ผ์ ์ฝ๊ธฐ ์ ์ ASF config
๋๋ ํ ๋ฆฌ์์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ธฐ์ญ์์ค. ํน์ ์ด๋ฆ์ ๋ฐ๊ฟ๋ ๋ฉ๋๋ค.
๋๊ธฐ์ด์ ๊ฒ์์ด ์์ ๋์๋ ์์์ ์ค๋ช ํ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ๋ฉด ๊ฒ์์ ์ถ๊ฐํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ASF๋ ์ด๋ฏธ ์งํ์ค์ธ ๋๊ธฐ์ด์ ์ ์์ ์ผ๋ก ๊ฒ์์ ์ถ๊ฐํ์ฌ ์ฒ๋ฆฌํ ๊ฒ์ ๋๋ค.
๋ฐฑ๊ทธ๋ผ์ด๋ ํค ๋ฑ๋ก๊ธฐ๋ OrderedDictionary
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ฆ, ํ์ผ์ด๋ IPC API ํธ์ถ์ ๋ช
์๋ ์์๋๋ก ํค์ ์์๋ ์ ์ง๋ฉ๋๋ค. ์ด๊ฒ์, ํ ํค๋ ๋ชฉ๋ก์์ ๊ทธ๋ณด๋ค ์์ ์๋ ํค์ ์ง์ ์ข
์์ฑ์ ๊ฐ์ง๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํ์ง๋ง ๋ชฉ๋ก์ ์๋์ ์๋ ํค์๋ ํด๋นํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒ์ G
๋ฅผ ๋จผ์ ํ์ฑํ ํด์ผํ๋ DLC D
๊ฐ ์๋ค๊ณ ๊ฐ์ ํ ๋, ๊ฒ์ G
๊ฐ ํญ์ DLC D
๋ณด๋ค ์์ชฝ์ ์์ด์ผ ํ๋ค๋ ๋ป์
๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, DLC D
๊ฐ A
, B
, C
์ ์ข
์๋์ด ์๋ค๋ฉด, 3๊ฐ ๋ชจ๋๊ฐ ์์ชฝ์ ์์ด์ผ ํฉ๋๋ค.(3๊ฐ๊ฐ ์๋ก ์ข
์์ฑ์ด ์๋ค๋ฉด ์์๋ ์๊ด์์)
์ ๋ด์ฉ์ ๋ฐ๋ฅด์ง ์๋๋ค๋ฉด ์ ์ฒด ๋๊ธฐ์ด์ ๊ฒํ ํ ๋ค์๋ ํ์ฑํ๊ฐ ๊ฐ๋ฅํจ์๋ ๋ถ๊ตฌํ๊ณ DLC๊ฐ DoesNotOwnRequiredApp
์ํ๊ฐ ๋์ด ํ์ฑํ๋์ง ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํฉ๋๋ค. ์ด๋ฐ ์ํฉ์ ํผํ๊ณ ์ถ๋ค๋ฉด DLC๋ ํญ์ ๊ธฐ๋ณธ๊ฒ์์ ๋ค์ ์๋๋ก ํ์ฌ์ผ ํฉ๋๋ค.