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

Project1

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

[讨论] 真。作弊码系统

[复制链接]

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
跳转到指定楼层
1
发表于 2011-2-21 14:29:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 英顺的马甲 于 2011-2-21 15:32 编辑

其实就是改进作弊码脚本
解决设置公共事件必须依照顺序的问题
作弊码设置方法:Cheat[公共事件编号] = 作弊码字符串,不分大小写,支持空格,不支持标点符号,支持数字但不支持小键盘。
  1. module Key
  2.   Cheat = {}
  3.   # 以下设置作弊码
  4.   Cheat[1] = "hello"
  5.   Cheat[10] = "it is a good day to die"
  6.   # 以上设置作弊码
  7.   @key_code = {
  8.   # =============================
  9.   "BACK"=> 0x08,
  10.   "TAB"=> 0x09,
  11.   "SHIFT"=> 0x10,
  12.   "ALT"=> 0x12,
  13.   "CAP"=> 0x14,
  14.   "ESC"=> 0x1B,
  15.   "SPACE"=> 0x20,
  16.   " "=> 0x20,
  17.   "LEFT"=> 0x25,
  18.   "UP"=> 0x26,
  19.   "RIGHT"=> 0x27,
  20.   "DOWN"=> 0x28,
  21.   "ENTER" => 13,
  22.   "LCTRL" => 0xA2,
  23.   "RCTRL" => 0xA3,
  24.   "LALT" => 0xA4,
  25.   "RALT" => 0xA5,
  26.   "SPACE" => 0x20,
  27.   # =============================
  28.   "A" => 0x41,
  29.   "B" => 0x42,
  30.   "C" => 0x43,
  31.   "D" => 0x44,
  32.   "E" => 0x45,
  33.   "F" => 0x46,
  34.   "G" => 0x47,
  35.   "H" => 0x48,
  36.   "I" => 0x49,
  37.   "J" => 0x4A,
  38.   "K" => 0x4B,
  39.   "L" => 0x4C,
  40.   "M" => 0x4D,
  41.   "N" => 0x4E,
  42.   "O" => 0x4F,
  43.   "P" => 0x50,
  44.   "Q" => 0x51,
  45.   "R" => 0x52,
  46.   "S" => 0x53,
  47.   "T" => 0x54,
  48.   "U" => 0x55,
  49.   "V" => 0x56,
  50.   "W" => 0x57,
  51.   "X" => 0x58,
  52.   "Y" => 0x59,
  53.   "Z" => 0x5A,
  54.   # =============================
  55.   "F1"  => 0x70,
  56.   "F2"  => 0x71,
  57.   "F3"  => 0x72,
  58.   "F4"  => 0x73,
  59.   "F5"  => 0x74,
  60.   "F6"  => 0x75,
  61.   "F7"  => 0x76,
  62.   "F8"  => 0x77,
  63.   "F9"  => 0x78,
  64.   "F10" => 0x79,
  65.   "F11" => 0x7A,
  66.   "F12" => 0x7B,
  67.   # =============================
  68.   "0" => 0x30,
  69.   "1" => 0x31,
  70.   "2" => 0x32,
  71.   "3" => 0x33,
  72.   "4" => 0x34,
  73.   "5" => 0x35,
  74.   "6" => 0x36,
  75.   "7" => 0x37,
  76.   "8" => 0x38,
  77.   "9" => 0x39
  78.   # =============================
  79.   }
  80.   module_function
  81.   @R_Key_Hash = {}
  82.   @trigger = {}
  83.   @R_Key_Repeat = {}
  84.   GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
  85.   def update
  86.     @key_code.each_value do |i|
  87.       result = GetKeyState.call(i)
  88.       if @R_Key_Hash[i] == 1 and result != 0
  89.         @trigger[i] = false
  90.         next
  91.       end
  92.       if result != 0
  93.         @R_Key_Hash[i] = 1
  94.         @trigger[i] = true
  95.         next
  96.       else
  97.         @R_Key_Hash[i] = 0
  98.         @trigger[i] = false
  99.         next
  100.       end
  101.     end
  102.   end
  103.   def press?(rkey)
  104.     return GetKeyState.call(rkey) != 0
  105.   end
  106.   def repeat?(rkey)
  107.     result = GetKeyState.call(rkey)
  108.     if result != 0
  109.       if @R_Key_Repeat[rkey].nil?
  110.         @R_Key_Repeat[rkey] = 0
  111.         return true
  112.       end
  113.       @R_Key_Repeat[rkey] += 1
  114.     else
  115.       @R_Key_Repeat[rkey] = nil
  116.       @R_Key_Hash[rkey] = 0
  117.     end
  118.     if !@R_Key_Repeat[rkey].nil? and @R_Key_Repeat[rkey] > 10 # 6和10乃精确 repeat
  119.       @R_Key_Repeat[rkey] = 6
  120.       return true
  121.     else
  122.       return false
  123.     end
  124.   end
  125.   def trigger?(rkey)
  126.     return @trigger[rkey]
  127.   end
  128.   def [](key)
  129.     return @key_code[key]
  130.   end
  131. end
  132. module Graphics
  133.   @self_update = method('update') if @self_update.nil?
  134.   module_function
  135.   def update
  136.     @self_update.call
  137.     Key.update
  138.   end
  139. end
  140. class Scene_Map
  141.   alias old update
  142.   def update
  143.     @mj=Key::Cheat
  144.     for i in 0...999
  145.       if @mj[i] != nil
  146.         array = @mj[i].upcase.scan(/./)
  147.         @mj[i]=[nil]
  148.         for n in 0...array.size
  149.           @mj[i].push(Key[array[n]])
  150.         end
  151.       end
  152.     end
  153.     n = 0
  154.     for i in 1..190
  155.       n = i if Key.trigger?(i)
  156.     end
  157.     if n > 0
  158.       if @open
  159.         @open = false
  160.         for @k in @z
  161.           @open = true if n == @mj[@k][@j[@k]]
  162.         end
  163.         for @k in @z
  164.           if n == @mj[@k][@j[@k]]
  165.             @j[@k]+=1
  166.             if @j[@k]==@mj[@k].size
  167.               $game_temp.common_event_id = @k
  168.               @j[@k] = 0
  169.             end
  170.           else
  171.             @j[@k] = 0
  172.           end
  173.         end
  174.       end
  175.     end
  176.     if @open != true
  177.       @z = []
  178.       @j = []
  179.       for i in 0...999
  180.         if @mj.has_key?(i)
  181.           if n == @mj[i][1]
  182.             @z.push(i)
  183.             @j[i] = 2
  184.             @open = true
  185.           end
  186.         end
  187.       end
  188.     end
  189.     old
  190.   end
  191. end
复制代码

点评

签名大爱  发表于 2011-2-25 18:26
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党

Lv1.梦旅人

梦石
0
星屑
50
在线时间
207 小时
注册时间
2010-10-7
帖子
404
2
发表于 2011-2-25 17:49:03 | 只看该作者
怎么用,讲解一下
这几天要出去一下,有事给我留言!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
3
 楼主| 发表于 2011-2-26 08:05:38 | 只看该作者
回复 魔御使 的帖子

比如说:
Cheat[1] = "hello"
在地图上输入hello就会启动一号公共事件的内容
Cheat[5] = "abc"
在地图上输入abc就会启动5号公共事件的内容
以此类推
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
41525
在线时间
7592 小时
注册时间
2009-7-6
帖子
13502

开拓者贵宾

4
发表于 2011-3-1 11:44:22 | 只看该作者
回复 英顺的马甲 的帖子

不知道包含作弊码可以不,比如作弊码是fux2.输入hahafux2行不行。

点评

基本上是可以的  发表于 2011-3-1 13:33
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
673
在线时间
285 小时
注册时间
2007-1-6
帖子
183
5
发表于 2011-3-2 23:33:59 | 只看该作者
146行发生了NoMethodError
undefined method 'upcase'for[nil,77,79,78,69,89]:Array

点评

果然都没有考虑到NIL啊……  发表于 2011-3-3 07:08
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
49 小时
注册时间
2011-3-12
帖子
85
6
发表于 2011-3-15 12:58:54 | 只看该作者
第146行有问题啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
134 小时
注册时间
2010-10-16
帖子
186
7
发表于 2011-3-15 13:08:57 | 只看该作者
第146行有问题,请楼主改正
共生体之灾1——古老金字塔 BUG修复
http://rpg.blue/forum.php?mod=viewthread&tid=162405&fromuid=107485
《拉奥夫历险记》http://rpg.blue/forum.php?mod=viewthread&tid=162538&fromuid=107485
共生体之灾2—魔神归来:
http://rpg.blue/thread-169765-1-1.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2011-2-17
帖子
37
8
发表于 2011-3-17 18:15:44 | 只看该作者
楼主有改正不?146有问题
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
49 小时
注册时间
2011-3-12
帖子
85
9
发表于 2011-3-17 19:39:56 | 只看该作者
楼猪,你啥时候改正第146行啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
23 小时
注册时间
2011-3-10
帖子
7
10
发表于 2011-5-21 15:32:34 | 只看该作者
弱弱的问一句,作弊码完全可以通过公共事件来实现啊,为什么还要这么麻烦用代码?

点评

纯数字输入就行了= =  发表于 2011-7-7 06:56
先不说连贯性,就说键位也要脚本啊……  发表于 2011-5-21 16:05
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-5 20:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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