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
761 저장 심플 세이브 로드(1개의 세이브 사용하기) 3 백호 2009.02.22 1972
760 타이틀/게임오버 심심해서 구현해본 타이틀음악만으로 게임 플레이하기 2 백호 2009.02.22 1621
759 기타 실제시간표시스크립트입니다...[중뷁이면지성;;] 4 백호 2009.02.22 1352
758 HUD 시트르산의 나침반 스크립트 19 file 시트르산 2011.01.23 3199
757 액터 시트르산의 XP용 감정 말풍선 표시 스크립트 37 file 시트르산 2011.01.25 6114
756 기타 시작하자 마자 풀 스크린 2 백호 2009.02.21 1082
755 시스템2C 4 file 글러브111 2011.01.15 2119
754 전투 시뮬레이션 턴알 3 file 백호 2009.02.21 3055
753 메뉴 스테이터스 화면에 넥스트 표시 1 file 백호 2009.02.21 1759
752 메뉴 스테이터스 화면 from Harts Horn 2 백호 2009.02.22 1572
751 기타 스테이터스 표시 플러스 1.00ver 백호 2009.02.22 1141
750 메뉴 스테이터스 일람 스크립트 file 백호 2009.02.21 1330
749 메뉴 스탯올리기 시스템 (액알가능) 27 file 백호 2009.02.22 3406
748 스탯 포인트 시스템 3차수정 ( ' 백호 ' 님이 올리신 자료 수정.) 26 카이어덱터 2010.01.04 3346
747 기타 스탯 13 file 이안 2010.01.17 2325
746 기타 스탭 롤 9 file 허걱 2009.08.13 2907
745 스킬 스킬창 업그레이드? ps인간 2009.01.23 3061
744 스킬 스킬제휴 스크립트 file 백호 2009.02.21 1294
743 스킬 스킬샵 스크립트 16 file 독도2005 2009.08.24 4223
742 스킬 스킬북 스크립트 8 WMN 2008.03.17 2452
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 52 Next
/ 52