Project1

标题: 真。作弊码系统 [打印本页]

作者: 英顺的马甲    时间: 2011-2-21 14:29
标题: 真。作弊码系统
本帖最后由 英顺的马甲 于 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 17:49
怎么用,讲解一下
作者: 英顺的马甲    时间: 2011-2-26 08:05
回复 魔御使 的帖子

比如说:
Cheat[1] = "hello"
在地图上输入hello就会启动一号公共事件的内容
Cheat[5] = "abc"
在地图上输入abc就会启动5号公共事件的内容
以此类推
作者: fux2    时间: 2011-3-1 11:44
回复 英顺的马甲 的帖子

不知道包含作弊码可以不,比如作弊码是fux2.输入hahafux2行不行。
作者: 江南小帅瓜    时间: 2011-3-2 23:33
146行发生了NoMethodError
undefined method 'upcase'for[nil,77,79,78,69,89]:Array
作者: 377081559    时间: 2011-3-15 12:58
第146行有问题啊
作者: 被遗弃的    时间: 2011-3-15 13:08
第146行有问题,请楼主改正
作者: heros    时间: 2011-3-17 18:15
楼主有改正不?146有问题
作者: 377081559    时间: 2011-3-17 19:39
楼猪,你啥时候改正第146行啊
作者: puohuaishi    时间: 2011-5-21 15:32
弱弱的问一句,作弊码完全可以通过公共事件来实现啊,为什么还要这么麻烦用代码?
作者: 921257824    时间: 2011-5-22 20:53
说实话。个人认为实用性不大!作弊码完全可以用输入值来实现的
作者: KB.Driver    时间: 2011-5-23 13:12
本帖最后由 KB.Driver 于 2011-5-25 02:51 编辑

-_-|||(啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊我这是第N次被扣经验啦,打击啊!大家下手nengbunengbuyaozhemehen?)
作者: 冰舞蝶恋    时间: 2011-6-29 11:22
请给出原作者。

------------------------------
另:真的很有爱哈~收下。
作者: 36763183    时间: 2011-6-29 12:12
楼主是小LIM???
作者: 絀神入化    时间: 2011-7-2 12:50
事件党飘过= =脚本无能




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1