Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 16.52 KB | None | 0 0
  1. from eudtrg import *
  2.  
  3. BOARD_WIDTH = 240
  4. BOARD_HEIGHT = 240
  5. TABLE_LENGTH = (BOARD_WIDTH // 2) * 2 * BOARD_HEIGHT
  6.  
  7. class KeyState:
  8.     _base_address = 0x596A18
  9.     _KEY_DOWN = 1
  10.     _KEY_UP = 0
  11.     def __init__(self, *keys):
  12.         '''
  13.        usage
  14.            ks = KeyState( 'I', "J", "k", 'l', '3' )
  15.            ks = KeyState( 'A', 0x1B, 0x15 ) # 0x1B : VK_ESCAPE. 0x15 : VK_HANGUEL
  16.        '''
  17.         keys = list(keys)
  18.         # convert to VK-Codes
  19.         for i, key in enumerate(keys):
  20.             if isinstance(key, str):
  21.                 key = key.upper()
  22.                 assert len(key) == 1 and ord('0') <= ord(key) <= ord('Z'), "__init__ error. read usage"
  23.                 keys[i] = ord(key)
  24.  
  25.         self.dictionary = dict()
  26.  
  27.         # check for existence from 1 ( VK_LBUTTON ) to 0xFE ( VK_OEM_CLEAR )
  28.         for i in range(1, 0x100):
  29.             if i in keys:
  30.                 #self.dictionary[i] = ( prevValue, currValue )
  31.                 self.dictionary[i] = ( EUDLightVariable(), EUDCreateVariables(1) )
  32.  
  33.  
  34.     def newlyKeyDown(self, key):
  35.         if isinstance(key, str):
  36.             key = ord(key.upper())
  37.         assert key in self.dictionary, "key %s not found" % key
  38.         return  [ self.dictionary[key][0].Exactly( KeyState._KEY_UP ),
  39.                   self.dictionary[key][1].Exactly( KeyState._KEY_DOWN )  ]
  40.  
  41.     def newlyKeyUp(self, key):
  42.         if isinstance(key, str):
  43.             key = ord(key.upper())
  44.         assert key in self.dictionary, "key %s not found" % key
  45.         return  [ self.dictionary[key][0].Exactly( KeyState._KEY_DOWN ),
  46.                   self.dictionary[key][1].Exactly( KeyState._KEY_UP )    ]
  47.  
  48.     def currentlyKeyDown(self, key):
  49.         if isinstance(key, str):
  50.             key = ord(key.upper())
  51.         assert key in self.dictionary, "key %s not found" % key
  52.         return  self.dictionary[key][1].Exactly( KeyState._KEY_DOWN )
  53.  
  54.     def currentlyKeyUp(self, key):
  55.         if isinstance(key, str):
  56.             key = ord(key.upper())
  57.         assert key in self.dictionary, "key %s not found" % key
  58.         return  self.dictionary[key][1].Exactly( KeyState._KEY_UP )
  59.  
  60.     def update(self):
  61.         # update previous values
  62.         for key in self.dictionary:
  63.             Trigger(
  64.                 conditions = self.dictionary[key][1].Exactly( KeyState._KEY_UP ),
  65.                 actions = self.dictionary[key][0].SetNumber( KeyState._KEY_UP )
  66.             )
  67.             Trigger(
  68.                 conditions = self.dictionary[key][1].Exactly( KeyState._KEY_DOWN ),
  69.                 actions = self.dictionary[key][0].SetNumber( KeyState._KEY_DOWN )
  70.             )
  71.  
  72.         # update current values
  73.         for p in range(0, 0x100 // 4):
  74.             broken = None
  75.             for i in range(4):
  76.                 if 4*p+i in self.dictionary:
  77.                     if broken == None:
  78.                         broken = f_dwbreak(f_dwread_epd(EPD( KeyState._base_address ) + p))
  79.  
  80.                     self.dictionary[4*p+i][1] << broken[2+i]
  81.  
  82. class Tuple:
  83.     def __init__(self, *args):
  84.         self.data = args
  85.     def __lshift__(self, other):
  86.         assert len(self.data) == len(other), "assign length error"
  87.         for i, d in enumerate(self.data):
  88.             if isinstance(d, EUDVariable):
  89.                 d << other[i]
  90. def f_makeBoard():
  91.     global BOARD_WIDTH, BOARD_HEIGHT, TABLE_LENGTH
  92.     emptyLine = b'\x42\xFF' * ( BOARD_WIDTH // 2 ) # two white space
  93.     boardGrpHeader = b''.join([
  94.             b'\x00\x00',                   # offset 0 2 byte padding
  95.             b'\x01\x00',                   # 2
  96.             binio.i2b2( BOARD_WIDTH ),     # 4
  97.             binio.i2b2( BOARD_HEIGHT ),    # 6
  98.             b'\x00\x00',                   # 8 frameXOffset, frameYOffset      
  99.             binio.i2b1( BOARD_WIDTH ),     # 10
  100.             binio.i2b1( BOARD_HEIGHT ),    # 11
  101.             b'\x00\x00\x00\x00',           # 12 linetableOffset IMPORTANT : SHOULD BE MODIFIED
  102.         ])
  103.     boardGrpLineOffsets = [ BOARD_HEIGHT*2 + len(emptyLine)*i for i in range( BOARD_HEIGHT ) ]
  104.     assert boardGrpLineOffsets[-1] < 65536, "lineoffsets are short type"
  105.  
  106.     boardGrpLineOffsets = b''.join(map(binio.i2b2, boardGrpLineOffsets))
  107.     boardGrpLines = emptyLine * BOARD_HEIGHT
  108.  
  109.     boardGRP = b''.join([boardGrpHeader, boardGrpLineOffsets, boardGrpLines])
  110.  
  111.     '''important values'''
  112.     grpTableOffset = len(boardGrpHeader) + len(boardGrpLineOffsets)
  113.     print('tablelength', len(boardGrpLines))
  114.    
  115.     return boardGRP, grpTableOffset
  116.  
  117. def f_refreshScreen():
  118.     addr = 0x006CEFF8
  119.     i = EUDCreateVariables(1)
  120.     i << EPD(addr)
  121.     EUDWhileNot( i >= EPD(addr + 1200) )
  122.     f_dwwrite_epd( i, 0x01010101 )
  123.     i << i + 1
  124.     EUDEndWhile()
  125.  
  126. def f_rightClicked():
  127.     num, ret = EUDCreateVariables(2)
  128.     num << f_dwread_epd(EPD(0x6CDDC0))
  129.     ret << 0
  130.     for i in range(31, 3, -1):
  131.         Trigger(
  132.                 conditions = num.AtLeast(2**i),
  133.                 actions = num.SubtractNumber(2**i)
  134.             )
  135.     return num.AtLeast(2**3)
  136.  
  137. @EUDFunc
  138. def f_command(buf, size):
  139.     prov_maxbuffer = f_dwread_epd(EPD(0x57F0D8))
  140.     cmdqlen = f_dwread_epd(EPD(0x654AA0))
  141.     if EUDIfNot(cmdqlen + size + 1 >= prov_maxbuffer):
  142.         f_memcpy(0x654880 + cmdqlen, buf, size)
  143.         SetVariables(EPD(0x654AA0), cmdqlen + size)
  144.     EUDEndIf()
  145.  
  146. @EUDFunc
  147. def f_commandRightClick(x, y):
  148.     RightClickCommand = Db(b'...\x14XXYY\0\0\xE4\0\x00')
  149.     SetVariables(EPD(RightClickCommand + 4), x + f_mul(y, 1<<16))
  150.     f_command(RightClickCommand + 3, 10)
  151.  
  152. @EUDFunc
  153. def f_fillBoard_epd(table_epd, c):
  154.     i, content = EUDCreateVariables(2)
  155.     i << table_epd
  156.     DoActions( [table_epd.AddNumber(TABLE_LENGTH // 4)] )
  157.     content << f_mul(c, 0x01000100) + 0x420042
  158.  
  159.     start, end = NextTrigger(), Forward()
  160.     EUDJumpIf( i >= table_epd, end )
  161.     f_dwwrite_epd( i, content )
  162.     DoActions( [i.AddNumber(1)] )
  163.     EUDJump(start)
  164.    
  165.     end << NextTrigger()
  166.  
  167. @EUDFunc
  168. def ClearBoardwhile(table_epd):
  169.     i, j = EUDCreateVariables(2)
  170.     i << table_epd
  171.  
  172.     start, end = NextTrigger(), Forward()
  173.     EUDWhileNot( i >= table_epd + TABLE_LENGTH // 4 )
  174.     f_dwwrite_epd( i, 0xFF42FF42 )
  175.     i << i+1
  176.     EUDEndWhile()
  177.    
  178.     end << NextTrigger()
  179.  
  180. @EUDFunc
  181. def f_setPixel2by2(table_offset, x, y, c):
  182.     '''
  183.     fill
  184.         ( [x/2]*2, y - 1 ), ( [x/2]*2 + 1, y - 1 )
  185.         ( [x/2]*2, y     ), ( [x/2]*2 + 1, y     )
  186.     as color c (assert 0 <= c < 256 )
  187.     '''
  188.     xs, rem, c2, c4, table_epd = EUDCreateVariables(5)
  189.     pc1, pc2 = EUDCreateVariables(2) # previous color
  190.     end = Forward()
  191.     EUDJumpIf( x >= BOARD_WIDTH, end )
  192.     EUDJumpIf( y >= BOARD_HEIGHT, end )
  193.  
  194.     rem << f_div(x, 4)[1] # rem <- 0, 1, 2, 3
  195.  
  196.     table_epd << f_epd(table_offset + x + f_mul( y, BOARD_WIDTH ))
  197.  
  198.     if EUDIf( rem <= 1 ):
  199.         c << f_mul( c, 1<<8 )
  200.         j1, j1c = NextTrigger(), Forward()
  201.         pc2 << f_dwbreak(f_dwread_epd(table_epd))[5]
  202.         f_dwwrite_epd( table_epd, c + f_mul(pc2, 1<<24) + 0x420042 )
  203.         Trigger( actions = SetNextPtr(j1c, end) )
  204.         j1c << Trigger(
  205.                 conditions = y.AtLeast(1),
  206.                 actions = [
  207.                     y.SetNumber(0),
  208.                     table_epd.SubtractNumber(BOARD_WIDTH // 4),
  209.                     SetNextPtr(j1c, j1)
  210.                 ]
  211.             )
  212.     if EUDElse():
  213.         c << f_mul( c, 1<<24 )
  214.         j2, j2c = NextTrigger(), Forward()
  215.         pc1 << f_dwbreak(f_dwread_epd(table_epd))[3]
  216.         f_dwwrite_epd( table_epd, f_mul(pc1, 1<<8) + c + 0x420042 )
  217.         Trigger( actions = SetNextPtr(j2c, end) )
  218.         j2c << Trigger(
  219.                 nextptr = j2,
  220.                 conditions = y.AtLeast(1),
  221.                 actions = [
  222.                     y.SetNumber(0),
  223.                     table_epd.SubtractNumber(BOARD_WIDTH // 4),
  224.                     SetNextPtr(j2c, j2)
  225.                 ]
  226.             )
  227.     EUDEndIf()
  228.  
  229.     end << NextTrigger()
  230.  
  231. @EUDFunc
  232. def f_setPixel(table_offset, x, y, c, size):
  233.     '''
  234.     for tmp2 = y - size to y + size
  235.         for tmp1 = x - size to x + size
  236.             setpixel2by2( tmp1, tmp2 )
  237.     '''
  238.     tmp1, tmp2 = EUDCreateVariables(2)
  239.  
  240.     tmp2 << y - size
  241.     start, end = NextTrigger(), Forward()
  242.     EUDJumpIf( tmp2 >= y + size, end)
  243.    
  244.     tmp1 << x - size
  245.     innerstart, innerend = NextTrigger(), Forward()
  246.     EUDJumpIf( tmp1 >= x + size, innerend)
  247.  
  248.     f_setPixel2by2(table_offset, tmp1, tmp2, c)
  249.  
  250.     DoActions( tmp1.AddNumber(1) )
  251.     EUDJump( innerstart )
  252.     innerend << NextTrigger()
  253.  
  254.     DoActions( tmp2.AddNumber(1) )
  255.     EUDJump( start )
  256.     end << NextTrigger()
  257.  
  258. #@EUDFunc
  259. #def f_stopunit_epd(unitEPD):
  260. #    locdb = Db(bytes(16))
  261. #    unitId, playerId, curPosX, curPosY = EUDCreateVariables(4)
  262. #
  263. #    f_repmovsd(EPD(locdb), EPD(0x58DC60), 4)
  264. #    curPosXY = f_dwbreak(f_dwread_epd(unitEPD + 0x28//4))[0:2]
  265. #    curPosX << curPosXY[0]
  266. #    curPosY << curPosXY[1]
  267. #    playerId << f_dwbreak(f_dwread_epd(unitEPD + 0x4C//4))[2]
  268. #    unitId << f_dwbreak(f_dwread_epd(unitEPD + 0x64//4))[0]
  269. #    moveUni = Forward()
  270. #
  271. #    SeqCompute([
  272. #        (EPD(0x58DC60), SetTo, curPosX),
  273. #        (EPD(0x58DC64), SetTo, curPosY),
  274. #        (EPD(0x58DC68), SetTo, curPosX),
  275. #        (EPD(0x58DC6C), SetTo, curPosY),
  276. #        (EPD(moveUni + 0x10), SetTo, playerId),
  277. #        (EPD(moveUni + 0x18), SetTo, unitId),
  278. #        (EPD(moveUni + 0x18), Add, 39 << 16),
  279. #    ])
  280. #    Trigger(
  281. #        actions=[
  282. #            moveUni << MoveUnit(0, 0, 0, 1, 1), # 1 : Location 0
  283. #        ]
  284. #    )
  285. #    f_repmovsd(EPD(0x58DC60), EPD(locdb), 4)
  286.  
  287.  
  288. LoadMap( 'C:\\Program Files (x86)\\StarCraft\\maps\\MyEUDmap\\catchmindbase2mus.scx' )
  289.  
  290. ########################################
  291. #               DATA PART              #
  292. ########################################
  293. pyVar_ks = KeyState('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 0xDB, 0xDD, 0x1B) # [ ] esc
  294. pyVar_bg, pyVar_to = f_makeBoard()
  295. s_boardDb = Db(pyVar_bg) # Board Grp Db
  296. v_bgtableoff, v_bgtableepd = EUDCreateVariables(2)
  297. v_penUnitPtr = EUDCreateVariables(1)
  298. v_boardLeft, v_boardTop, v_boardRight, v_boardBottom = EUDCreateVariables(4)
  299. v_screenX, v_screenY, v_mouseX, v_mouseY = EUDCreateVariables(4)
  300.  
  301. v_commandX, v_commandY = EUDCreateVariables(2)
  302. v_curColor, v_curSize = EUDCreateVariables(2)
  303. v_localPlayer, v_musicTimer = EUDCreateVariables(2)
  304. pyVar_musicLength = 3240*2
  305.  
  306. s_start = NextTrigger()
  307. pyVar_colorList = [
  308.         ( 0x55, '\x16하양' ), # 0
  309.         ( 0x6F, '\x08빨강' ), # 1
  310.         ( 0x9C, '\x11주황' ), # 2
  311.         ( 0x3D, '\x17노랑' ), # 3
  312.         ( 0xB9, '\x1D연두' ), # 4
  313.         ( 0xB6, '\x18초록' ), # 5
  314.         ( 0x7B, '\x0E파랑' ), # 6
  315.         ( 0xA1, '\x10보라' ), # 7
  316.         ( 0x20, '\x1B상아' ), # 8
  317.         ( 0x8A, '\x05검정' ), # 9
  318.     ]
  319. ########################################
  320. #          EXECUTED ONCE PART          #
  321. ########################################
  322. pyVar_penUnitPtr = 0x59CCA8
  323. pyVar_boardImagePtr = 0x57D728
  324. v_penUnitPtr << pyVar_penUnitPtr # Barracks
  325. SeqCompute([
  326.         (EPD(s_boardDb) + 3, SetTo, s_boardDb+16), # make GRP
  327.         (EPD(pyVar_boardImagePtr + 0x2C), SetTo, s_boardDb+2), # Set First image's grp
  328.     ])
  329. v_bgtableoff << s_boardDb + pyVar_to
  330. v_bgtableepd << f_epd(v_bgtableoff)
  331.  
  332. # set default color by black
  333. v_curColor << 0
  334. v_curSize << 1
  335.  
  336.  
  337. ########################################
  338. #               LOOP PART              #
  339. ########################################
  340.  
  341. if EUDWhile(Always()):
  342.     # turbo trigger
  343.     DoActions(SetDeaths(203151, SetTo, 0, 0))
  344.     v_localPlayer << f_dwread_epd( EPD(0x512684) )
  345.     f_setcurpl( v_localPlayer )
  346.    
  347.     f_refreshScreen()
  348.  
  349.     s_gameIntro = NextTrigger()
  350.     f_fillBoard_epd(v_bgtableepd, 0)
  351.     s_gameStart, s_tmp, s_endloop = Forward(), Forward(), Forward()
  352.  
  353.     # normal trigger
  354.     Trigger(
  355.         conditions = ElapsedTime(AtLeast, 1),
  356.         actions = [
  357.             DisplayText(
  358.                 '\x13\x1E펜 소유주는 단어를 생각 후 그림을 그립니다.\n'
  359.                 '\x13\x1E펜을 쥔 상태로 마우스 오른쪽 버튼으로 드래그!\n'
  360.                 ),
  361.             PlayWAV("staredit\\wav\\myeff2.wav"),
  362.         ],
  363.         preserved = False
  364.         )
  365.     Trigger(
  366.         conditions = ElapsedTime(AtLeast, 6),
  367.         actions = [
  368.             DisplayText(
  369.                 '\x13\x0E펜을 선택한 채로 단축키를 눌러 설정 변경이 가능합니다.\n'
  370.                 '\x13\x110~9\x04: 색변경, \x11[]\x04: 펜 크기 변경, \x11ESC\x04: 다 지우기\n'
  371.                 ),
  372.             PlayWAV("staredit\\wav\\myeff2.wav"),
  373.         ],
  374.         preserved = False
  375.         )
  376.  
  377.     Trigger(
  378.         conditions = ElapsedTime(AtLeast, 11),
  379.         actions = [
  380.             DisplayText(
  381.                 '\x13\x1C누군가가 답을 맞추었다면 레이스로 답을 맞춘 플레이어의 깃발에 레이스를 보내어주세요!\n'
  382.                 '\x13\x1D펜을 양도가능합니다!\n'
  383.                 ),
  384.             PlayWAV("staredit\\wav\\myeff2.wav"),
  385.         ],
  386.         preserved = False
  387.         )
  388.     Trigger(
  389.         conditions = ElapsedTime(AtLeast, 16),
  390.         actions = [
  391.             DisplayText(
  392.                 '\x13\x04캐치마인드 \x05[Minimal]\n'
  393.                 '\x13\x152014-11-27\n'
  394.                 ),
  395.             SetNextPtr(s_gameIntro, s_gameStart),
  396.             v_musicTimer.SetNumber(pyVar_musicLength),
  397.             v_musicTimer.SubtractNumber(30),
  398.         ],
  399.         preserved = False
  400.         )
  401.     for i in range(7):
  402.         Trigger(
  403.             conditions = [ElapsedTime(AtLeast, 16), Command(i, Exactly, 1, "Flag")],
  404.             actions = [
  405.                 GiveUnits(1, "Terran Barracks", P8, "Anywhere", i),
  406.             ]
  407.         )
  408.  
  409.     s_tmp << Trigger( nextptr = s_endloop )
  410.     s_gameStart << NextTrigger()
  411.     EUDExecuteOnce()
  412.     f_fillBoard_epd( v_bgtableepd, 0xFF )
  413.     EUDEndExecuteOnce()
  414.  
  415.     # barrack!
  416.     for i in range(7):
  417.         if EUDIf( Command(i, Exactly, 1, "Flag") ):
  418.             DoActions(MoveLocation("FlagLocation", "Flag", i, "Anywhere"))
  419.             Trigger(
  420.                     conditions = Bring(Force1, AtLeast, 2, "Terran Wraith", "FlagLocation"),
  421.                     actions = GiveUnits(1, "Terran Barracks", Force1, "Anywhere", i)
  422.                 )
  423.         EUDEndIf()
  424.  
  425.     # setting image information
  426.     _tmp_broken = f_dwbreak(f_dwread_epd(EPD(pyVar_boardImagePtr + 0x1C)))
  427.     v_boardLeft << _tmp_broken[0]
  428.     v_boardRight << _tmp_broken[0]
  429.     v_boardTop << _tmp_broken[1]
  430.     v_boardBottom << _tmp_broken[1]
  431.     DoActions([
  432.             v_boardRight.AddNumber(BOARD_WIDTH),
  433.             v_boardBottom.AddNumber(BOARD_HEIGHT),
  434.         ])
  435.  
  436.  
  437.     # analyze command
  438.     Tuple(v_commandX, v_commandY) << f_dwbreak(f_dwread_epd(EPD(pyVar_penUnitPtr + 0x58)))[0:2]
  439.     if EUDIf( [ v_commandX >= v_boardLeft, v_commandY >= v_boardTop ] ):
  440.         f_setPixel( v_bgtableoff, v_commandX - v_boardLeft, v_commandY - v_boardTop, v_curColor, v_curSize )
  441.     EUDEndIf()
  442.    
  443.     for i, tup in enumerate( pyVar_colorList ):
  444.         if EUDIf( [ v_commandX == 400 + i, v_commandY == 400 ] ):
  445.             DoActions([
  446.                     DisplayText('  \x1F[SYSTEM] \x04색 선택 : %s' % tup[1]),
  447.                     PlayWAV('staredit\\wav\\myeff.wav'),
  448.                     v_curColor.SetNumber(tup[0])
  449.                 ])
  450.         EUDEndIf()
  451.     if EUDIf( [ v_commandX == 500, v_commandY == 500 ] ):
  452.         DoActions([
  453.                 DisplayText('  \x1F[SYSTEM] \x1C붓 사이즈 \x15감소'),
  454.                 PlayWAV('staredit\\wav\\myeff.wav'),
  455.             ])
  456.         v_curSize << f_div(v_curSize, 2)[0]
  457.     EUDEndIf()
  458.     if EUDIf( [ v_commandX == 600, v_commandY == 600 ] ):
  459.         DoActions([
  460.                 DisplayText('  \x1F[SYSTEM] \x1C붓 사이즈 \x1E증가'),
  461.                 PlayWAV('staredit\\wav\\myeff.wav'),
  462.                 v_curSize.AddNumber(1)
  463.             ])
  464.         v_curSize << v_curSize + f_div(v_curSize, 2)[0]
  465.         Trigger(
  466.             conditions = v_curSize >= 45, # Set MAXIMUM SIZE for Size
  467.             actions = v_curSize.SetNumber(45),
  468.             )
  469.     EUDEndIf()
  470.     if EUDIf( [ v_commandX == 700, v_commandY == 700 ] ):
  471.         DoActions([
  472.                 DisplayText('  \x1F[SYSTEM] \x0F보드 다 지우기'),
  473.                 PlayWAV('staredit\\wav\\myeff.wav'),
  474.                 f_fillBoard_epd( v_bgtableepd, 0xFF )
  475.             ])
  476.     EUDEndIf()
  477.  
  478.     '''
  479.     # f_fillBoard_epd(v_bgtableepd, 0xFF)
  480.     for ttt in range(-5, 5):
  481.         for kkk in range(-5, 5):
  482.             f_setPixel2by2( v_bgtableoff, i+ttt, j+kkk, 0x80)
  483.  
  484.     i<<i+dx
  485.     Trigger(
  486.         conditions = i.AtLeast(BOARD_WIDTH),
  487.         actions = i.SubtractNumber(BOARD_WIDTH)
  488.         )
  489.     j<<j+dy
  490.     Trigger(
  491.         conditions = j.AtLeast(BOARD_HEIGHT),
  492.         actions = j.SubtractNumber(BOARD_HEIGHT)
  493.         )
  494.     '''
  495.  
  496.  
  497.  
  498.     pyVar_ks.update()
  499.  
  500.     # give command
  501.     if EUDIf( Memory(0x6284B8, Exactly, pyVar_penUnitPtr) ):
  502.         if EUDIf( f_rightClicked() ):
  503.             v_screenX << f_dwread_epd(EPD(0x62848C))
  504.             v_screenY << f_dwread_epd(EPD(0x6284A8))
  505.             v_mouseX << f_dwread_epd(EPD(0x6CDDC4))
  506.             v_mouseY << f_dwread_epd(EPD(0x6CDDC8))
  507.             f_commandRightClick( v_screenX + v_mouseX, v_screenY + v_mouseY )
  508.         EUDEndIf()
  509.  
  510.         for i, tup in enumerate( pyVar_colorList ):
  511.             if EUDIf( pyVar_ks.newlyKeyDown(str(i))):
  512.                 f_commandRightClick( 400 + i, 400 )
  513.             EUDEndIf()
  514.         if EUDIf( pyVar_ks.newlyKeyDown( 0xDB ) ):
  515.             f_commandRightClick( 500, 500 )
  516.         EUDEndIf()
  517.         if EUDIf( pyVar_ks.newlyKeyDown( 0xDD ) ):
  518.             f_commandRightClick( 600, 600 )
  519.         EUDEndIf()
  520.         if EUDIf( pyVar_ks.newlyKeyDown( 0x1B ) ):
  521.             f_commandRightClick( 700, 700 )
  522.         EUDEndIf()
  523.     EUDEndIf()
  524.  
  525.     # finishing...
  526.     # f_stopunit_epd(EPD(pyVar_penUnitPtr))
  527.     Trigger(
  528.         actions = MoveUnit(1, "Terran Barracks", Force1, "Anywhere", "PenLocation")
  529.         )
  530.     Trigger(
  531.             conditions = v_musicTimer.Exactly( pyVar_musicLength ),
  532.             actions = [
  533.                 PlayWAV("staredit\\wav\\ThePretender.wav"),
  534.                 DisplayText("   \x1F[Music♪] \x1EFoo Fighters - The Pretender"),
  535.                 v_musicTimer.SetNumber(0)
  536.             ]
  537.         )
  538.     DoActions(v_musicTimer.AddNumber(1))
  539.  
  540.     s_endloop << NextTrigger()
  541.     EUDDoEvents()
  542. EUDEndWhile()
  543.  
  544. SaveMap( 'C:\\Program Files (x86)\\StarCraft\\maps\\MyEUDmap\\캐치마인드test.scx', s_start )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement