XP 스크립트

#==============================================================================
# ■ Core
#------------------------------------------------------------------------------
#  Core : 모듈 관리 클래스입니다.
#==============================================================================

class Core
  def initialize
    @Module = {}
    @Module['Core'] = self
    @temp_pdata = ""
    @pdata = Array.new
    self.executeQuery('Core:gameseting',nil)
    self.executeQuery('TCPSocket:new',{'host'=>@host, 'port'=>@port})
  end
  
  def gameseting(obj)
    ########################################################################
    @host = "127.0.0.1"
    @port = 1005
    @ver = "1.0.0"
    @width = 800
    @height = 600
    ########################################################################
    Graphics.frame_rate = 60
    self.executeQuery('Win32API:SetWindowPos',{'width'=>@width, 'height'=>@height})
  end
  
  def update
    if self.executeQuery('TCPSocket:ready?',nil)
      temp, plen = self.executeQuery('TCPSocket:recv',{'len'=>0xfff, 'flags'=>0})
      @temp_pdata = @temp_pdata + temp[0...plen]
      while 1
        if @temp_pdata.size > 0 and @temp_pdata[0] < @temp_pdata.size
          plen = ""
          for i in 0...@temp_pdata[0].to_i
            if @temp_pdata[i+1]==0
              plen = plen + "00"
            else
              plen = plen + @temp_pdata[i+1].to_s
            end
          end
          plen = plen.to_i
          temp = @temp_pdata.size + 1
          temp2 = @temp_pdata[0] + 1 + plen
          if (plen+@temp_pdata[0].to_i+1) <= temp2
            @pdata.push(@temp_pdata[0...temp2])
            if temp >= (temp2+1)
              @temp_pdata = @temp_pdata[temp2...temp]
            else
              break
            end
          end
        else
          break
        end
      end
    end
    for data in @pdata
      ########################전체 길이 제거#############################
      d, temp = readdata(data)
      query, d = readdata(d)
      objnum = ""
      for i in 0...d[0].to_i
        if d[i+1]==0 then
          objnum = objnum + "00"
        else
          objnum = objnum + d[i+1].to_s
        end
      end
      i = i + 2
      d = d[i...d.size]
      objnum = objnum.to_i
      obj = {}
      for i in 0...objnum
        name_type = d[0]
        d = d[1...d.size]
        name, d = readdata(d)
        
        value_type = d[0]
        d = d[1...d.size]
        value, d = readdata(d)
        if name_type == 2
          name = name.to_i
        end
        if value_type == 2
          value = value.to_i
        end
        obj[name] = value
      end
      ###################################################################
      @pdata.delete(data)
      self.executeQuery(query,obj)
    end
    @Module.each {|mod| 
      if mod[1] != self
          mod[1].update
      end
      }
  end

  def readdata(data)
      plen = ""
      for i in 0...data[0].to_i
        if data[i+1]==0
          plen = plen + "00"
        else
          plen = plen + data[i+1].to_s
        end
      end
      i = i + 2
      plen = plen.to_i
      pdata = data[i...(plen+2)]
      return pdata, data[(plen+2)...data.size]
  end

  def executeQuery(query, obj)
    querydata = query.split(":")
    if querydata[1] == "new"
      return eval(sprintf("@Module['%s'] = %s.new(obj)",querydata[0],querydata[0]))
    else
      if @Module[querydata[0]]
        return eval(sprintf("@Module['%s'].%s(obj)",querydata[0],querydata[1]))
      else
        return eval(sprintf("%s.%s(obj)",querydata[0],querydata[1]))
      end
    end
  end
  
  def SendQuery(query, obj)
    data = ""
    temp = nil
    temp2 = nil
  
    qdata = senddata(query)
    temp = obj.size

    objdata = lendata(temp)
  
    for d in obj do
      objdata = objdata + objtype(d[0]).to_i.chr
      objdata = objdata + senddata(d[0].to_s)
      objdata = objdata + objtype(d[1]).to_i.chr
      objdata = objdata + senddata(d[1].to_s)
    end
  
    data = qdata + objdata
    data = lendata(data.size) + data
    @Module['TCPSocket'].send(data)
  end
  
  def senddata(data)
    r = lendata(data.size)
    r = r + data
    return r
  end
  
  def objtype(objdata)
    data = objdata.class
    r = 0
    if data == "String"
      r = 1
    elsif data == "Fixnum" or data == "Bignum" or data == "Float"
      r = 2
    end
    return r
  end
  
  def lendata(strlen)
    data = ""
    temp = nil
    temp2 = nil
    temp = strlen.to_s.size
    temp2 = (temp/2.0+0.5).to_i#math.floor
    data = temp2.to_i.chr
    for i in 1...(temp2+1) do
      data = data + strlen.to_s[((i-1)*2)...((i-1)*2+2)].to_i.chr
    end
    return data
  end
end


구경이나 하세요.
RKC에서 Rollellcoda이라는 분이 내가 백호이면 올려보라고 하길래 올려봄.
퍼가면 나쁜사람이에여~!
TAG •

Who's 백호

?

이상혁입니다.

http://elab.kr

Comment '8'

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 스크립트 자료 게시물 작성시 주의사항 습작 2012.12.24 6203
241 전투 Mr. Mo's ABS Ultimate by DerVVulfman Alkaid 2011.09.05 1438
240 전투 Mr. Mo's ABS Ultimate 1.9 by DerVVulfman 2 Alkaid 2011.12.01 1900
239 전투 Mr. Mo's ABS Ultimate 1.2 by DerVVulfman Alkaid 2011.11.13 1640
238 전투 Mr. Mo's ABS 5.5 13 Alkaid 2010.09.10 3459
237 전투 Mr Mo DVV Addon #20~#21 Alkaid 2011.09.05 1432
236 전투 Mr Mo DVV Addon #18~#19 Alkaid 2011.07.13 1266
235 전투 Mr Mo DVV Addon #14~#17 3 Alkaid 2011.05.23 1285
234 이동 및 탈것 Mouse_move 호환버전 1 file 백호 2009.02.21 1059
233 이동 및 탈것 Mouse_move 호환 100%강화버전 4 file 백호 2009.02.21 1513
232 이동 및 탈것 Mouse_move file 백호 2009.02.21 923
231 키입력 Mouse Input Module v5 by Near Fantastica (SDK호환) 2 백호 2009.02.22 962
230 기타 Monster Arena by trickster file 백호 2009.02.22 812
229 HUD MOG_C_HUD. 6 file Bera 2010.09.11 2333
228 HUD MOG_Active_Hud 3 file Bera 2010.09.11 2468
227 아이템 mog-아이템창업그레이드? ps인간 2009.01.23 2555
226 기타 mog-스테이터스 업그레이드? ps인간 2009.01.23 1904
225 메뉴 Mog-메뉴업그레이드? ps인간 2009.01.23 2948
224 상점 Mog- 상점업그레이드 ps인간 2009.01.23 2684
223 메뉴 MOG - Scroll Bar for XP file 습작 2014.07.06 1539
222 맵/타일 Mode07 0.5 by mewsterus 3 백호 2009.02.22 1156
Board Pagination Prev 1 ... 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 ... 52 Next
/ 52