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 6153
23 온라인 인터넷 웹 상에서의 시간을 취득하는 스크립트 1 이우 2016.05.24 872
22 온라인 온라인 스크립트 Unis Net RMXP 공식 배포! 25 file 뮤바보 2011.12.25 9398
21 온라인 온라인 스크립트입니다^^(예제파일) 7 캉쿤 2011.09.24 4390
20 온라인 온라인 스크립트 KnM 배포합니다. 43 file 뮤바보 2011.09.23 5350
19 온라인 NetPlay Evolution v3 여러분이 고대하시던 NPE v3입니다! 5 file 심영 2010.10.29 3993
18 온라인 ORPG 여러분이 원하는 온라인 스크립트 한글화해서 다시 배포! 20 file 심영 2010.10.16 5573
17 온라인 최신중의 최신 2010년 4월 작 넷플레이 3.0!!! 6 김똘식 2010.09.18 3320
16 온라인 게임화면을 전체화면으로 하기 27 file 이씨 2010.03.09 4052
» 온라인 NetRPGXP Client Core 일부분임 8 백호 2009.10.06 2883
14 온라인 광넷[ 광땡 온라인 + 넷플레이 ] 62 - 하늘 - 2009.08.02 9003
13 온라인 멀티넷플레이 99Q Beta 3 27 백호 2009.02.22 3107
12 온라인 Multi-Netplay Extended[구버전용] 3 백호 2009.02.22 2175
11 온라인 Multi-Netplay Extended (신버전) 10 백호 2009.02.22 2864
10 온라인 multy-netplay 로그인창에서 비밀번호를 ***표시해주는 script~! 1 백호 2009.02.22 1888
9 온라인 멀티넷스크립트 => 채팅보완 스크립트 8 file 백호 2009.02.22 2931
8 온라인 [멀티넷스크립 PvP 이벤트버전] / [넷플레이0.7.2]버전 3 file 백호 2009.02.22 2604
7 온라인 멀티넷 스크립트 수정본 (약간 한글화) 7 백호 2009.02.22 2315
6 온라인 온라인스크립트 실행방법 13 file 백호 2009.02.22 4275
5 온라인 온라인스크립트 99Q(NM=No Map)버전 5 백호 2009.02.22 3121
4 온라인 넷플레이1.7.0+abs5.5+한챗 49 쀍뛝쒧 2009.01.24 7286
Board Pagination Prev 1 2 Next
/ 2