질문과 답변

Extra Form

=begin
  title  WebTime class
 
  author jubin-park
  refer  EFE's WinHttp Request
  date   2015.12.12
  syntax Ruby (XP/VX/VXA)
=end

class WebTime < Time
  def self.new;  now() end
  def self.year; now.year() end
  def self.mon;  now.mon() end
  def self.mday; now.mday() end
  def self.hour; now.hour() end
  def self.min;  now.min() end
  def self.sec;  now.sec() end
  def self.now
    n = 0; data = String.new
    t_p = Time.now
    req = s2u(EFE.request('www.webtour.com', '/GInfo/time.asp?Code=A', 999999))
    # 실패 시 로컬 시간 반환
    return Time.now if req == "\000"
    t_l = Time.now
    req.scan(/<td width="134">(.*)<\/td>/) do |w|
      n += 1
      if n == 20
        data << $1
        break
      end
    end
    req = nil
    data = data.scan /(\d+)\/(\d+)\/(\d+) 오(전|후) (\d+):(\d+):(\d+)/
    # 실패 시 로컬 시간 반환
    return Time.now if data == []
    data.flatten!
    data[3] = 0  if data[3] == '전' # 오전 +0
    data[3] = 12 if data[3] == '후' # 오후 +12
    data[4] = 0  if data[3] == 0 && data[4] == '12' # 오전 12시 = 오전 0시
    data[4] = 0  if data[3] == 12 && data[4] == '12' # 오후 12시 = 오후 0시
    for i in 0...data.size
      data[i] = data[i].to_i
    end
    data[0] += 2000
    data[4] += data[3] # AM/PM 적용 뒤
    data.delete_at(3) # 삭제
    data[1] = case data[1] # 달
    when 1; 'jan'
    when 2; 'feb'
    when 3; 'mar'
    when 4; 'apr'
    when 5; 'may'
    when 6; 'jun'
    when 7; 'jul'
    when 8; 'aug'
    when 9; 'sep'
    when 10; 'oct'
    when 11; 'nov'
    when 12; 'dec'
    end
    return Time.local(*data) + (t_l - t_p) # 오차값 가산
  end
end

=begin
===============================================================================
 EFE's Request Script
 Version: RGSS & RGSS2 & RGSS3
 Special thanks : Ryex, Gustavo Bicalho, Kubiwa Taicho
===============================================================================
 This script will allow to request to some servers WITHOUT posting. (Only GET)
--------------------------------------------------------------------------------
Used WINAPI functions:

WinHTTPOpen
WinnHTTLConnect
WinHTTPOpenRequest
WinHTTPSendRequest
WinHTTPReceiveResponse
WinHttpQueryDataAvailable
WinHttpReadData

Call:

EFE.request(host, path, post, port)

