设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1982|回复: 2
打印 上一主题 下一主题

[已经过期] 怎么让游戏里的数据于一论坛同步?求解

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
91 小时
注册时间
2013-9-19
帖子
115
跳转到指定楼层
1
发表于 2014-3-9 18:59:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 龙战于野 于 2014-3-9 19:00 编辑

求解一下,想让游戏中的某项数据与一论坛数据同步更新,该怎么做?希望大神们帮助下。
需要什么样的网页协议都可以提供,修改会员数据什么的,都可以用协议形式提供。
就求一下协议插入游戏的方法。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
82 小时
注册时间
2013-1-28
帖子
58
2
发表于 2014-3-10 10:47:37 | 只看该作者
本帖最后由 Sion 于 2014-3-10 19:26 编辑

RUBY 代码复制
  1. # ★ RGSS3_ニコ新着チェッカー Ver1.0
  2. #==============================================================================
  3. =begin
  4.  
  5. 作者:tomoaky
  6. webサイト:ひきも記は閉鎖しました。([url]http://hikimoki.sakura.ne.jp/[/url])
  7.  
  8. このスクリプトを導入すると、通常のゲーム処理と並行して
  9. ニコニコ動画の新着動画情報を受信し、画面上部に表示することができます。
  10.  
  11. F8キーを押すことで、表示中の動画をブラウザで視聴することもできます。
  12.  
  13. 動作には WHITE-FLUTE Web ([url]http://www.whiteflute.org/[/url]) 様にて配布されている
  14. 『NET-EX ネット通信スクリプト VXAce版』が必要です、利用規約をよく読み
  15. 同意したうえで正しく導入してください。
  16.  
  17. RGSS3_ニコニコ動画 は tomoaky が作成したプラグインスクリプトです。
  18. このスクリプトのサポートを WHITE-FLUTE Web 様へ求めるようなことは
  19. 絶対にしないでください。
  20.  
  21. 2014.02.13  Ver1.0
  22.   公開
  23.  
  24. =end
  25.  
  26. #==============================================================================
  27. # □ 設定項目
  28. #==============================================================================
  29. module TMNICONEW
  30.   TIMEOUT_SECOND  = 10      # タイムアウトまでの時間(秒)
  31.   INTERVAL_SECOND = 300     # データ取得間隔(秒)
  32.   OUTPUT_SECOND   = 15      # 動画情報の表示時間(秒)
  33.  
  34.   BROWSE_KEY      = :F8     # ブラウザ視聴に利用するキー
  35.   GUIDE_TEXT      = "F8:ブラウザで視聴"
  36.  
  37.   # 動画リストの取得先アドレス
  38.   LIST_URI = "http://www.nicovideo.jp/newarrival?rss=2.0"
  39.  
  40.   # 動画リストを取得するための正規表現(順番変更不可)
  41.   # タイトル, 動画アドレス, サムネアドレス, 再生時間
  42.   RSS_TAGS = [
  43.     /<title>(.+?)<\/title>/,
  44.     /<link>(.+?)<\/link>/,
  45.     /<img\salt\=\".+?\"\ssrc\=\"(.+?)\"\swidth/,
  46.     /<strong\sclass\=\"nico\-info\-length\">(.+?)<\/strong>/,
  47.   ]
  48.  
  49. end
  50.  
  51. #==============================================================================
  52. # □ ネット通信のセットアップ
  53. #------------------------------------------------------------------------------
  54. #  解放処理は共通実行スクリプトで必ず実行するようにしてください。
  55. #==============================================================================
  56. unless WFNet.http
  57.   WFNet.setup
  58.   WFNet.http_setup
  59. end
  60.  
  61. #==============================================================================
  62. # ◆ WFNet
  63. #==============================================================================
  64. module WFNet
  65.   module_function
  66.   #--------------------------------------------------------------------------
  67.   # ◇ サムネイルの破損チェック
  68.   #--------------------------------------------------------------------------
  69.   def img_valid?(file_name)
  70.     result = true
  71.     f = File.open(file_name, "rb")
  72.     begin
  73.       header = f.read(8)
  74.       f.seek(-12, IO::SEEK_END)
  75.       footer = f.read(12)
  76.     rescue
  77.       return false
  78.     end
  79.     if header[0,2].unpack("H*") == [ "ffd8" ]
  80.       result = false unless footer[-2,2].unpack("H*") == [ "ffd9" ]
  81.     else
  82.       result = false
  83.     end
  84.     f.close
  85.     result
  86.   end
  87.   #--------------------------------------------------------------------------
  88.   # ◇ 特殊文字の変換
  89.   #--------------------------------------------------------------------------
  90.   def convert_ex_characters(text)
  91.     return unless text
  92.     text.gsub!(/\&amp\;/)  {|s| "&" }
  93.     text.gsub!(/\&amp\;/)  {|s| "&" }
  94.     text.gsub!(/\&nbsp\;/) {|s| " " }
  95.     text.gsub!(/\&apos\;/) {|s| "'" }
  96.     text.gsub!(/\&quot\;/) {|s| '"' }
  97.     text.gsub!(/\&lt\;/)   {|s| "<" }
  98.     text.gsub!(/\&gt\;/)   {|s| ">" }
  99.     text
  100.   end
  101. end
  102.  
  103. #==============================================================================
  104. # □ Game_NicoNew
  105. #------------------------------------------------------------------------------
  106. #  ニコニコ動画の新着動画をチェックするクラスオブジェクトです。このクラスのイン
  107. # スタンスは $game_niconew で参照されます。
  108. #==============================================================================
  109. class Game_NicoNew
  110.   #--------------------------------------------------------------------------
  111.   # ● 公開インスタンス変数
  112.   #--------------------------------------------------------------------------
  113.   attr_reader   :use_thum                 # サムネイル利用可能フラグ
  114.   #--------------------------------------------------------------------------
  115.   # ● オブジェクト初期化
  116.   #--------------------------------------------------------------------------
  117.   def initialize
  118.     @state = 0
  119.     @use_thum = false
  120.     @data = nil
  121.     @log = []
  122.   end
  123.   #--------------------------------------------------------------------------
  124.   # ● フレーム更新
  125.   #--------------------------------------------------------------------------
  126.   def update
  127.     case @state
  128.     when 0; update_get_data
  129.     when 1; update_wait_data
  130.     when 2; update_get_img
  131.     when 3; update_wait_img
  132.     when 4; update_output
  133.     end
  134.   end
  135.   #--------------------------------------------------------------------------
  136.   # ● フレーム更新(動画情報のリクエスト)
  137.   #--------------------------------------------------------------------------
  138.   def update_get_data
  139.     return if @last_get && Time.now - @last_get > TMNICONEW::INTERVAL_SECOND
  140.     uri = TMNICONEW::LIST_URI
  141.     file_name = "System/nico_list.tom"
  142.     if WFNet.uri_open(uri, file_name)
  143.       @state = 1
  144.       @start_second = Time.now
  145.     end
  146.   end
  147.   #--------------------------------------------------------------------------
  148.   # ● フレーム更新(動画情報の受信待ち)
  149.   #--------------------------------------------------------------------------
  150.   def update_wait_data
  151.     file_name = "System/nico_list.tom"
  152.     if WFNet.is_http_finish?
  153.       @data_list = []
  154.       a = nil
  155.       file = File::open(file_name)
  156.       file.each do |line|
  157.         a = [] if /<item>/ =~ line
  158.         if a
  159.           TMNICONEW::RSS_TAGS.each_with_index {|s, i| a[i] = $1 if s =~ line }
  160.           @data_list.push(a) if /<\/item>/ =~ line && [email protected]?(a[2])
  161.         end
  162.       end
  163.       file.close
  164.       @state = 2
  165.     elsif Time.now - @start_second > TMNICONEW::TIMEOUT_SECOND
  166.       @state = 0
  167.       @last_get = nil
  168.     end
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● フレーム更新(サムネイルのリクエスト)
  172.   #--------------------------------------------------------------------------
  173.   def update_get_img
  174.     if @data_list.empty?
  175.       @state = 0
  176.     else
  177.       @data = @data_list.shift
  178.       @log.push(@data[2])
  179.       if WFNet.uri_open(@data[2], "System/nico_thumnail.jpg")
  180.         @state = 3
  181.         @start_second = Time.now
  182.       end
  183.     end
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● フレーム更新(サムネイルの受信待ち)
  187.   #--------------------------------------------------------------------------
  188.   def update_wait_img
  189.     if WFNet.is_http_finish?
  190.       @use_thum = WFNet.img_valid?("System/nico_thumnail.jpg")
  191.     elsif Time.now - @start_second > TMNICONEW::TIMEOUT_SECOND
  192.       @use_thum = false
  193.     else
  194.       return
  195.     end
  196.     @state = 4
  197.     @wait_count = TMNICONEW::OUTPUT_SECOND * Graphics.frame_rate
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● フレーム更新(動画情報の表示中)
  201.   #--------------------------------------------------------------------------
  202.   def update_output
  203.     @wait_count -= 1
  204.     @state = 2 if @wait_count == 0
  205.   end
  206.   #--------------------------------------------------------------------------
  207.   # ● 動画のタイトルを返す
  208.   #--------------------------------------------------------------------------
  209.   def nico_title
  210.     return nil unless @data
  211.     return nil if @state < 4
  212.     WFNet.convert_ex_characters(@data[0])
  213.   end
  214.   #--------------------------------------------------------------------------
  215.   # ● 動画のアドレスを返す
  216.   #--------------------------------------------------------------------------
  217.   def nico_uri
  218.     return nil unless @data
  219.     return nil if @state < 4
  220.     @data[1]
  221.   end
  222.   #--------------------------------------------------------------------------
  223.   # ● 動画の長さを返す
  224.   #--------------------------------------------------------------------------
  225.   def nico_length
  226.     return nil unless @data
  227.     return nil if @state < 4
  228.     @data[3]
  229.   end
  230. end
  231.  
  232. #==============================================================================
  233. # □ Sprite_NicoNew
  234. #==============================================================================
  235. class Sprite_NicoNew < Sprite
  236.   #--------------------------------------------------------------------------
  237.   # ● オブジェクト初期化
  238.   #--------------------------------------------------------------------------
  239.   def initialize(viewport = nil)
  240.     super(viewport)
  241.     self.bitmap = Bitmap.new(Graphics.width, 54)
  242.     self.z = 9999
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 解放
  246.   #--------------------------------------------------------------------------
  247.   def dispose
  248.     super
  249.     self.bitmap.dispose
  250.   end
  251.   #--------------------------------------------------------------------------
  252.   # ● フレーム更新
  253.   #--------------------------------------------------------------------------
  254.   def update
  255.     if @uri != $game_niconew.nico_uri
  256.       @uri = $game_niconew.nico_uri
  257.       refresh if @uri
  258.     end
  259.     self.y += 2 if self.y < 0
  260.     super
  261.   end
  262.   #--------------------------------------------------------------------------
  263.   # ● リフレッシュ
  264.   #--------------------------------------------------------------------------
  265.   def refresh
  266.     self.bitmap.clear
  267.     self.bitmap.font.size = 20
  268.     self.bitmap.gradient_fill_rect(bitmap.rect, Color.new(0, 0, 0, 192),
  269.       Color.new(0, 0, 0, 0), true)
  270.     if $game_niconew.use_thum
  271.       bitmap = Bitmap.new("System/nico_thumnail")
  272.       rect = Rect.new(2, 2, 65, 50)
  273.       self.bitmap.stretch_blt(rect, bitmap, bitmap.rect)
  274.       bitmap.dispose
  275.     else
  276.       self.bitmap.fill_rect(2, 2, 65, 50, Color.new(0, 0, 0))
  277.       self.bitmap.draw_text(2, 2, 65, 20, "No IMG")
  278.     end
  279.     self.bitmap.draw_text(69, 2, self.width - 69, 20, $game_niconew.nico_title)
  280.     self.bitmap.draw_text(2, 32, 65, 20, $game_niconew.nico_length, 2)
  281.     self.bitmap.font.size = 16
  282.     self.bitmap.draw_text(0, 24, self.width - 2, 16, TMNICONEW::GUIDE_TEXT, 2)
  283.     self.y = 0 - self.height
  284.   end
  285. end
  286.  
  287. #==============================================================================
  288. # ■ Scene_Base
  289. #==============================================================================
  290. class Scene_Base
  291.   #--------------------------------------------------------------------------
  292.   # ● 開始処理
  293.   #--------------------------------------------------------------------------
  294.   alias tmniconew_scene_base_start start
  295.   def start
  296.     tmniconew_scene_base_start
  297.     $game_niconew = Game_NicoNew.new unless $game_niconew
  298.     @niconew_sprite = Sprite_NicoNew.new(nil)
  299.   end
  300.   #--------------------------------------------------------------------------
  301.   # ● フレーム更新
  302.   #--------------------------------------------------------------------------
  303.   alias tmniconew_scene_base_update update
  304.   def update
  305.     tmniconew_scene_base_update
  306.     $game_niconew.update
  307.     @niconew_sprite.update
  308.     if Input.trigger?(TMNICONEW::BROWSE_KEY) && $game_niconew.nico_uri
  309.       a = Win32API.new("shell32","ShellExecuteA", %w(p p p p p i),"i")
  310.       a.call(0, "open", $game_niconew.nico_uri, 0, 0, 1)
  311.     end
  312.   end
  313.   #--------------------------------------------------------------------------
  314.   # ● 終了処理
  315.   #--------------------------------------------------------------------------
  316.   alias tmniconew_scene_base_terminate terminate
  317.   def terminate
  318.     tmniconew_scene_base_terminate
  319.     @niconew_sprite.dispose
  320.   end
  321. end


评分

参与人数 1星屑 +110 收起 理由
Sion + 110 感谢帮忙

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
82 小时
注册时间
2013-1-28
帖子
58
3
发表于 2014-3-10 10:49:00 | 只看该作者
上面这个可以实现游戏中弹出广告,楼主研究下,可以改成你想要的效果

点评

把代码框起来呀  发表于 2014-3-10 19:25
谢谢,我研究一下  发表于 2014-3-10 14:09
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-25 06:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表