<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>이전 블로그2</title>
    <link>https://karseib.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 07:28:39 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>subkarsei2</managingEditor>
    <item>
      <title>예술가는 격려를 먹고 자란다</title>
      <link>https://karseib.tistory.com/68</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 850px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/22550036551AACCC10&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F22550036551AACCC10&quot; width=&quot;850&quot; height=&quot;6512&quot; filename=&quot;artist_s.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;출처:&amp;nbsp;&lt;a href=&quot;http://bbs2.ruliweb.daum.net/gaia/do/ruliweb/default/read?articleId=24931821&amp;amp;bbsId=G005&amp;amp;itemId=143&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://bbs2.ruliweb.daum.net/gaia/do/ruliweb/default/read?articleId=24931821&amp;amp;bbsId=G005&amp;amp;itemId=143&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Scrap</category>
      <category>스크랩</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/68</guid>
      <comments>https://karseib.tistory.com/68#entry68comment</comments>
      <pubDate>Tue, 31 Mar 2015 23:20:00 +0900</pubDate>
    </item>
    <item>
      <title>[개봉기] MAXTILL TRON G10 Gaming Mouse</title>
      <link>https://karseib.tistory.com/63</link>
      <description>&lt;p&gt;저는 보통 무선 마우스를 쓰고 있습니다. 선 걸림도 없고 편하게 쓸 수 있기 때문이지요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;근데 마우스에 그렇게 관심이 있는 것은 아닌지라 보통 2만원 이상인 것을 찾아 쓰는데 문제는 데스크탑에서 게임이나 리소스를 많이 먹는 작업을 하면 버버벅거리고 끊기고 해서 제대로 마우스를 사용할 수 없는 문제가 있었습니다.&amp;nbsp;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;게다가 집에 넷북도 있기에 따로 마우스도 없는 겸해서 유선 마우스를 하나 사보았습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;그 마우스의 주인공이 맥스틸의 TRON G10 게이밍 마우스입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;게임을 하는데 초점으로&amp;nbsp;두며 골라 사보았습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;어쨌든 주문하고 기다리다가 다음 날 택배가 도착하였습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2171934154D2FD2626&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2171934154D2FD2626&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_153457.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;택배 도착!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2668B04154D2FD2932&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2668B04154D2FD2932&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_153615.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;뽁뽁이로 감싸져있네요. 풀어줍니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/22073C4154D2FD2B11&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F22073C4154D2FD2B11&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_153647.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;제품 케이스 외관입니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/276A3C4154D2FD2D30&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F276A3C4154D2FD2D30&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_153852.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;제품 케이스의 뒤쪽 모습입니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/237BF44154D2FD301B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F237BF44154D2FD301B&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_153951.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;이렇게 앞에서 제품을 볼 수 있습니다. 찍찍이가 있어서 나름 놀랐습니다. 근데 알고 보니 여기로 제품을 개봉하는 곳이 아니더군요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/236BA34154D2FD332E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F236BA34154D2FD332E&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_154224.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;사실 '아래'쪽으로 열어야 하는데 제가 위쪽으로 열어버렸네요. 어쨌든 꺼내면 이렇게 드라이버와 설명서, 마우스 본체가 나옵니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/270B734154D2FD350D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F270B734154D2FD350D&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_154352.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;꺼낸 마우스 외관입니다. 마치 비누같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/277B8B3D54D2FD3822&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F277B8B3D54D2FD3822&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_154713.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;찍찍이의 기술 발전(?)을 보여준 끈입니다. 마치 겉모습은 찍찍이가 아닌 것 같은데 막상 붙이고 하면 찍찍이가 맞습니다. 선정리하기에 딱 좋습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 1000px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2612DB3D54D2FD3A0B&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2612DB3D54D2FD3A0B&quot; width=&quot;1000&quot; height=&quot;563&quot; filename=&quot;20150204_155111.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;컴퓨터에 연결한 모습입니다. 현재 초록색 빛이 나오고 있는데 위에 있는 DPI 상/하 키를 누르면 색상이 변경됩니다. LED 색상은 DPI 조정에 따라 변하는 것 같습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;몇 일 사용하고 나서 올려봅니다만, 그립감은 괜찮습니다. 디자인도 괜찮구요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;별로 사용을 안해보았기에 아직 후에 어떻게 될지는 잘 모르게지만 현재로서는 잘 사용하고 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;클릭 압력은 우선 오른쪽 클릭을 할 때 저만 그런건지, 아니면 일부러 그렇게 했는지는 모르겠지만 약간 힘을 주어야 합니다. 왼&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;쪽 클릭은 잘 눌려집니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;오른족 클릭은 잘 사용하지 않아서 뭐 문제될 것이 없을 지도 모르겠지만 좀 더 압력을 낮게하였다면 좋을 지도 모르겠네요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;DPI 지원은 기본적으로 500, 1000(기본값), 1500, 2000으로 설정되어 있습니다. 위에서 말했듯이 DPI 키를 누르시면 변경됩니다. 그리고 그에 따라서&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;LED 색상도 변경되는데 순서대로&amp;nbsp;빨강, 초록, 파랑, 분홍으로 변경됩니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;근데, DPI 와 색상은 해당 회사에서 제공해주는 드라이버 유틸리티를 통해 변경할 수 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;DPI 범위는 250 ~ 4000까지 가능하고 색상은 노랑, 하늘색, 하얀색을 추가적으로 지원합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 938px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2171804B54D3008D11&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2171804B54D3008D11&quot; width=&quot;938&quot; height=&quot;696&quot; filename=&quot;03.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;빨강색 네모 박스 안을 보시면 알겠지만, DPI 와 LED 색상을 변경하실 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;추가적으로 위의 소프트웨어에서 각 버튼별로 윈도우 키를 정하는 등의 설정이 가능하고 감도 조절 LED 라이트 설정 등도 가능합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;한 2만원 초반으로 해서 구입할 수 있는데 전체적으로는 괜찮은 것 같네요.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Talk/Opening/Review</category>
      <category>개봉기</category>
      <category>마우스</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/63</guid>
      <comments>https://karseib.tistory.com/63#entry63comment</comments>
      <pubDate>Thu, 5 Feb 2015 14:36:45 +0900</pubDate>
    </item>
    <item>
      <title>[SourceMod] SourceMod 플러그인 저작권과 관련한 사항</title>
      <link>https://karseib.tistory.com/62</link>
      <description>&lt;p&gt;기본적으로 소스모드는 GPL v2 또는 v3을 따르고 있습니다.&lt;/p&gt;&lt;p&gt;(특별한 경우도 있다고 말했기에 '또는'을 붙여서 GPL v2도 추가했습니다.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래는 소스모드 저작권 정보입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 3px double rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;SOURCEMOD LICENSE INFORMATION&lt;/p&gt;&lt;p&gt;VERSION: JUNE-13-2008&lt;/p&gt;&lt;p&gt;-----------------------------&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;SourceMod is licensed under the GNU General Public License, version 3. &amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;As a special exception, AlliedModders LLC gives you permission to link the code&lt;/p&gt;&lt;p&gt;of this program (as well as its derivative works) to &quot;Half-Life 2,&quot; the &quot;Source&amp;nbsp;&lt;/p&gt;&lt;p&gt;Engine,&quot; the &quot;SourcePawn JIT,&quot; and any Game MODs that run on software by the&amp;nbsp;&lt;/p&gt;&lt;p&gt;Valve Corporation. &amp;nbsp;You must obey the GNU General Public License in all&amp;nbsp;&lt;/p&gt;&lt;p&gt;respects for all other code used. Additionally, AlliedModders LLC grants this&amp;nbsp;&lt;/p&gt;&lt;p&gt;exception to all derivative works.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;As an additional special exception to the GNU General Public License 3.0,&amp;nbsp;&lt;/p&gt;&lt;p&gt;AlliedModders LLC permits dual-licensing of DERIVATIVE WORKS ONLY (that is,&amp;nbsp;&lt;/p&gt;&lt;p&gt;SourcePawn/SourceMod Plugins and SourceMod Extensions, or any software built&amp;nbsp;&lt;/p&gt;&lt;p&gt;from the SourceMod SDK or header files) under the GNU General Public License&amp;nbsp;&lt;/p&gt;&lt;p&gt;version 2 &quot;or any higher version.&quot; &amp;nbsp;As such, you may choose for your derivative&amp;nbsp;&lt;/p&gt;&lt;p&gt;work(s) to be compatible with the GNU General Public License version 2 as long&amp;nbsp;&lt;/p&gt;&lt;p&gt;as it is also compatible with the GNU General Public License version 3, via the&amp;nbsp;&lt;/p&gt;&lt;p&gt;&quot;or any higher version&quot; clause. &amp;nbsp;This is intended for compatibility with other&lt;/p&gt;&lt;p&gt;software.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;As a final exception to the above, any derivative works created prior to this&amp;nbsp;&lt;/p&gt;&lt;p&gt;date (July 31, 2007) may be exclusively licensed under the GNU General Public&amp;nbsp;&lt;/p&gt;&lt;p&gt;License version 2 (without an &quot;or any higher version&quot; clause) if and only if&amp;nbsp;&lt;/p&gt;&lt;p&gt;the work was already GNU General Public License 2.0 exclusive. &amp;nbsp;This clause is&amp;nbsp;&lt;/p&gt;&lt;p&gt;provided for backwards compatibility only.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A copy of the JIT License is available in JIT.txt.&lt;/p&gt;&lt;p&gt;A copy of the GNU General Public License 2.0 is available in GPLv2.txt.&lt;/p&gt;&lt;p&gt;A copy of the GNU General Public License 3.0 is available in GPLv3.txt.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;SourcePawn is Copyright (C) 2006-2008 AlliedModders LLC. &amp;nbsp;All rights reserved.&lt;/p&gt;&lt;p&gt;SourceMod is Copyright (C) 2006-2008 AlliedModders LLC. &amp;nbsp;All rights reserved.&lt;/p&gt;&lt;p&gt;Pawn and SMALL are Copyright (C) 1997-2008 ITB CompuPhase.&lt;/p&gt;&lt;p&gt;Source is Copyright (C) Valve Corporation.&lt;/p&gt;&lt;p&gt;All trademarks are property of their respective owners in the US and other&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위 사항을 한국어로 번역하면&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 3px double rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;소스모드 라이센스 정보&lt;/p&gt;&lt;p&gt;버전: 2008년 6월 13일&lt;/p&gt;&lt;p&gt;-----------------------------&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;소스모드는 GNU 일반 공중 라이센스 버전 3에 의해서 허가되고 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;단, 특별한 예외로, AlliedModders LLC는 &quot;하프라이프 2&quot;부터 &quot;SourcePawn JIT&quot;까지를&amp;nbsp;&lt;/p&gt;&lt;p&gt;취급하는 이 프로그램의 코드(2차 창작물까지)를 제공하며 또한 Valve Corporation에&amp;nbsp;&lt;/p&gt;&lt;p&gt;의해 실행되는 소프트웨어의 여러가지 게임 모드들까지도 제공합니다. 당신은 반드시&lt;/p&gt;&lt;p&gt;여기에 쓰여진&amp;nbsp;모든 코드들을&amp;nbsp;모든 존중속에서 GNU 일반 공중 라이센스에&lt;/p&gt;&lt;p&gt;따라서 행동하여야 합니다. 추가적으로, AlliedModders LLC는 이런 예외를 모든 2차&amp;nbsp;&lt;/p&gt;&lt;p&gt;창작물까지 권한을 부여합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;GNU 일반 공중 라이센스 3.0에 대한 특별한 추가적인 예외 처리로 인하여, AlliedModders&amp;nbsp;&lt;/p&gt;&lt;p&gt;LLC는 GNU 일반 공중 라이센스 버전 2(또는 그 이상의 버전)으로부터 2차 창작물의&amp;nbsp;&lt;/p&gt;&lt;p&gt;2중 라이센스만 제한합니다. (그것은 SourcePawn/SourceMod과 SourceMod&amp;nbsp;&lt;/p&gt;&lt;p&gt;Extensions 또는 SourceMod SDK 이나 헤더 파일로 만들어진 소프트웨어들을 말합니다.)&amp;nbsp;&lt;/p&gt;&lt;p&gt;따라서, 당신은 당신의 2차 창작물에 GNU 일반 공중 라이센스 버전 2나 GNU 일반 공중&amp;nbsp;&lt;/p&gt;&lt;p&gt;라이센스 버전 3과 같은 그 이상의 버전을 선택할 수 있습니다. 이것은 다른 소프트&lt;/p&gt;&lt;p&gt;웨어의 호환을 위해서 한 조치입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위에 있는 것과 더불어 마지막 예외는, 2007년 7월 31일전에 만들어진 2차 창작물에&amp;nbsp;&lt;/p&gt;&lt;p&gt;대해서는 만약 정말로 GNU 일반 공중 라이센스 버전 2.0에서 벗어나는게 있다면&amp;nbsp;&lt;/p&gt;&lt;p&gt;예외적으로 GNU 일반 공중 라이센스 버전 2로 허가됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;JIT 라이센스의 저작권은 JIT.txt에서 확인할 수 있습니다.&lt;/p&gt;&lt;p&gt;GNU 일반 공중 라이센스 2.0의 저작권은 GPLv2.txt에서 확인할 수 있습니다.&lt;/p&gt;&lt;p&gt;GNU 일반 공중 라이센스 3.0의 저작권은 GPLv3.txt에서 확인할 수 있습니다.&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;GPL(General Public License)의 v2 주된 특징을 소스모드를 중심으로 항목을 나열해보자면,&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(159, 211, 49); padding: 10px; background-color: rgb(231, 253, 181);&quot;&gt;&lt;p&gt;&lt;b&gt;1. &lt;u&gt;소프트웨어의 자유로운 사용, 복제, 배포, 수정을 허용.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;(대신, 그 조건으로 실행물을 배포하려면 실행물의 소스 코드와 함께 제공되어야 함.)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;-&amp;gt; 즉, 플러그인은 자유롭게 사용 가능하고 복제와 배포, 수정이 가능. 배포하려면 실행물의 소스 코드와 함께 제공해야함.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;※여기서 말하는 소스 코드란, 실행물에 포함된 모든 모듈들의 소스 코드와 이와 관련된 인터페이스 정의 파일 전체, 그리고 실행물의 컴파일과 설치를 제어하는데 사용된 스크립트 전부를 의미.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. 프로그램(또는 프로그램에서 파생한 모든 저작물)을 반복적으로 재배포할 경우, &lt;u&gt;수취인은 자동적으로 본 라이선스의 규정에 따른 프로그램의 복제와 수정 및 배포에 관한 권리를 최초의 양도자로부터 양도받은 것으로 간주.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;nbsp;-&amp;gt; GPL가 적용된 플러그인을 고치거나 참고하여 플러그인을 만들었다면 그것은 GPL로 공개해야함.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. 서명이나 날인을 하지 않았기 때문에 본 라이선스의 내용을 반드시 받아들여야 할 필요는 없지만, 프로그램이나 그로부터 파생된 프로그램을 수정하거나 배포할 권한은 본 라이선스에 의해서만 주어짐. 본 라이선스에 동의하지 않을 경우에는 이런 행위들이 법률적으로 금지. 따라서 &lt;u&gt;프로그램(혹은 프로그램에서 파생된 모든 저작물)을 수정하거나 배포하는 행위는 이와 관련된 본 라이선스의 내용에 동의한다는 것을 의미하며, 복제와 수정 및 배포에 관한 본 라이선스의 조건과 규정들을 모두 받아들이겠다는 의미로 간주.&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;-&amp;gt; GPL가 적용된 플러그인을 수정하거나 배포하는 행위는 GPL 라이센스의 내용에 자동적으로 동의되어짐.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그리고, SourceMod 공식 홈페이지에서 말하는 저작권에 대한 내용을 적어보자면,&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(159, 211, 49); padding: 10px; background-color: rgb(231, 253, 181);&quot;&gt;&lt;p&gt;&lt;b&gt;1. SourceMod는 &lt;u&gt;오픈 소스&lt;/u&gt;이다.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;2. SourceMod로부터 &lt;u&gt;파생된 플러그인/익스텐션들의 저작권은 GPL v3 또는 GPL v2에 따라서 적용&lt;/u&gt;된다.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;3. SourceMod로부터 &lt;u&gt;파생된 플러그인/익스텐션은 팔거나 교환해도 되지만, 반드시 GPL의 내용에 따라서 소스 코드도 공개&lt;/u&gt;해야한다.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;4. &lt;u&gt;누군가에게 플러그인이나 익스텐션을 주려면 반드시 소스 코드도 제공&lt;/u&gt;해야한다.&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이걸 다 정리해서 말하자면,&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal;&quot;&gt;&lt;li&gt;&lt;b&gt;SourceMod는 GPL v2 또는 v3의 저작권을 적용받는다. 따라서, 자유로운 사용, 복제, 배포, 수정을 적용받는다.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;SourceMod로부터 파생된 플러그인/익스텐션들은 GPL v2 또는 v3의 저작권을 적용받는다. 따라서, 자유로운 사용, 복제, 배포, 수정을 적용받는다.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;SourceMod로부터 파생된 플러그인/익스텐션들은 팔거나 교환해도 되지만, GPL에 따라서 반드시 소스코드를 공개해야 하며, 그에 따라 누군가에게 플러그인/익스텐션을 배포하려고 한다면 마찬가지로 반드시 소스코드도 제공해야 한다.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;SourceMod 또는 그것으로부터 파생된 플러그인/익스텐션들을 수정하거나 배포하는 행위는 GPL 라이센스의 내용에 자동적으로 동의되어 진다.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그렇기 때문에, 플러그인을 주고 받고 사고 팔고 해보았자 플러그인은 모두 다 GPL 라이센스에 따라갑니다.&lt;/p&gt;&lt;p&gt;(참고로, 기존 라이센스를 동의하지 않는건 법률적으로 금지가 되어있으니 알아두시길.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;참고로 자유로운 수정이 가능하기 때문에 각 플러그인에 대한 제작자의 이름이라던가 플러그인 정보를 수정하는 것도 자유로운 권리에 해당합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하지만, 이렇게 자유로운 사용이나 복제, 배포 등이 자유롭다고 심하게 마음대로 자유롭게 하면 상당히 위험해지기 때문에(진짜 위험합니다. 그리고 심각한 사태로도 번질 수 있으니 주의.) 수정하거나 배포하는 사람들은 자기 자신의 양심에 따라 정도껏 하셔야 합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;원래, 사실 &lt;b&gt;플러그인을 제작할 때는 파일에다가 저작권 명시, 보증 책임이 없다는 고지 사항, GPL에 따른다는 말이 있어야 하고, 남이 만든 플러그인을 수정하여 배포할때는 저작권 명시, 보증 책임이 없다는 고지 사항, GPL에 따른다는 말, 수정한 사실과 수정 날짜를 표시해야 한다는 &lt;u&gt;조건일 때&lt;/u&gt;에 해당&lt;/b&gt;합니다만.....&lt;/p&gt;&lt;p&gt;외국과 한국에서는 이것을 지키는 사람이 많이 없습니다.&lt;/p&gt;&lt;p&gt;그렇기 때문에 &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;플러그인 제작자가 아래에 있는 문구를 넣지 않았다면, 얼마든지 태클 걸 수 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;마찬가지로, 남이 만든 플러그인을 수정하여 배포했을 경우, 그 사람이 아래에 있는 문구와 수정 사실과 날짜를 쓰지 않았다면, 얼마든지 태클 걸 수 있습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;만약 플러그인 제작자가 어떤 누군가가 자기 자신의 코드를 수정하여 배포한 것을 보고 저작권 법대로 그것 가지고 올리지 말라고 하고 싶다면,&amp;nbsp;&lt;/p&gt;&lt;p&gt;아래의 문구가 파일에 없다면 뭐라고 해도 좋지만, 자기 자신의 플러그인 파일 속에도 이게 없으면 말할 권리는 없죠.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);&quot;&gt;&lt;p&gt;===================================================================&lt;/p&gt;&lt;p&gt;&amp;lt;프로그램의 이름과 이 프로그램의 기능에 대한 한줄 설명.&amp;gt;&lt;/p&gt;&lt;p&gt;Copyright (C) &amp;lt;년도&amp;gt; &amp;nbsp;&amp;lt;제작자&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 프로그램은 자유 소프트웨어입니다: 당신은 이것을 자유 소프트웨어 재단이&amp;nbsp;&lt;/p&gt;&lt;p&gt;발표한 GNU 일반 공중 사용허가서의 제3 버전이나 (선택에 따라) 그 이후 버전&lt;/p&gt;&lt;p&gt;의 조항 아래 재배포하거나 수정할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 프로그램은 유용하게 쓰이리라는 희망 아래 배포되지만, 특정한 목적에 대한&lt;/p&gt;&lt;p&gt;프로그램의 적합성이나 상업성 여부에 대한 보증을 포함한 어떠한 형태의 보증&lt;/p&gt;&lt;p&gt;도 하지 않습니다. 세부 사항은 GNU 일반 공중 사용허가서를 참조하십시오.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;당신은 이 프로그램과 함께 GNU 일반 공중 사용허가서를 받았을 것입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;만약 그렇지 않다면, &amp;lt; http://www.gnu.org/licenses/ &amp;gt; 를 보십시오.&lt;/p&gt;&lt;p&gt;===================================================================&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;뭐... 보통은 안써져있다고 태클걸기에는 괜히 여러가지 피곤하고 자기 자신도 짜증나기도 하고 시간도 날리고 해서 저 문구를 안올려도 크게 문제없이 플러그인 제작하고 공유하고 별 문제 없이 흘러갑니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;하지만, 만약 일종의 보험(?)으로 문제없이 하고 싶다면,&lt;/p&gt;&lt;p&gt;플러그인 제작하고 배포 시: 저 위에 있는 문구를 스크립트 상에 추가하세요. (배포 안할꺼면 추가하지 않아도 됩니다.)&lt;/p&gt;&lt;p&gt;남이 만든 플러그인 수정 시: 저 위에 있는 문구를 스크립트 상에 추가하고 수정한 사실과 수정 날짜를 추가하세요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(203, 203, 203); padding: 10px; background-color: rgb(255, 255, 255);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;참고문서&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;SourceMod License -&amp;nbsp;&lt;a href=&quot;http://www.sourcemod.net/license.php&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.sourcemod.net/license.php&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SourceMod License Information -&amp;nbsp;&lt;a href=&quot;http://svn.alliedmods.net/viewvc.cgi/trunk/public/licenses/LICENSE.txt?revision=2255&amp;amp;root=sourcemod&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://svn.alliedmods.net/viewvc.cgi/trunk/public/licenses/LICENSE.txt?revision=2255&amp;amp;root=sourcemod&lt;/a&gt;&lt;/li&gt;&lt;li&gt;GPL v2와 GPL v3의 비교 -&amp;nbsp;&lt;a href=&quot;http://musiclife.tistory.com/50&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://musiclife.tistory.com/50&lt;/a&gt;&lt;/li&gt;&lt;li&gt;GNU 일반 공중 사용 허가서 한국어 번역문 -&amp;nbsp;&lt;a href=&quot;http://korea.gnu.org/people/chsong/copyleft/gpl.ko.html&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://korea.gnu.org/people/chsong/copyleft/gpl.ko.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;GNU General Public License v2.0 -&amp;nbsp;&lt;a href=&quot;http://www.gnu.org/licenses/gpl-2.0.html&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.gnu.org/licenses/gpl-2.0.html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;GNU General Public License (GPL v2) 라이센스 정보 - &lt;a href=&quot;http://www.olis.or.kr/ossw/license/license/detail.do?lid=1004&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.olis.or.kr/ossw/license/license/detail.do?lid=1004&lt;/a&gt;&lt;/li&gt;&lt;li&gt;GNU General Public License v3.0 번역문(KLDP 위키) - &lt;a href=&quot;http://wiki.kldp.org/wiki.php/GNU/GPLV3Translation&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://wiki.kldp.org/wiki.php/GNU/GPLV3Translation&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Info/Tips/Programming</category>
      <category>SourceMod</category>
      <category>tip</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/62</guid>
      <comments>https://karseib.tistory.com/62#entry62comment</comments>
      <pubDate>Thu, 29 Jan 2015 19:50:30 +0900</pubDate>
    </item>
    <item>
      <title>[SourceMod] 삼각함수를 이용해서 기하 움직임을 표현해보자</title>
      <link>https://karseib.tistory.com/61</link>
      <description>&lt;p&gt;본 글은 2012년 중반에 어느 카페에서 제가 작성한 글을 가져온 것입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;---------------------------------------------------------&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;제목 그대로 삼각함수를 이용해서 기하의 움직임을 표현해보는 그런 글을 써보자 합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;삼각함수를 이용해서 여러 움직임을 표현하지 못하시는 분들께 좋은 글이 될 것 같습니다.&lt;/p&gt;&lt;p&gt;('삼각함수 정도는 알고 있다'는 전제 하에 글을 씁니다)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;처음 기초적인 것부터 시작해서 응용작으로 뻗어나갑니다. 참고하세요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;우선 동영상을 봅시다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/RrW9HqhpBbI&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;(하하하 고양이가 참으로 귀요미하죠? 는 기본 텍스쳐)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;1 - 좌, 우로 이동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;2 - 위, 아래로 이동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;3 - 수평 원 운동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;4 - 수직 원 운동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;5 - 수평 타원 운동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;6 - 수직 타원 운동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;7 - 꼬불꼬불 원 운동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;8 - 원환 소용돌이선&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;9 - 대각선 타원 운동&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;10 - 원 운동하며 위로 이동&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위 동영상은 '삼각함수'과 '매개변수 방정식'을 사용해서 응용한 겁니다.&lt;/p&gt;&lt;p&gt;(사실, '매개변수 방정식'은 여기서 크게 중요하지는 않습니다.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;1. '좌, 우로 이동'과 '위, 아래로 이동'에 대해서 설명할까요?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;알겠지만, 삼각함수의 사인, 코사인 기본 그래프는 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 734px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/24422E3C54CA087510&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F24422E3C54CA087510&quot; width=&quot;734&quot; height=&quot;530&quot; filename=&quot;01.PNG&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;Sin 그래프와 Cos 그래프&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그래프를 보시면 아시겠지만, y 값이 -1 부터 1 사이로 정해져있으며 x 값이 증가할 수록 계속 반복합니다.&lt;/p&gt;&lt;p&gt;거기에 당연히 그 y 값에 특정 숫자를 곱하여 숫자를 크게 할 수도 있으며, Valve 사의 하프 램버트 방식인 '* 1/2 + 1/2' 를 사용하거나 기타 여러 가지 등을 사용할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이를 이용해서 만들면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;공간 상에서는 x, y, z 좌표 축으로 나타납니다.&lt;/p&gt;&lt;p&gt;x 와 y 는 크게 차이는 없고 특히, z 좌표는 높이로 나타난다는 것을 알아두시면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다음과 같이 하시면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표;&lt;/p&gt;&lt;p&gt;z = 기존z좌표;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 하면 좌, 우로 이동되고,&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표;&lt;/p&gt;&lt;p&gt;y = 기존y좌표;&lt;/p&gt;&lt;p&gt;z = 기존z좌표 + Cosine(DegToRad(각도));&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 하면 위, 아래로 이동됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;※참고1. 여기서 반응을 크게 하시려면 삼각함수에 특정 숫자를 곱하시면 됩니다.&lt;/p&gt;&lt;p&gt;( 예: 50 * Cosine(DegTo..... )&lt;/p&gt;&lt;p&gt;※참고2. 삼각함수를 이용하실 때에는 라디안을 이용해야합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;2. 수평 원 운동과 수직 원 운동에 대해서 설명할까요?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;원의 방정식은 다음과 같습니다.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2260F83B54CA08D229&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28x%5E%7B%202%20%7D+y%5E%7B%202%20%7D%3Dr%5E%7B%202%20%7D%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;87&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;여기서 r 은 radius 로서 '반지름'을 말합니다.&lt;/p&gt;&lt;p&gt;그런데 이걸 삼각함수로써 표현하면 다음과 같은 식이 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2115803454CA094412&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28r%5E%7B%202%20%7Dsin%5E%7B%202%20%7D%5Ctheta%20+r%5E%7B%202%20%7Dcos%5E%7B%202%20%7D%5Ctheta%20%3Dr%5E%7B%202%20%7D%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;181&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이것을 식을 고치면&lt;/p&gt;&lt;p&gt;(매개변수를 t 라고 놓았을때)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/23698B4654CA099E20&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28x%3Dr%5Cast%20sin%28t%29%5C%5C%20y%3Dr%5Cast%20cos%28t%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;104&quot; height=&quot;53&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;로 잡을 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그러면 바로 응용이 가능합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + Sine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표 + Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;z = 기존z좌표;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;반경을 크게 하려면 위에 있듯이 r 값으로 조정을 해주시면 됩니다.&lt;/p&gt;&lt;p&gt;단, 똑같이 해주셔야 합니다. 나중에 말씀드리겠지만, 똑같이 하지 않게 되면 타원이 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + 50 * Sine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표 + 50 * Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;z = 기존z좌표;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;3. 타원 운동은 어떻게 될까요?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위에 있는 원의 방정식을 예를 들어볼까요?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;반지름이 1이라면&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2343254554CA09BD10&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28x%5E%7B%202%20%7D+y%5E%7B%202%20%7D%3D1%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;83&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;근데 여기서 짚고 넘어가야 할게 있는데&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2507514054CA09D411&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28ax%5E%7B%202%20%7D+by%5E%7B%202%20%7D%3D1%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;106&quot; height=&quot;27&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;여기에서 예를 들어 a 와 b 를 다르게 하면 어떻게 될까요?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;아까 위에서는 x 와 y 앞에 1로서 x² + y² = 1 를 표현하여 원의 방정식이 되었지만 만약 저 a 와 b 를 다르게 하면 어떻게 될까요?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다르게 하면 타원이 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;타원의 방정식은 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2543244454CA0A102B&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%5Cfrac%20%7B%20x%5E%7B%202%20%7D%20%7D%7B%20a%5E%7B%202%20%7D%20%7D%20+%5Cfrac%20%7B%20y%5E%7B%202%20%7D%20%7D%7B%20b%5E%7B%202%20%7D%20%7D%20%3D1%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;124&quot; height=&quot;62&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그리고 역시 이걸 삼각함수로써 이용 가능합니다.&lt;/p&gt;&lt;p&gt;이것도 역시 매개변수를 t 로 잡고 x 와 y 로서 표현합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/2204F34454CA0B6207&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28x%3Da%5Cast%20sin%28t%29%5C%5C%20y%3Db%5Cast%20cos%28t%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;107&quot; height=&quot;53&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;바로 응용해볼까요?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + A * Sine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표 + B * Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;z = 기존z좌표;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;여기서 A 와 B 를 다르게 설정하시면 타원이 만들어집니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;4. 꼬불꼬불 원 운동을 만들어볼까요?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;꼬불꼬불.....이라고 붙였습니다만, 여전히 이 단어를 쓰기엔 뭔가 부적합한 느낌이...;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;어쨌든 z 축을 이제 본격적으로 건드려봅시다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아까 처음 1번에서 기억하고 있으신지 모르겠습니다. 그걸 그대로 이용하시면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;음....사인을 이용해볼까요?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + Sine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표 + Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;z = 기존z좌표 + Sine(DegToRad(각도));&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;5. 원환 소용돌이선을 만들어볼까요?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;원환 소용돌이선의 공식은 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = (4 + Sine(20 * DegToRad(각도))) * Cosine(DegToRad(각도))&lt;/p&gt;&lt;p&gt;y = (4 + Sine(20 * DegToRad(각도))) * Sine(DegToRad(각도))&lt;/p&gt;&lt;p&gt;z = Cosine(20 * DegToRad(각도))&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;꽤나 복잡하죠?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이걸 다르게 고치면&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + (4 + Sine(20 * DegToRad(각도))) * Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표 + (4 + Sine(20 * DegToRad(각도))) * Sine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;z = 기존z좌표 + Cosine(20 * DegToRad(각도));&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;여기서 큰 원 반경을 크게 하시려면 위에 있는 4 를 좀 더 큰 숫자로 변경하시면 됩니다.&lt;/p&gt;&lt;p&gt;그리고 그 원의 원 모양으로 회전하는 반경을 크게 하시려면 다음과 같이 하시면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + (4 + 50 * Sine(20 * DegToRad(각도))) * Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표 + (4 + 50 * Sine(20 * DegToRad(각도))) * Sine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;z = 기존z좌표 + Cosine(20 * DegToRad(각도));&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;※참고1. 원환 소용돌이선은 뭔가요?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 288px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/232F774554CA0A571F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F232F774554CA0A571F&quot; width=&quot;288&quot; height=&quot;288&quot; alt=&quot;Toroidal Spiral&quot; filename=&quot;02.gif&quot; filemime=&quot;image/gif&quot;/&gt;&lt;span class=&quot;cap1&quot; style=&quot;display: block; max-width:100%; &quot;&gt;Toroidal Spiral&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;6. 대각선 타원을 만들까요?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 대각선 타원은 원의 방정식과 일반 벡터의 평면 식을 가지고 하시면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;예를 들어&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/221ECB4C54CA0C0D05&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%2825x%5E%7B%202%20%7D+25y%5E%7B%202%20%7D%3D1%5C%5C%20y+z%3D10%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;131&quot; height=&quot;55&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;의 식이 있다고 합시다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;저 두 개의 식에서 교차되는 곡선의 매개변수 방정식을 끌어냅니다.&lt;/p&gt;&lt;p&gt;(매개 변수는 t 로 잡습니다.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img class=&quot;txc-formula&quot; src=&quot;https://t1.daumcdn.net/cfile/tistory/267EAA4954CA0C2D34&quot; historydata=&quot;%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28x%3D5sin%28t%29%5C%5C%20y%3D5cos%28t%29%5C%5C%20z%3D10-5cos%28t%29%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF&quot; width=&quot;132&quot; height=&quot;81&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그러면 이렇게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;자, 이걸 바로 응용합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;x = 기존x좌표 + 5 * Sine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;y = 기존y좌표 + 5 * Cosine(DegToRad(각도));&lt;/p&gt;&lt;p&gt;z = 기존z좌표 + 10 - Cosine(DegToRad(각도);&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;자, 그러면 원을 그리며 위로 이동하게 하려면 어떻게 하면 될까요?&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;여기서부터는 알아서 생각해보세요.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;첨부파일에는 위 식을 전부 응용하여 캐릭터 자체를 가지고 움직임을 표현한 예제가 있습니다.&lt;/p&gt;&lt;p&gt;(동영상에서도 쓰인 것입니다.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 18pt;&quot;&gt;다운로드&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block;   height: auto; max-width: 100%;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/236D7A3854CA0CD814&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;movement.zip&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Info/Tips/Programming</category>
      <category>SourceMod</category>
      <category>tip</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/61</guid>
      <comments>https://karseib.tistory.com/61#entry61comment</comments>
      <pubDate>Thu, 29 Jan 2015 19:35:34 +0900</pubDate>
    </item>
    <item>
      <title>[SourceMod] 소스모드 1.7.0 부터 추가된 문법에 관해</title>
      <link>https://karseib.tistory.com/57</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none;&quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display: inline-block; width: 393px;  height: auto; max-width: 100%;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2230AC3754C1DD721F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2230AC3754C1DD721F&quot; width=&quot;393&quot; height=&quot;60&quot; filename=&quot;sourcemod-site-bounded.png&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 제가 쓰고 있는 시점으로는 1.6.3 버전이 stable 버전으로 나와있습니다만, 개발버전으로는 1.7.0으로 나와있는데 1.7.0 버전부터 새로운 문법을 사용할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 새로운 문법은 Transitional API 라고 Pawn 언어를 좀 더 현대적이면서도 개발자들에게 객체지향 방식으로 호환성을 유지한채 기존&amp;nbsp;API들을 사용할 수 있게 해줄 수 있습니다. 따라서 이전에 작성했던 코드를 이번에 새로 생긴 문법에 맞출 필요는 없습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;현재 1.7.0 버전은 개발중이기 때문에 수정될 때마다 글에 추가하겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1.7.0 기준 API 참고 주소가 새롭게 나왔습니다. -&amp;nbsp;&lt;a href=&quot;https://sm.alliedmods.net/new-api/&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://sm.alliedmods.net/new-api/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이번에 생겨난 문법은 크게 4가지의 기능을 가지고 변경되었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;새로운 선언 방식 - 마치 Java 나 C# 비슷하게 변수를 깨끗하게 선언할 수 있습니다.&lt;/li&gt;&lt;li&gt;Methodmaps - '메소드맵'이라고 부르는데, 기존&amp;nbsp;API를 객체지향 방식으로 감싸줄 수 있습니다.&lt;/li&gt;&lt;li&gt;실제 자료형 타입 - 자료형 타입으로&amp;nbsp;'int', 'float', 'bool', 'void', 'char' 를 쓸 수 있습니다.&lt;/li&gt;&lt;li&gt;null - 기존의&amp;nbsp;INVALID_HANDLE 키워드를 이제 null 로 쓸 수 있습니다.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;선언 방식&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;기존에 선언하던 방식은 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;new Float:yeah = 3.14;&lt;/p&gt;&lt;p&gt;new chknum;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;새로운 문법으로는 다음과 같이 쓸 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;float yeah = 3.14;&lt;/p&gt;&lt;p&gt;int chknum;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래의 변경 이유는 AM 개발자가 말한 내용입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;button type=&quot;button&quot; class=&quot;btn_more&quot; id=&quot;more57_0&quot; data-id=&quot;57_0&quot;&gt;변경한 이유&lt;/button&gt;&lt;div class=&quot;moreless_content&quot; id=&quot;content57_0&quot; style=&quot;display: none;&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less57_0&quot; data-id=&quot;57_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;
  &lt;p class=&quot;txt_view&quot;&gt;&lt;p&gt;예전에 사용하던 변수에 태그를 붙이던 방식은 사실 실제 자료형 타입이 아닙니다. 예를 들면 Float:yeah 와 같은 변수는 그저 float 라고 태그된 32비트 공간들을 가리킬 뿐, 실수 자료형 변수로 보지는 않습니다. 막 태그를 변경하고 지우고 이렇게 유연하게 할 수 있는 것은 위험하고 혼동되죠. 내부적인 컴파일러 문제도 있구요. 그래서 뭐 여러 가지 개념의 자료형 타입을 만드는 것도 그렇고, 태그를 붙이고 하는 문법은 좀 이상하고 해서 일반적인 문법 선언방식을 통해 기존 태그 시스템을 폐기하게 되었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;왜 이런 얘기를 하는지에 대해서는 아래와 같은 이상한 점 때문에 그렇습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(254, 137, 67); padding: 10px; background-color: rgb(254, 222, 199);&quot;&gt;&lt;p&gt;native float[3] GetBlah();&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;
&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less57_0&quot; data-id=&quot;57_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;배열&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;배열의 경우는 하나의 방법이 추가되어 두 가지의 방법을 쓸 수 있습니다.&lt;/p&gt;&lt;ul style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;크기가 명확한&amp;nbsp;고정 크기&amp;nbsp;배열(fixed-length)&lt;/li&gt;&lt;li&gt;크기가 모호한&amp;nbsp;동적 크기 배열(dynamic-length)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;크기를 알 수 있는 고정 크기 배열 방법은 다음과 같이 변수 이름 뒤에 괄호를 만들어 크기를 선언하는 식입니다. 크기를 쓰지&amp;nbsp;않아도 내용 안에 명확한 내용물이 있다면&amp;nbsp;배열 크기가 고정됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;int g_iItemEnv[&lt;b&gt;200&lt;/b&gt;];&lt;/p&gt;&lt;p&gt;int g_iPlayerData[&lt;b&gt;MAXPLAYERS + 1&lt;/b&gt;] = {0, ...};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;int g_iEnvSet[] = {&lt;b&gt;ENV_NUM1, ENV_NUM2&lt;/b&gt;};&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이번에 추가된 크기를 알 수 없는 동적 크기 배열 방법은 변수 앞, 자료형 타입 뒤에 괄호를 써서 선언합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;void IamExample()&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;int&lt;b&gt;[]&lt;/b&gt; players = new int[&lt;b&gt;MaxClients&lt;/b&gt; + 1];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위의 방식을 이용하여&amp;nbsp;players 라는 배열을 선언해보았습니다. 이 경우 메모리는 저 변수를 사용하지 않을 때 자동적으로 비어집니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;동적 크기 배열과 같이 크기가 모호한 배열로 고정 크기 배열로 초기화하는 짓, 고정 크기 배열로 동적 배열로 초기화하는 짓, 동적 크기 배열에 크기를 정해놓는 짓은 잘못된 방식입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위의 방식을 다음과 같이 쓸 수도 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;void YeahFunction(int client, const &lt;b&gt;char[] data&lt;/b&gt;)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;//&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;View As&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다른 형태의 타입으로 값을 해석해야할 경우가 생겨 'view_as' 라는 새로운 연산자가 나왔습니다. 이 연산자는 실제 값이 다른 것으로 바뀌지 않으면서 다른 형태의 타입으로 바꿀 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다음과 같이 사용할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;void YeahDataLoad(int client, any data)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Handle yo = view_as&amp;lt;Handle&amp;gt;(data);&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;메소드맵(MethodMaps)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이번에 제가 정말 마음에 들었던 기능입니다. 마치 클래스 뺨치는 기능(&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;생성자, 소멸자, 게터와 세터, 상속 등)을 제공합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;메소드맵은 말그대로 메소드 만을 가지고 다루는 하나의 맵입니다. 따라서 위와 같은 뺨치는 기능을 제공하더라도 다른 언어에서 말하는 '클래스'가 아닙니다(&lt;b&gt;&lt;a href=&quot;https://forums.alliedmods.net/showpost.php?p=2176262&amp;amp;postcount=77&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://forums.alliedmods.net/showpost.php?p=2176262&amp;amp;postcount=77&lt;/a&gt;&lt;/b&gt;). 멤버변수조차 선언할 수 없으니 주의해야 합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;소스모드에 등록되어 있는 API를 가지고 설명을 해보겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;native &lt;/span&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;CloseHandle(Handle hndl&lt;/span&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;);&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위의 함수는 많이 사용하고 봐오던 그저 일반적인 API 입니다. 이것을 다른 코드와 같이&amp;nbsp;이용해서 뭔가 하나의 작업을 만들어보겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;Handle hTempArr = CreateArray(8);&lt;/p&gt;&lt;p&gt;PushArrayCell(hTempArr, 123);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;CloseHandle(hTempArr);&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;일단 코드 자체는 쓸모없는 작업입니다만.. 예시를 위해서 작성해보았습니다.&lt;/p&gt;&lt;p&gt;이걸 메소드맵을 이용해서 코드를 변경해보겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;우선 맨 위에 있는&amp;nbsp;CloseHandle을 묶어보겠습니다. 다음과 같이 깔끔하게 정리 가능합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;native CloseHandle(Handle:hndl);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;methodmap Handle&lt;br /&gt;&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;&amp;nbsp;public Close() = CloseHandle;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;소멸자를 한번 이용해보겠습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;native CloseHandle(Handle:hndl);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;methodmap &lt;b&gt;Handle&lt;/b&gt;&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Close() = CloseHandle;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;public ~Handle() = CloseHandle;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이렇게 간단하게 묶어주면서 소멸자로도 사용이 가능합니다.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;자 이제 아까전에 잠시 만들었던 작업 코드를 가지고 바꿔보겠습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;일단 ArrayList 라는 이름으로 메소드맵을 만들고 방금 위에서 만든 Handle 메소드맵을 &lt;b&gt;상속&lt;/b&gt;도 해서 아래와 같은 코드를 만들어보았습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;native CloseHandle(Handle:hndl);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;methodmap Handle&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public Close() = CloseHandle;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public ~Handle() = CloseHandle;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;methodmap ArrayList &lt;b&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&amp;lt; &lt;/span&gt;Handle&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;public native void Push(any value);&lt;/b&gt;&lt;/p&gt;&lt;p&gt;};&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;CreateArray() 함수는 ArrayList 라는 메소드맵을 이용하고 반환형으로는 Handle 형태로 반환한다고 가정합니다&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;ArrayList hTempArr = CreateArray(8);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;hTempArr.Push(123);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;htempArr.Close();&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;말했듯이 CreateArray() 함수는 ArrayList 메소드맵을 이용하고 반환형으로는 Handle 형태를 가진 객체로 반환합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 9pt; line-height: 1.5;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;그래서 'hTempArr' 라는 변수는 ArrayList 라는 메소드맵을 이용하면서 Handle 형태를 가진 객체가 됩니다.&lt;/p&gt;&lt;p&gt;그러므로 ArrayList 메소드맵 안에 있는 Push 함수를 쓸 수 있고, 상속도 하였으니 Close 함수를 쓸 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위에서 잠깐 선보였지만 생성자와 소멸자는 다음과 같이 선언하면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;methodmap yeahExample&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public yeahExample(); // 생성자&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;public ~yeahExample(); // 소멸자&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;게터와 세터는 다음과 같이 선언하면 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;methodmap playerData&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;property int GetClass&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public native get();&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public native set(int iClass);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;자기 자신을 나타낼 수도 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;methodmap playerData&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;property int&amp;nbsp;ClassSize&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public get() = GetSomeExmClassSize;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;property bool IsEmpty&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public get()&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return &lt;b&gt;this&lt;/b&gt;.ClassSize == 0;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;추가적으로 변경된 사항은 다음과 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style=&quot;list-style-type: square;&quot;&gt;&lt;li&gt;함수 타입을 강제로 하는 것은 warning 뜨게 됩니다. 예를 들면 함수에 any같은 태그를 붙여서 하는 경우(public any:abcde) 뭐 이 경우에는 int 로써 반환되는데, SourcePawn 언어를 향상시키는데 있어서 심각한 방해물로 취급하여 향후에는 오류가 뜬다고 합니다.&lt;/li&gt;&lt;li&gt;decl 키워드는 더 이상 지원하지 않습니다.&lt;/li&gt;&lt;li&gt;다중 태그 지원이 삭제되었습니다.&lt;/li&gt;&lt;li&gt;sizeof 연산자가 불명확한 배열에는 더 이상 쓰여지지 않습니다.&lt;/li&gt;&lt;li&gt;향후 지원할 예약어가 추가되었습니다:&amp;nbsp;acquire, as, builtin, catch, cast_to, double, explicit, finally, foreach, implicit, import, in, int8, int16, int32, int64, intn, let, namespace, object, package, private, protected, readonly, sealed, throw, try, typeof, uint8, uint16, uint32, uint64, uintn, union, var, variant, volatile, with&lt;/li&gt;&lt;li&gt;sizeof 연산자가 기본 파라메터 표현에 쓰여서 사용하는 것이 삭제되었습니다.&lt;/li&gt;&lt;li&gt;String[] 과 any 가 더 이상 강제적인 사항이 아니게 되었습니다.&lt;/li&gt;&lt;li&gt;int 와 void 를 태그로서 사용하는 것은 warning 이 뜨게 되었습니다.&lt;/li&gt;&lt;li&gt;enum을 사용할때 재태그(retagging)할 수 없습니다.&lt;/li&gt;&lt;li&gt;implicit-int 태그가 enum 태그로서 더 이상 사용될 수 없습니다.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;다시 말하지만, 꼭 이번에 새로 추가된 문법으로 맞출 필요없습니다. 혼용해서 써도 상관없습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Info/Tips/Programming</category>
      <category>SourceMod</category>
      <category>tip</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/57</guid>
      <comments>https://karseib.tistory.com/57#entry57comment</comments>
      <pubDate>Fri, 23 Jan 2015 14:32:58 +0900</pubDate>
    </item>
    <item>
      <title>[SourceMod] 인질, 인질구출지역, 폭파장소, 구매지점 삭제</title>
      <link>https://karseib.tistory.com/54</link>
      <description>플러그인을 만들다 보면 필요할 때가 의외로 많은 부분입니다.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;각 Entity 정보는&amp;nbsp;&lt;a href=&quot;https://developer.valvesoftware.com/wiki/Category:Counter-Strike:_Source_Entities&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;https://developer.valvesoftware.com/wiki/Category:Counter-Strike:_Source_Entities&lt;/a&gt; 에서 확인 가능합니다.&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;div&gt;public OnPluginStart()&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HookEvent(&quot;round_start&quot;, Event_OnRoundStart);&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;public Action:Event_OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;new maxent = GetMaxEntities(), String:entname[64];&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;for (new i = MaxClients; i &amp;lt; maxent; i++)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (IsValidEdict(i) &amp;amp;&amp;amp; IsValidEntity(i))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;GetEdictClassname(i, entname, sizeof(entname));&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (StrContains(entname, &quot;hostage_entity&quot;) != -1 || StrContains(entname, &quot;func_bomb_target&quot;) != -1 &amp;nbsp;|| StrContains(entname, &quot;func_buyzone&quot;) != -1 || StrContains(entname, &quot;func_hostage_rescue&quot;) != -1)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RemoveEdict(i);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return Plugin_Continue;&lt;/div&gt;&lt;div&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Info/Tips/Programming</category>
      <category>SourceMod</category>
      <category>tip</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/54</guid>
      <comments>https://karseib.tistory.com/54#entry54comment</comments>
      <pubDate>Thu, 22 Jan 2015 13:07:49 +0900</pubDate>
    </item>
    <item>
      <title>[SRCDS] Temporary Entity 속성 정보 확인 방법</title>
      <link>https://karseib.tistory.com/53</link>
      <description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;sm_dump_teprops &amp;lt;파일이름&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;서버 콘솔에 위에 있는 명령어를&amp;nbsp;치시면 목록 리스트 파일을 뽑아냅니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;뽑아내는 파일 위치는 'gameinfo.txt'가 있는 폴더 위치 안에 있습니다.&lt;/p&gt;</description>
      <category>Info/Tips/Server</category>
      <category>server</category>
      <category>srcds</category>
      <category>tip</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/53</guid>
      <comments>https://karseib.tistory.com/53#entry53comment</comments>
      <pubDate>Thu, 22 Jan 2015 12:54:49 +0900</pubDate>
    </item>
    <item>
      <title>[SourceMod] MOTD 패널을 심화적으로 다루기</title>
      <link>https://karseib.tistory.com/52</link>
      <description>&lt;p&gt;제목으로는 '심화적'이라고는 했지만 사실 별 것 아닌 내용에 해당됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;'ShowVGUIPanel' 함수를 이용해서 처리한 것이기 때문에 뭐 어찌보면 '심화적'일 수도 있겠지만 어찌됐든 해당 함수를 이용해서 MOTD 패널을 숨긴 채로도 이용할 수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;stock ShowMOTDPanelEx(client, const String:title[], const String:msg[], type=MOTDPANEL_TYPE_INDEX, bool:show=true)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; decl String:ptype[3];&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; new Handle:kv = CreateKeyValues(&quot;data&quot;);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; IntToString(type, ptype, sizeof(ptype));&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; KvSetString(kv, &quot;title&quot;, title);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; KvSetString(kv, &quot;type&quot;, ptype);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; KvSetString(kv, &quot;msg&quot;, msg);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; ShowVGUIPanel(client, &quot;info&quot;, kv, show);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; CloseHandle(kv);&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Info/Tips/Programming</category>
      <category>SourceMod</category>
      <category>tip</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/52</guid>
      <comments>https://karseib.tistory.com/52#entry52comment</comments>
      <pubDate>Thu, 22 Jan 2015 12:52:21 +0900</pubDate>
    </item>
    <item>
      <title>[SourceMod] TextMsg 이벤트 이용하여 메세지 삭제</title>
      <link>https://karseib.tistory.com/51</link>
      <description>&lt;p&gt;TextMsg 를 통해서 이벤트를 훅을 걸 수 있습니다.&lt;/p&gt;&lt;p&gt;서버 파일 안 resources 폴더 안에 있는 '게임이름_english.txt'를 통해서 알아볼 수 있습니다.&lt;/p&gt;&lt;p&gt;(※사실, 저 폴더 안에 있는 파일을 가지고 내용을 변경할 수도 있습니다. 그리고 메세지 코드도 확인할 수 있구요.)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;아래 목록은 '카운터 스트라이크: 소스'를 기준으로한&amp;nbsp;TextMsg 목록입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;button type=&quot;button&quot; class=&quot;btn_more&quot; id=&quot;more51_0&quot; data-id=&quot;51_0&quot;&gt;TextMsg 목록&lt;/button&gt;&lt;div class=&quot;moreless_content&quot; id=&quot;content51_0&quot; style=&quot;display: none;&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less51_0&quot; data-id=&quot;51_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;
  &lt;p class=&quot;txt_view&quot;&gt;&lt;p&gt;#C4_Arming_Cancelled&lt;/p&gt;&lt;p&gt;#Bomb_Planted &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;TERRORIST&amp;gt;&quot; triggered &quot;Planted_The_Bomb&quot;&lt;/p&gt;&lt;p&gt;#C4_Plant_Must_Be_On_Ground&lt;/p&gt;&lt;p&gt;#C4_Plant_At_Bomb_Spot&lt;/p&gt;&lt;p&gt;#Switch_To_FullAuto&lt;/p&gt;&lt;p&gt;#Switch_To_BurstFire&lt;/p&gt;&lt;p&gt;#Fire_in_the_hole &amp;nbsp; &amp;nbsp;%!MRAD_FIREINHOLE&lt;/p&gt;&lt;p&gt;#Switch_To_SemiAuto&lt;/p&gt;&lt;p&gt;#CZero_LearningMap&lt;/p&gt;&lt;p&gt;#CZero_AnalyzingHidingSpots&lt;/p&gt;&lt;p&gt;#CZero_AnalyzingApproachPoints&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;CT&amp;gt;&quot; triggered &quot;Rescued_A_Hostage&quot;&lt;/p&gt;&lt;p&gt;#Hint_careful_around_hostages&lt;/p&gt;&lt;p&gt;#Injured_Hostage&lt;/p&gt;&lt;p&gt;#Hint_removed_for_next_hostage_killed&lt;/p&gt;&lt;p&gt;#Hint_lost_money&lt;/p&gt;&lt;p&gt;#Killed_Hostage &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; triggered &quot;Killed_A_Hostage&quot;&lt;/p&gt;&lt;p&gt;#Only_CT_Can_Move_Hostages &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;CT&amp;gt;&quot; triggered &quot;Touched_A_Hostage&quot;&lt;/p&gt;&lt;p&gt;#Game_disconnected&lt;/p&gt;&lt;p&gt;#Game_kicked&lt;/p&gt;&lt;p&gt;#Game_connected &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; %s &quot;%s&quot;%s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_AllSpec &amp;nbsp; &amp;nbsp;*SPEC* %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_AllDead &amp;nbsp; &amp;nbsp;*DEAD* %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_All &amp;nbsp; &amp;nbsp;%s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_Spec &amp;nbsp; &amp;nbsp;(Spectator) %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_T_Dead &amp;nbsp; &amp;nbsp;*DEAD*(Terrorist) %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_T &amp;nbsp; &amp;nbsp; (Terrorist) %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_T_Loc &amp;nbsp; &amp;nbsp;(Terrorist) %s @ %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_CT_Dead &amp;nbsp; &amp;nbsp;*DEAD*(Counter-Terrorist) %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_CT &amp;nbsp; &amp;nbsp;(Counter-Terrorist) %s : %s&lt;/p&gt;&lt;p&gt;#Cstrike_Chat_CT_Loc &amp;nbsp; &amp;nbsp;(Counter-Terrorist) %s @ %s : %s&lt;/p&gt;&lt;p&gt;#Cannot_Buy_This&lt;/p&gt;&lt;p&gt;#Cstrike_Already_Own_Weapon&lt;/p&gt;&lt;p&gt;#Not_Enough_Money&lt;/p&gt;&lt;p&gt;#Hint_use_nightvision&lt;/p&gt;&lt;p&gt;#Already_Have_One&lt;/p&gt;&lt;p&gt;#Cannot_Carry_Anymore&lt;/p&gt;&lt;p&gt;#Already_Have_Kevlar_Bought_Helmet&lt;/p&gt;&lt;p&gt;#Already_Have_Kevlar_Helmet&lt;/p&gt;&lt;p&gt;#Already_Have_Helmet_Bought_Kevlar&lt;/p&gt;&lt;p&gt;#Already_Have_Kevlar&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; joined team &quot;SPECTATOR&quot;&lt;/p&gt;&lt;p&gt;#Cannot_Be_Spectator&lt;/p&gt;&lt;p&gt;#Game_join_ct &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; joined team &quot;%s&quot;&lt;/p&gt;&lt;p&gt;#Game_join_terrorist &amp;nbsp; &amp;nbsp;&quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; joined team &quot;%s&quot;&lt;/p&gt;&lt;p&gt;#Terrorist_Select&lt;/p&gt;&lt;p&gt;#CT_Select&lt;/p&gt;&lt;p&gt;#Only_1_Team_Change&lt;/p&gt;&lt;p&gt;#Humans_Join_Team_T&lt;/p&gt;&lt;p&gt;#Humans_Join_Team_CT&lt;/p&gt;&lt;p&gt;#Too_Many_CTs&lt;/p&gt;&lt;p&gt;#Too_Many_Terrorists&lt;/p&gt;&lt;p&gt;#All_Teams_Full&lt;/p&gt;&lt;p&gt;#CTs_Full&lt;/p&gt;&lt;p&gt;#Terrorists_Full&lt;/p&gt;&lt;p&gt;#Cannot_Switch_From_VIP&lt;/p&gt;&lt;p&gt;#Taking_fire &amp;nbsp; &amp;nbsp; %!MRAD_HITASSIST&lt;/p&gt;&lt;p&gt;#Follow_me &amp;nbsp; &amp;nbsp; %!MRAD_FOLLOWME&lt;/p&gt;&lt;p&gt;#Regroup_team &amp;nbsp; &amp;nbsp; %!MRAD_REGROUP&lt;/p&gt;&lt;p&gt;#Hold_this_position &amp;nbsp; &amp;nbsp;%!MRAD_POSITION&lt;/p&gt;&lt;p&gt;#You_take_the_point &amp;nbsp; &amp;nbsp;%!MRAD_TAKEPOINT&lt;/p&gt;&lt;p&gt;#Cover_me &amp;nbsp; &amp;nbsp; %!MRAD_COVERME&lt;/p&gt;&lt;p&gt;#Report_in_team &amp;nbsp; &amp;nbsp; %!MRAD_REPORTIN&lt;/p&gt;&lt;p&gt;#Storm_the_front &amp;nbsp; &amp;nbsp;%!MRAD_STORMFRONT&lt;/p&gt;&lt;p&gt;#Get_in_position_and_wait &amp;nbsp; %!MRAD_GETINPOS&lt;/p&gt;&lt;p&gt;#Stick_together_team &amp;nbsp; &amp;nbsp;%!MRAD_STICKTOG&lt;/p&gt;&lt;p&gt;#Team_fall_back &amp;nbsp; &amp;nbsp; %!MRAD_FALLBACK&lt;/p&gt;&lt;p&gt;#Go_go_go &amp;nbsp; &amp;nbsp; %!MRAD_GO&lt;/p&gt;&lt;p&gt;#Enemy_down &amp;nbsp; &amp;nbsp; %!MRAD_ENEMYDOWN&lt;/p&gt;&lt;p&gt;#Negative &amp;nbsp; &amp;nbsp; %!MRAD_NEGATIVE&lt;/p&gt;&lt;p&gt;#Get_out_of_there &amp;nbsp; &amp;nbsp;%!MRAD_BLOW&lt;/p&gt;&lt;p&gt;#Reporting_in &amp;nbsp; &amp;nbsp; %!MRAD_REPRTINGIN&lt;/p&gt;&lt;p&gt;#In_position &amp;nbsp; &amp;nbsp; %!MRAD_INPOS&lt;/p&gt;&lt;p&gt;#Sector_clear &amp;nbsp; &amp;nbsp; %!MRAD_CLEAR&lt;/p&gt;&lt;p&gt;#Need_backup &amp;nbsp; &amp;nbsp; %!MRAD_BACKUP&lt;/p&gt;&lt;p&gt;#Enemy_spotted &amp;nbsp; &amp;nbsp; %!MRAD_ENEMYSPOT&lt;/p&gt;&lt;p&gt;#Roger_that &amp;nbsp; &amp;nbsp; %!MRAD_ROGER&lt;/p&gt;&lt;p&gt;#Affirmative &amp;nbsp; &amp;nbsp; %!MRAD_AFFIRM&lt;/p&gt;&lt;p&gt;#Alias_Not_Avail&lt;/p&gt;&lt;p&gt;#TactShield_Desc&lt;/p&gt;&lt;p&gt;#Bomb_Defusal_Kit&lt;/p&gt;&lt;p&gt;#Game_unknown_command&lt;/p&gt;&lt;p&gt;#Buy&lt;/p&gt;&lt;p&gt;#RadioC&lt;/p&gt;&lt;p&gt;#RadioB&lt;/p&gt;&lt;p&gt;#RadioA&lt;/p&gt;&lt;p&gt;#Command_Not_Available&lt;/p&gt;&lt;p&gt;#Accept_Radio&lt;/p&gt;&lt;p&gt;#Ignore_Radio&lt;/p&gt;&lt;p&gt;#Accept_All_Messages&lt;/p&gt;&lt;p&gt;#Ignore_Broadcast_Team_Messages&lt;/p&gt;&lt;p&gt;#Ignore_Broadcast_Messages&lt;/p&gt;&lt;p&gt;#IG_Team_Select_Spect&lt;/p&gt;&lt;p&gt;#IG_VIP_Team_Select_Spect&lt;/p&gt;&lt;p&gt;#IG_VIP_Team_Select&lt;/p&gt;&lt;p&gt;#T_BuyItem&lt;/p&gt;&lt;p&gt;#CT_BuyItem&lt;/p&gt;&lt;p&gt;#DT_BuyItem&lt;/p&gt;&lt;p&gt;#DCT_BuyItem&lt;/p&gt;&lt;p&gt;#BuyMachineGun&lt;/p&gt;&lt;p&gt;#AS_T_BuyMachineGun&lt;/p&gt;&lt;p&gt;#T_BuyRifle&lt;/p&gt;&lt;p&gt;#CT_BuyRifle&lt;/p&gt;&lt;p&gt;#AS_T_BuyRifle&lt;/p&gt;&lt;p&gt;#AS_CT_BuyRifle&lt;/p&gt;&lt;p&gt;#T_BuySubMachineGun&lt;/p&gt;&lt;p&gt;#CT_BuySubMachineGun&lt;/p&gt;&lt;p&gt;#AS_T_BuySubMachineGun&lt;/p&gt;&lt;p&gt;#AS_CT_BuySubMachineGun&lt;/p&gt;&lt;p&gt;#BuyShotgun&lt;/p&gt;&lt;p&gt;#AS_BuyShotgun&lt;/p&gt;&lt;p&gt;#T_BuyPistol&lt;/p&gt;&lt;p&gt;#CT_BuyPistol&lt;/p&gt;&lt;p&gt;#IG_Team_Select&lt;/p&gt;&lt;p&gt;#Team_Select&lt;/p&gt;&lt;p&gt;#Game_no_timelimit&lt;/p&gt;&lt;p&gt;#Game_timelimit&lt;/p&gt;&lt;p&gt;#Game_voted_for_map&lt;/p&gt;&lt;p&gt;#Cannot_Vote_Need_More_People&lt;/p&gt;&lt;p&gt;#Game_votemap_usage&lt;/p&gt;&lt;p&gt;#Cannot_Vote_Map&lt;/p&gt;&lt;p&gt;#Wait_3_Seconds&lt;/p&gt;&lt;p&gt;#Game_vote_cast&lt;/p&gt;&lt;p&gt;#Game_vote_not_yourself&lt;/p&gt;&lt;p&gt;#Game_vote_players_on_your_team&lt;/p&gt;&lt;p&gt;#Game_vote_player_not_found&lt;/p&gt;&lt;p&gt;#Cannot_Vote_With_Less_Than_Three&lt;/p&gt;&lt;p&gt;#Game_vote_usage&lt;/p&gt;&lt;p&gt;#Cstrike_Name_Change &amp;nbsp; &amp;nbsp;&quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; changed name to &quot;%s&quot;&lt;/p&gt;&lt;p&gt;#Name_change_at_respawn&lt;/p&gt;&lt;p&gt;#Defusing_Bomb_Without_Defuse_Kit &amp;nbsp;&quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;CT&amp;gt;&quot; triggered &quot;Begin_Bomb_Defuse_Without_Kit&quot;&lt;/p&gt;&lt;p&gt;#Defusing_Bomb_With_Defuse_Kit &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;CT&amp;gt;&quot; triggered &quot;Begin_Bomb_Defuse_With_Kit&quot;&lt;/p&gt;&lt;p&gt;#C4_Defuse_Must_Be_On_Ground&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; World triggered &quot;%s&quot; (CT &quot;%i&quot;) (T &quot;%i&quot;)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; World triggered &quot;Round_End&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Team &quot;%s&quot; triggered &quot;%s&quot; (CT &quot;%i&quot;) (T &quot;%i&quot;)&lt;/p&gt;&lt;p&gt;#Hint_you_have_the_bomb &amp;nbsp; &amp;nbsp;&quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;TERRORIST&amp;gt;&quot; triggered &quot;Spawned_With_The_Bomb&quot;&lt;/p&gt;&lt;p&gt;#All_Hostages_Rescued&lt;/p&gt;&lt;p&gt;#Round_Draw&lt;/p&gt;&lt;p&gt;#Terrorists_Win&lt;/p&gt;&lt;p&gt;#CTs_Win&lt;/p&gt;&lt;p&gt;#Bomb_Defused &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;CT&amp;gt;&quot; triggered &quot;Defused_The_Bomb&quot;&lt;/p&gt;&lt;p&gt;#Target_Bombed&lt;/p&gt;&lt;p&gt;#Escaping_Terrorists_Neutralized&lt;/p&gt;&lt;p&gt;#CTs_PreventEscape&lt;/p&gt;&lt;p&gt;#Terrorists_Escaped&lt;/p&gt;&lt;p&gt;#VIP_Assassinated&lt;/p&gt;&lt;p&gt;#VIP_Escaped&lt;/p&gt;&lt;p&gt;#Game_Commencing &amp;nbsp; &amp;nbsp;World triggered &quot;Game_Commencing&quot;&lt;/p&gt;&lt;p&gt;#Game_scoring&lt;/p&gt;&lt;p&gt;#Auto_Team_Balance_Next_Round&lt;/p&gt;&lt;p&gt;#All_VIP_Slots_Full&lt;/p&gt;&lt;p&gt;#Game_added_position&lt;/p&gt;&lt;p&gt;#Game_in_position&lt;/p&gt;&lt;p&gt;#Game_will_restart_in_console&lt;/p&gt;&lt;p&gt;#Game_will_restart_in&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Team &quot;TERRORIST&quot; scored &quot;%i&quot; with &quot;%i&quot; players&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Team &quot;CT&quot; scored &quot;%i&quot; with &quot;%i&quot; players&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; World triggered &quot;Restart_Round_(%i_%s)&quot;&lt;/p&gt;&lt;p&gt;#VIP_Not_Escaped&lt;/p&gt;&lt;p&gt;#Terrorists_Not_Escaped&lt;/p&gt;&lt;p&gt;#Hostages_Not_Rescued&lt;/p&gt;&lt;p&gt;#Target_Saved&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; %!MRAD_VIP&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; %!MRAD_GETOUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; %!MRAD_ELIM&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; %!MRAD_MOVEOUT&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; %!MRAD_LETSGO&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; %!MRAD_LOCKNLOAD&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; World triggered &quot;Round_Start&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;&amp;gt;&quot; entered the game&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; disconnected&lt;/p&gt;&lt;p&gt;#Team_Select_Spect&lt;/p&gt;&lt;p&gt;#Hint_win_round_by_killing_enemy&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;TERRORIST&amp;gt;&quot; triggered &quot;Assassinated_The_VIP&quot;&lt;/p&gt;&lt;p&gt;#Hint_reward_for_killing_vip&lt;/p&gt;&lt;p&gt;#Hint_careful_around_teammates&lt;/p&gt;&lt;p&gt;#Banned_For_Killing_Teamates&lt;/p&gt;&lt;p&gt;#Game_teammate_kills&lt;/p&gt;&lt;p&gt;#Killed_Teammate&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; committed suicide with &quot;%s&quot; (world)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; killed &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; with &quot;%s&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; committed suicide with &quot;%s&quot;&lt;/p&gt;&lt;p&gt;#Map_Vote_Extend&lt;/p&gt;&lt;p&gt;#Votes&lt;/p&gt;&lt;p&gt;#Vote&lt;/p&gt;&lt;p&gt;#Game_required_votes&lt;/p&gt;&lt;p&gt;#Spec_Mode%i&lt;/p&gt;&lt;p&gt;#Spec_NoTarget&lt;/p&gt;&lt;p&gt;#Game_radio_location&lt;/p&gt;&lt;p&gt;#Game_radio&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; attacked &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; with &quot;%s&quot; (damage &quot;%d&quot;) (damage_armor &quot;%d&quot;) (health &quot;%d&quot;) (armor &quot;%d&quot;)&lt;/p&gt;&lt;p&gt;#Game_teammate_attack&lt;/p&gt;&lt;p&gt;#Hint_try_not_to_injure_teammates&lt;/p&gt;&lt;p&gt;#Spec_Duck&lt;/p&gt;&lt;p&gt;#Hint_cannot_play_because_tk&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;CT&amp;gt;&quot; triggered &quot;Became_VIP&quot;&lt;/p&gt;&lt;p&gt;#Hint_use_hostage_to_stop_him&lt;/p&gt;&lt;p&gt;#Hint_lead_hostage_to_rescue_point&lt;/p&gt;&lt;p&gt;#Terrorist_cant_buy&lt;/p&gt;&lt;p&gt;#CT_cant_buy&lt;/p&gt;&lt;p&gt;#VIP_cant_buy&lt;/p&gt;&lt;p&gt;#Cant_buy&lt;/p&gt;&lt;p&gt;#Hint_press_buy_to_purchase&lt;/p&gt;&lt;p&gt;#Game_idle_kick &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; triggered &quot;Game_idle_kick&quot; (auto)&lt;/p&gt;&lt;p&gt;#Hint_you_are_the_vip&lt;/p&gt;&lt;p&gt;#Hint_hostage_rescue_zone&lt;/p&gt;&lt;p&gt;#Hint_you_are_in_targetzone&lt;/p&gt;&lt;p&gt;#Hint_terrorist_escape_zone&lt;/p&gt;&lt;p&gt;#Hint_terrorist_vip_zone&lt;/p&gt;&lt;p&gt;#Hint_ct_vip_zone&lt;/p&gt;&lt;p&gt;#Hint_out_of_ammo&lt;/p&gt;&lt;p&gt;#Hint_press_use_so_hostage_will_follow&lt;/p&gt;&lt;p&gt;#Hint_prevent_hostage_rescue&lt;/p&gt;&lt;p&gt;#Hint_rescue_the_hostages&lt;/p&gt;&lt;p&gt;#Hint_spotted_a_friend&lt;/p&gt;&lt;p&gt;#Hint_spotted_an_enemy&lt;/p&gt;&lt;p&gt;#Game_bomb_drop &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;TERRORIST&amp;gt;&quot; triggered &quot;Dropped_The_Bomb&quot;&lt;/p&gt;&lt;p&gt;#Weapon_Cannot_Be_Dropped&lt;/p&gt;&lt;p&gt;#Game_join_ct_auto &amp;nbsp; &amp;nbsp;&quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; joined team &quot;%s&quot; (auto)&lt;/p&gt;&lt;p&gt;#Game_join_terrorist_auto &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;%s&amp;gt;&quot; joined team &quot;%s&quot; (auto)&lt;/p&gt;&lt;p&gt;#Terrorist_Escaped &amp;nbsp; &amp;nbsp;&quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;TERRORIST&amp;gt;&quot; triggered &quot;Terrorist_Escaped&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;CT&amp;gt;&quot; triggered &quot;Escaped_As_VIP&quot;&lt;/p&gt;&lt;p&gt;#Game_bomb_pickup &amp;nbsp; &amp;nbsp;&quot;%s&amp;lt;%i&amp;gt;&amp;lt;%s&amp;gt;&amp;lt;TERRORIST&amp;gt;&quot; triggered &quot;Got_The_Bomb&quot;&lt;/p&gt;&lt;p&gt;#Got_bomb&lt;/p&gt;&lt;p&gt;#CZero_Tutor_Turned_Off&lt;/p&gt;&lt;p&gt;#CZero_Tutor_Turned_On&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Waiting_For_Start&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Buy_Time&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Running_Away_From_Ticking_Bomb&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Looking_For_Loose_Bomb&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Guarding_Bomb&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Planting_Bomb&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Moving_To_Bomb_Site&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Escorting_Bomb_Carrier&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Attacking_Hostage_Escort&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Looking_For_Hostage_Escort&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Moving_To_Intercept_Enemy&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Guarding_Hostage&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Defusing_Bomb&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Guarding_Loose_Bomb&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Looking_For_Bomb_Carrier&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Moving_To_Bombsite&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Following_Hostage_Escort&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Escorting_Hostage&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Looking_For_Hostage&lt;/p&gt;&lt;p&gt;#Cstrike_TutorState_Undefined&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;
&lt;button type=&quot;button&quot; class=&quot;btn_less&quot; id=&quot;less51_0&quot; data-id=&quot;51_0&quot;&gt;&lt;span class=&quot;txt_fold&quot;&gt;접기&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;mp_friendlyfire 을 1로 맞추고 같은 팀원을 공격하면 채팅창에 &quot;~~~ attacked a teammate&quot; 가 뜨는데 이 메세지를 삭제해보는 코드를 작성하면 이렇게 됩니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;public OnPluginStart()&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;HookUserMessage(GetUserMessageId(&quot;TextMsg&quot;), Command_TextMsg, true);&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;public Action:Command_TextMsg(UserMsg:msg_id, Handle:bf, const players[], playersNum, bool:reliable, bool:init)&lt;/p&gt;&lt;p&gt;{&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;decl String:buffer[256];&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;buffer[0] = '\0';&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;BfReadString(bf, buffer, sizeof(buffer), false);&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (StrContains(buffer, &quot;Game_teammate_attack&quot;) != -1)&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return Plugin_Handled;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;return Plugin_Continue;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Info/Tips/Programming</category>
      <category>SourceMod</category>
      <category>tip</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/51</guid>
      <comments>https://karseib.tistory.com/51#entry51comment</comments>
      <pubDate>Thu, 22 Jan 2015 12:48:33 +0900</pubDate>
    </item>
    <item>
      <title>[SRCDS] 서버 콘솔 명령어 찾기, 플러그인 핸들 누수 확인</title>
      <link>https://karseib.tistory.com/50</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;1. 서버 콘솔 명령어 찾기&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;명령어를 알다가 갑자기 잊어먹었거나 찾아야 할 경우 다음을 이용하시면 좋습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;&lt;b&gt;find &amp;lt;이름&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;만약 find level 이라고 쳤다면&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;...&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&quot;mat_levelflush&quot; = &quot;1&quot;&lt;/p&gt;&lt;p&gt;&quot;mat_hdr_level&quot; = &quot;2&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;archive&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Set to 0 for no HDR, 1 for LDR+bloom on HDR maps, and 2 for full HDR on HDR maps.&lt;/p&gt;&lt;p&gt;&quot;changelevel&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Change server to the specified map&lt;/p&gt;&lt;p&gt;&quot;changelevel2&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Transition to the specified map in single player&lt;/p&gt;&lt;p&gt;&quot;restart&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Restart the game on the same level (add setpos to jump to current view position on restart).&lt;/p&gt;&lt;p&gt;&quot;skill&quot; = &quot;1&quot; min. 1.000000 max. 3.000000&lt;/p&gt;&lt;p&gt;&amp;nbsp;archive&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Game skill level (1-3).&lt;/p&gt;&lt;p&gt;&quot;fs_warning_level&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Set the filesystem warning level.&lt;/p&gt;&lt;p&gt;&quot;developer&quot; = &quot;0&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Set developer message level&lt;/p&gt;&lt;p&gt;&quot;mat_lightmap_pfms&quot; = &quot;0&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- Outputs .pfm files containing lightmap data for each lightmap page when a level exits.&lt;/p&gt;&lt;p&gt;&quot;mat_showmiplevels&quot; = &quot;0&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp;cheat&lt;/p&gt;&lt;p&gt;&amp;nbsp;- color-code miplevels 2: normalmaps, 1: everything else&lt;/p&gt;&lt;p&gt;&quot;mat_dxlevel&quot; = &quot;90&quot; min. 90.000000 max. 90.000000&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;뭐 이런 식으로 나올 겁니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;찾을 때 너무 많은 결과가 나올 수 있으니 주의해서 사용하셔야 합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;2. 플러그인 핸들 누수 확인&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 방법은 &amp;lt;소스모드(SourceMod)&amp;gt;를 이용하고 있을 때 사용할 수 있는 방법입니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;서버 콘솔에&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px solid rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;p&gt;&lt;b&gt;sm_dump_handles &amp;lt;파일이름&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;을 치면 'srcds.exe' 또는 'srcds_run' 가 있는 폴더 내에 위의 &amp;lt;파일이름&amp;gt;이 있는지 확인합니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그리고 파일을 확인하여 핸들 수를 확인하면서 지나치게 핸들이 많이 있는건 아닌지 등을 확인하면 되겠습니다.&lt;/p&gt;</description>
      <category>Info/Tips/Server</category>
      <category>server</category>
      <category>SourceMod</category>
      <category>srcds</category>
      <author>subkarsei2</author>
      <guid isPermaLink="true">https://karseib.tistory.com/50</guid>
      <comments>https://karseib.tistory.com/50#entry50comment</comments>
      <pubDate>Thu, 22 Jan 2015 12:10:12 +0900</pubDate>
    </item>
  </channel>
</rss>