host : "www.rpgmakervxace.net" (without http:// prefix)
path : "/forum/login.php" ( the directory path of your php file )
post : "username=kfdsfdsl&password=24324234"
port : 80 is default.

=end

module EFE
  WinHttpOpen = Win32API.new('winhttp','WinHttpOpen',"PIPPI",'I')
  WinHttpConnect = Win32API.new('winhttp','WinHttpConnect',"PPII",'I')
  WinHttpOpenRequest = Win32API.new('winhttp','WinHttpOpenRequest',"PPPPPII",'I')
  WinHttpSendRequest = Win32API.new('winhttp','WinHttpSendRequest',"PIIIIII",'I')
  WinHttpReceiveResponse = Win32API.new('winhttp','WinHttpReceiveResponse',"PP",'I')
  WinHttpQueryDataAvailable = Win32API.new('winhttp', 'WinHttpQueryDataAvailable', "PI", "I")
  WinHttpReadData = Win32API.new('winhttp','WinHttpReadData',"PPIP",'I')
 
  # I took this method from Gustavo Bicalho's WebKit script. Special thanks him.
  def self.to_ws(str)
    str = str.to_s();
    wstr = "";
    for i in 0..str.size
      wstr += str[i,1]+"\0";
    end
    wstr += "\0";
    return wstr;
  end
 
  def self.request(host, path, buf, post="",port=80)
    p = path
    if(post != "")
      p = p + "?" + post
    end
    p = p.to_s
    pwszUserAgent = ''
    pwszProxyName = ''
    pwszProxyBypass = ''
    httpOpen = WinHttpOpen.call(pwszUserAgent, 0, pwszProxyName, pwszProxyBypass, 0)
    if httpOpen
      httpConnect = WinHttpConnect.call(httpOpen, to_ws(host), port, 0)
      if httpConnect
        httpOpenR = WinHttpOpenRequest.call(httpConnect, nil, to_ws(p), "", '',0,0)
        if httpOpenR
          httpSendR = WinHttpSendRequest.call(httpOpenR, 0, 0 , 0, 0,0,0)
          if httpSendR
            httpReceiveR = WinHttpReceiveResponse.call(httpOpenR, nil)
            if httpReceiveR
              received = 0
              httpAvailable = WinHttpQueryDataAvailable.call(httpOpenR, received)
              if httpAvailable
                ali = ' ' * buf
                n = 0
                httpRead = WinHttpReadData.call(httpOpenR, ali, buf, o=[n].pack('i!'))
                n=o.unpack('i!')[0]
                return ali[0, n]
              else
                p("Error about query data available")
              end
            else
              p("Error when receiving response")
            end
          else
            p("Error when sending request")
          end
        else
          p("Error when opening request")
        end
      else
        p("Error when connecting to the host")
      end
    else
      p("Error when opening connection")
    end
  end
end

## Encoding

MultiByteToWideChar = Win32API.new('kernel32', 'MultiByteToWideChar', 'llplpl', 'l')
WideCharToMultiByte = Win32API.new('kernel32', 'WideCharToMultiByte', 'llplplpp', 'l')

def s2u(text)
  len = MultiByteToWideChar.call(0, 0, text, -1, nil, 0)
  buf = '\0' * (len*2)
  MultiByteToWideChar.call(0, 0, text, -1, buf, buf.size/2)
  len = WideCharToMultiByte.call(65001, 0, buf, -1, nil, 0, nil, nil)
  ret = '\0' * len
  WideCharToMultiByte.call(65001, 0, buf, -1, ret, ret.size, nil, nil)
  return ret.delete('\000')
end

 

 

 

------------

 

 

여기서.. 오프라인 상태에서는 컴퓨터 자체의 시간을 취득해오는데, 그렇지 않고, 오프라인 상태에서는 게임이 강제 종료가 되거나,

데이터베이스 내의 변수에 값을 대입해버린 후 , 커먼이벤트 상에서 그 변수가 나올경우, 자동 저장된 후 게임 강제종료 되게끔 하는 방법 없을 까요 ㅠ?


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12391
RMVXA 오류에 관하여 아시는분 답변주시면 감사하겠습니다. 김숀 2016.06.01 70
RMVXA 패시브 스킬 만드는 것 좀 도와주세요 ㅠ 투척민 2016.05.31 130
RMVXA 플레이어가 파티원을 통과하지 못하게 할 수 있나요? 4 듀얼쇼크 2016.05.31 175
RMVXA 전투중 TP의 취득을 바꾸고 싶습니다. 1 twoeye 2016.05.31 153
RMMV rpg mv 맵칩,타일셋 불러오기.경로 아시는분.. 1 은빙 2016.05.31 482
RMMV 출현조건에 아이템 조건 설정이요 file 잠행인 2016.05.30 88
RMMV 대사에서 현재 레벨, 능력치 등을 말하게 하 수 있나요? 2 스타란 2016.05.30 115
RMMV 체력, 레벨 바를 아예 없애버리고 싶은데.. 혹시 아시는분 있으신가요? 은빙 2016.05.30 119
RMMV 게이지바 크기 조절 질문요! file 리제트 2016.05.30 134
RMMV 스팀판 MV 실행시 작동 중지 3 file 다크루인 2016.05.28 232
RMMV 스팀의 MV에 대해서 4 아눌 2016.05.28 209
RMVXA 화면(시점) 설정 할수있나요? 3 DlDiGh 2016.05.26 149
RMVX 윈도우 업데이트 이후 생긴문제.. 듀라듀라셀 2016.05.24 94
RMXP 인터넷 웹 상에서 시간을 취득하는 스크립트에 관한 질문 입니다 ㅠ.. 1 이우 2016.05.24 141
RMVX rpg 받아서 하는데 bgm 이 안나오네 쿠라카케 2016.05.22 157
RMMV mv에서 사용하는 자바스크립트 라이브러리나 api, 플러그인에 대해 정보를 알 수 없을까요? 1 달밤에왈츠 2016.05.22 415
RMVXA RPGVXACE 전투중 능력강화 능력약화 아이콘 변경 질문 1 file 겜맨602 2016.05.19 134
기타 무보수로 그래픽담당을 구인해도 지원자가 있을까요? 1 NyxLee 2016.05.19 182
RMVX 스크립트를 보고 쓰게됬는데.. 2 아키Ra 2016.05.18 154
기타 라벨은 어떻게 사용하는 것인가요? 1 GOETSU 2016.05.18 184
Board Pagination Prev 1 ... 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 ... 516 Next
/ 516