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

Project1

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

[已经解决] 谁能帮解释一下这个代码大致意思

[复制链接]

Lv2.观梦者

梦石
0
星屑
408
在线时间
20 小时
注册时间
2021-11-22
帖子
18
跳转到指定楼层
1
发表于 2021-12-21 23:22:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 zhyi 于 2021-12-21 23:24 编辑

RUBY 代码复制
  1. #==============================================================================
  2. # □ SPG(SmliP Gospel File Encrypt System) (分割定义 1)
  3. #==============================================================================
  4. # 福音文件加密系统
  5. module SPG
  6.   #--------------------------------------------------------------------------
  7.   # ● 常量
  8.   #--------------------------------------------------------------------------
  9.   # 文件后缀名称
  10.   FILE_NAME_SUFFIX_SPG = ".spg"
  11.   FILE_NAME_SUFFIX_SAVE = ".rxdata"
  12.   #--------------------------------------------------------------------------
  13.   # ● 定义实例变量
  14.   #--------------------------------------------------------------------------
  15.   attr_reader :map_data                    # 全游戏地图初始化数据(只读)
  16.   attr_reader :rxdata                      # 综合数据(只读)
  17.   attr_reader :save_data                   # 存档数据(只读)
  18.   #--------------------------------------------------------------------------
  19.   # ● 更新
  20.   #--------------------------------------------------------------------------
  21.   def self.update
  22.     if @wait_count != nil
  23.       if @wait_count > 0
  24.         @wait_count -= 1
  25.       else
  26.         for l in @logo
  27.           l.visible = false
  28.         end
  29.         @logo[@logo_index].visible = true
  30.         @logo_index += 1
  31.         @logo_index = (@logo_index % 3)
  32.         @wait_count = 3
  33.       end
  34.     end
  35.   end
  36.   #--------------------------------------------------------------------------
  37.   # ● 开始图片进度条
  38.   #     type       : 图片摆放样式(<=0:保存样式 >0:读取样式)
  39.   #--------------------------------------------------------------------------
  40.   def self.start_picture(type = 1)
  41.     @wait_count = 0
  42.     @logo = []
  43.     # 图片摆放样式
  44.     type = type.to_i
  45.     for i in 0...3
  46.       s = Sprite.new
  47.       # 图片摆放样式(<=0:保存样式 >0:读取样式)
  48.       if type <= 0
  49.         s.bitmap = RPG::Cache.picture("LOGO/青蛙游戏/路易/save logo/路易-#{i}.png")
  50.         s.x = 640 - s.bitmap.width
  51.         s.y = 480 - s.bitmap.height
  52.       else
  53.         s.bitmap = RPG::Cache.picture("LOGO/青蛙游戏/路易/load logo/路易-#{i}.png")
  54.         s.x = 640 * 0.5 - s.bitmap.width * 0.5
  55.         s.y = 480 * 0.5 - s.bitmap.height * 0.5
  56.       end
  57.       s.z = 9999
  58.       s.visible = false
  59.       @logo.push(s)
  60.     end
  61.     @logo[0].visible = true
  62.     @logo[1].visible = false
  63.     @logo[2].visible = false
  64.     @logo_index = 0
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   # ● 结束图片进度条
  68.   #--------------------------------------------------------------------------
  69.   def self.end_picture
  70.     @wait_count = nil
  71.     if @logo != nil
  72.       for l in @logo
  73.         l.dispose if l != nil
  74.       end
  75.     end
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # ● 执行加解密
  79.   #     type       : 加解密方式(<=0:加密方式 >=1:解密方式(保存为文件) >=2:解密方式(直接读取解密后的文件数据))
  80.   #     file_name  : 需要处理的文件名
  81.   #     password   : 密匙字符串(范围:1-0、A-Z、a-z)(作为执行加解密的指令方式,可以是多位)
  82.   #--------------------------------------------------------------------------
  83.   def self.start(type, file_name, password = "")
  84. begin
  85.     type = type.to_i
  86.     password = password.to_s
  87.     # 大写字母
  88.     edh_upcase = ["A","B","C","D","E","F","G","H","I","J","K","L","M",
  89.                   "N","O","P","Q","R","S","T","U","V","W","X","Y","Z" ]
  90.     # 大写字母
  91.     edh_downcase = ["A","B","C","D","E","F","G","H","I","J","K","L","M",
  92.                     "N","O","P","Q","R","S","T","U","V","W","X","Y","Z" ]
  93.     edh_numeric = ["1","2","3","4","5","6","7","8","9","0"]
  94.     filename_object = "#{file_name}"
  95.     filename_new = "#{filename_object}" + "_new"
  96.     # 文件不存在的情况下
  97.     unless FileTest.exist?(filename_object)
  98.       return false
  99.     end
  100.     object = File.open(filename_object, "rb")
  101.     # 存储源文件数据用数组
  102.     object_data = object.readlines.clone
  103.     object.close
  104.     # 层数上限
  105.     code_max = 20
  106.     # 自校检随机值库存
  107.     rand_code_data = []
  108.     # 加解密次数
  109.     encrypt_num = 5
  110.     # 解密
  111.     if type >= 1
  112.       # 解压缩的方式读取文件
  113.       object = Zlib::GzipReader.open(filename_object)
  114.       #object = File.open(filename_object, "rb")
  115.       # 自定义字符串
  116.       by_text = Marshal.load(object)
  117.       for i in 1..code_max
  118.         # 读取
  119.         rand_code_data.push(Marshal.load(object))
  120.       end
  121.       nil_value = 0
  122.       for i in 0...rand_code_data.size
  123.         # 读取
  124.         nil_value += 1 if rand_code_data[i] == nil
  125.       end
  126.       # 读入各种对像
  127.       object_new = Marshal.load(object)
  128.       # (有自定义密匙的情况下)
  129.       if nil_value == 0
  130.         result_value = 0
  131.         for i in 0...rand_code_data.size
  132.           # 数值化
  133.           result_value += self.code_list(rand_code_data[i])[0][0, 1].to_i
  134.         end
  135.         # 求余
  136.         result_value = result_value % code_max
  137.         password = rand_code_data[result_value]
  138.       else
  139.         # 数据下一层是密匙
  140.         password = Marshal.load(object)
  141.       end
  142.       object.close
  143.       code_text = self.code_list(password)
  144.       object_new = [object_new[0]]
  145.       # 进行N次解密操作
  146.       for i in 1..encrypt_num
  147.         object_new = self.code_denote(1, object_new[0], code_text[0])
  148.       end
  149.       return self.load(object_new)
  150.     else
  151.       # ……
  152.     end
  153. rescue
  154.     print("(010)无法运行游戏!请检查文件是否缺少或损坏。")
  155.     exit
  156. end
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 读取数据
  160.   #     object   : 解密后的对象数据
  161.   #--------------------------------------------------------------------------
  162.   def self.load(object)
  163.     # 代入对象数据
  164.     object_new = object
  165.     # 初始化存值
  166.     file = nil
  167.     for i in 0...object_new[0].size
  168.       # 如果存值是零的情况下(设为零是因为在不确定存值类型的情况下可以自动赋值,从而自动的改变了存值类型)
  169.       if file == nil
  170.         file = object_new[0][i]
  171.       else
  172.         file += object_new[0][i]
  173.       end
  174.     end
  175.     # 读取描绘存档文件用的角色数据
  176.     d = Marshal.load(file)
  177.     return d
  178.   end
  179.   #--------------------------------------------------------------------------
  180.   # ● 码表解析(加解密执行代码)
  181.   #     code_text  : 需要解码的码表字符串
  182.   #--------------------------------------------------------------------------
  183.   def self.code_list(code_text)
  184.     code_text = code_text.to_s
  185.     result_code = ""
  186.     for i in 0...code_text.size
  187.       # 获取一个字符串
  188.       case code_text[i, 1]
  189.       when "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" # 数值(1-0)
  190.         result_code += code_text[i, 1]
  191.       when "A" # 大写(A-Z)
  192.         result_code += "0"
  193.       when "B"
  194.         result_code += "1"
  195.       when "C"
  196.         result_code += "2"
  197.       when "D"
  198.         result_code += "3"
  199.       when "E"
  200.         result_code += "4"
  201.       when "F"
  202.         result_code += "5"
  203.       when "G"
  204.         result_code += "6"
  205.       when "H"
  206.         result_code += "7"
  207.       when "I"
  208.         result_code += "8"
  209.       when "J"
  210.         result_code += "9"
  211.       when "K"
  212.         result_code += "10"
  213.       when "L"
  214.         result_code += "11"
  215.       when "M"
  216.         result_code += "12"
  217.       when "N"
  218.         result_code += "13"
  219.       when "O"
  220.         result_code += "14"
  221.       when "P"
  222.         result_code += "15"
  223.       when "Q"
  224.         result_code += "16"
  225.       when "R"
  226.         result_code += "17"
  227.       when "S"
  228.         result_code += "18"
  229.       when "T"
  230.         result_code += "19"
  231.       when "U"
  232.         result_code += "20"
  233.       when "V"
  234.         result_code += "21"
  235.       when "W"
  236.         result_code += "22"
  237.       when "X"
  238.         result_code += "23"
  239.       when "Y"
  240.         result_code += "24"
  241.       when "Z"
  242.         result_code += "25"
  243.       when "a" # 小写(a-z)
  244.         result_code += "26"
  245.       when "b"
  246.         result_code += "27"
  247.       when "c"
  248.         result_code += "28"
  249.       when "d"
  250.         result_code += "29"
  251.       when "e"
  252.         result_code += "30"
  253.       when "f"
  254.         result_code += "31"
  255.       when "g"
  256.         result_code += "32"
  257.       when "h"
  258.         result_code += "33"
  259.       when "i"
  260.         result_code += "34"
  261.       when "j"
  262.         result_code += "35"
  263.       when "k"
  264.         result_code += "36"
  265.       when "l"
  266.         result_code += "37"
  267.       when "m"
  268.         result_code += "38"
  269.       when "n"
  270.         result_code += "39"
  271.       when "o"
  272.         result_code += "40"
  273.       when "p"
  274.         result_code += "41"
  275.       when "q"
  276.         result_code += "42"
  277.       when "r"
  278.         result_code += "43"
  279.       when "s"
  280.         result_code += "44"
  281.       when "t"
  282.         result_code += "45"
  283.       when "u"
  284.         result_code += "46"
  285.       when "v"
  286.         result_code += "47"
  287.       when "w"
  288.         result_code += "48"
  289.       when "x"
  290.         result_code += "49"
  291.       when "y"
  292.         result_code += "50"
  293.       when "z"
  294.         result_code += "51"
  295.       else # 默认的加解密执行方式
  296.         result_code += "312"
  297.       end
  298.     end
  299.     # 返回 已经解码的码表(=>指令表)
  300.     return [result_code]
  301.   end
  302.   #--------------------------------------------------------------------------
  303.   # ● 执行指令表(执行加解密方式)
  304.   #     type        : 加解密方式(<=0:加密方式 >=1:解密方式(保存为文件) >=2:解密方式(直接读取解密后的文件数据))
  305.   #     object      : 对象数据
  306.   #     code_text   : 需要执行的指令表字符串
  307.   #--------------------------------------------------------------------------
  308.   def self.code_denote(type, object, code_text)
  309.     tyep = type.to_i
  310.     code = code_text
  311.     # 获取对象数据
  312.     object_new = [object]
  313.     for i in 0...code.size
  314.       # 解密
  315.       if type >= 1
  316.         # 获取一个字符串并且转换为数值()
  317.         code_value = code[(code.size - 1 - i), 1].to_i
  318.         # 类型(<=0:加密 >0:解密)
  319.         code_type = 1
  320.       # 加密
  321.       else
  322.         # 获取一个字符串并且转换为数值
  323.         code_value = code[i, 1].to_i
  324.         # 类型(<=0:加密 >0:解密)
  325.         code_type = 0
  326.       end
  327.       #--------------------------------------------------------------------------
  328.       # ● 方式1:交叉法(执行一次为加密,再执行一次为解密)
  329.       #     object  : 源流数据组
  330.       #     type    : 类型(<=0:加密 >0:解密)
  331.       #     value   : 单元间隔数
  332.       #--------------------------------------------------------------------------
  333.       #--------------------------------------------------------------------------
  334.       # ● 方式2:插入法(首单元删除法)
  335.       #     object  : 源流数据组
  336.       #     type    : 类型(<=0:首单元向尾部前面添加(默认:加密) >0:尾部前面单元向首单元前面添加(默认:解密))
  337.       #     value   : 执行次数
  338.       #--------------------------------------------------------------------------
  339.       #--------------------------------------------------------------------------
  340.       # ● 方式3:插入法(指定单元位移到指定位置上)
  341.       #     object  : 源流数据组
  342.       #     type    : 类型(<=0:指定元向指定位置前面添加(默认:加密) >0:指定位置单元向指定位置上前面添加(默认:解密))
  343.       #     value   : 执行次数
  344.       #     place   : 位移位置([指定位置索引, 位移的所在索引])
  345.       #--------------------------------------------------------------------------
  346.       # 分歧 执行命令
  347.       case code_value
  348.       when 1
  349. begin
  350.         # 方式1:交叉法(执行一次为加密,再执行一次为解密)
  351.         object_new = self.deed_1(object_new[0], code_type)
  352. rescue
  353.         p "错误代码(SPG1)"
  354. end
  355.       when 2
  356. begin
  357.         # 方式2:插入法(首单元删除法)
  358.         object_new = self.deed_2(object_new[0], code_type)
  359. rescue
  360.         p "错误代码(SPG2)"
  361. end
  362.       when 3
  363. begin
  364.         # 方式3:插入法(指定单元位移到指定位置上)
  365.         object_new = self.deed_3(object_new[0], code_type)
  366. rescue
  367.         p "错误代码(SPG3)"
  368. end
  369.       when 4
  370. begin
  371.         object_new = self.deed_1(object_new[0], code_type)
  372. rescue
  373.         p "错误代码(SPG4)"
  374. end
  375.       when 5
  376. begin
  377.         object_new = self.deed_2(object_new[0], code_type, 2)
  378. rescue
  379.         p "错误代码(SPG5)"
  380. end
  381.       when 6
  382. begin
  383.         object_new = self.deed_2(object_new[0], code_type, 3)
  384. rescue
  385.         p "错误代码(SPG6)"
  386. end
  387.       when 7
  388. begin
  389.         object_new = self.deed_3(object_new[0], code_type, 3, [1, 3])
  390. rescue
  391.         p "错误代码(SPG7)"
  392. end
  393.       when 8
  394. begin
  395.         object_new = self.deed_3(object_new[0], code_type, 3, [2, 2])
  396. rescue
  397.         p "错误代码(SPG8)"
  398. end
  399.       when 9
  400. begin
  401.         object_new = self.deed_3(object_new[0], code_type, 3, [3, 1])
  402. rescue
  403.         p "错误代码(SPG9)"
  404. end
  405.       when 0
  406.       else
  407.       end # case
  408.     end
  409.     # 压缩字符串操作
  410.     for i in 0...object_new[0].size
  411.       if type >= 1
  412.         # 解压
  413.         object_new[0][i] = self.zlib(object_new[0][i], 1)[0]
  414.       else
  415.         # 加压
  416.         # 解压
  417.         object_new[0][i] = self.zlib(object_new[0][i], 0)[0]
  418.       end
  419.     end
  420.     # 更新画面(防错:10秒备份)
  421.     Graphics.update
  422.     return object_new
  423.   end # def
  424.   #--------------------------------------------------------------------------
  425.   # ● 备份目录下指定类型的所有文件
  426.   #     chdir_name  : 目录名称
  427.   #     type_name   : 文件类型
  428.   #--------------------------------------------------------------------------
  429.   def self.bak_file(chdir_name = "DATA", type_name = "*")
  430.     # 创建的目录名称
  431.     list_name = "Bak"
  432.     # 如果目录不存在的情况下
  433. #    Dir.mkdir("#{list_name}") unless FileTest.directory?("#{list_name}")
  434.     # 获取目录下指定类型文件
  435.     file_name_data = self.file_name("#{chdir_name}","#{type_name}")
  436.     return if file_name_data.empty?
  437.     for file_name in file_name_data
  438.       # 复制文件(备份原文件用)
  439.       self.copy(file_name, "#{list_name}")
  440.     end
  441.   end
  442.   #--------------------------------------------------------------------------
  443.   # ● 获取目录下指定类型文件
  444.   #     chdir_name  : 目录名称
  445.   #     type_name   : 文件类型
  446.   #--------------------------------------------------------------------------
  447.   def self.file_name(chdir_name = "DATA", type_name = "*")
  448.     file_name_data = []
  449.     # 返回到指定目录
  450.     Dir.chdir("#{chdir_name}")
  451.     for file_name in Dir[type_name.to_s]
  452.       file_name_data.push(file_name.to_s) if FileTest.file?(file_name.to_s)
  453.     end
  454.     return file_name_data
  455.   end
  456.   #--------------------------------------------------------------------------
  457.   # ● 复制文件(备份原文件用)
  458.   #     file_name   : 原文件的名称
  459.   #     chdir_name  : 备份的文件夹名称
  460.   #     type_name   : 备份后附加的文件名后缀
  461.   #--------------------------------------------------------------------------
  462.   def self.copy(file_name, chdir_name = "Bak", type_name = ".bak")
  463.     begin
  464.       # 原文件的名称
  465.       out_file = "#{file_name}"
  466.       # 新备份文件的名称
  467.       new_file = "#{chdir_name}/#{out_file}" + "#{type_name}"
  468.       # 文件不存在的情况下
  469.       unless FileTest.exist?(out_file)
  470.         return false
  471.       end
  472.       # 打开源文件
  473.       object = File.open(out_file, "rb")
  474.       # 存储源文件数据用数组
  475.       object_data = []
  476.       # 读取源文件数据
  477.       object.each_line { |o| object_data.push(o) }
  478.       object.close
  479.       return if object_data == []
  480.       # 如果目录不存在的情况下
  481.       Dir.mkdir("#{chdir_name}") if !FileTest.directory?("#{chdir_name}") and chdir_name != ""
  482.       # 建立新文件
  483.       new = File.open(new_file, "wb")
  484.       # 写入读取到的源文件数据到新文件
  485.       object_data.each { |n| new.write(n) }
  486.       new.close
  487.       object_data = []
  488.       # 返回结果
  489.       return true
  490.     # 错误处理
  491.     rescue
  492.       return false
  493.     end
  494.   end
  495.   #--------------------------------------------------------------------------
  496.   # ● 压缩字符串(Zlib)
  497.   #     string  : 需要操作的字符串
  498.   #     type    : 类型(<=0:加压 >0:解压)
  499.   #--------------------------------------------------------------------------
  500.   def self.zlib(string,type)
  501.     # 即时刷新
  502.     self.update
  503.     # 返回 如果不是字符串的情况下
  504.     return [string] unless string.is_a?(String)
  505.     string = string
  506.     new_string = string
  507.     if type >= 1
  508.       new_string = Zlib::Inflate.inflate(string)
  509.     else
  510.       new_string = Zlib::Deflate.deflate(string, (rand(9) + 1))
  511.     end
  512.     return [new_string]
  513.   end
  514.   #--------------------------------------------------------------------------
  515.   # ● 方式1:交叉法(执行一次为加密,再执行一次为解密)
  516.   #     object  : 源流数据组
  517.   #     type    : 类型(<=0:加密 >0:解密)
  518.   #     value   : 单元间隔数
  519.   #--------------------------------------------------------------------------
  520.   def self.deed_1(object, type = 0, value = 2)
  521.     result = false
  522.     # 存储源文件数据用数组
  523.     object_data = object.clone
  524.     object_new = []
  525.     value = value.to_i
  526.     for i in 0...object_data.size
  527.             object_new.push(nil)
  528.     end
  529.     for v in 0...object_data.size
  530.       if v != 0 and v != object_data.size-1
  531.               if (v % value) == 0
  532.                        v0 = (v - 1)
  533.                        v1 = v
  534.                 #        p [v,v0,v1]
  535.           object_new[v0] = object_data[v1]
  536.           object_new[v1] = object_data[v0]
  537.           # 类型(<=0:加密 >0:解密)
  538.           if type >= 1
  539.             # Zlib 解压
  540.             object_new[v0] = self.zlib(object_data[v1], 1)[0]
  541.             object_new[v1] = self.zlib(object_data[v0], 1)[0]
  542.           else
  543.             # Zlib 加压
  544.             object_new[v0] = self.zlib(object_data[v1], 0)[0]
  545.             object_new[v1] = self.zlib(object_data[v0], 0)[0]
  546.           end
  547.         else
  548.           object_new[v] = object_data[v]
  549.         end       
  550.       else
  551.         object_new[v] = object_data[v]
  552.       end
  553.       # 更新画面(防错:10秒备份)
  554.       Graphics.update if (v % 5000) == 0
  555.       reslut = true if v == (object_data.size - 1)
  556.     end
  557.     # 返回 ([流数据数组, 结果])
  558.     return [object_new, reslut]
  559.   end # def
  560.   #--------------------------------------------------------------------------
  561.   # ● 方式2:插入法(首单元删除法)
  562.   #     object  : 源流数据组
  563.   #     type    : 类型(<=0:首单元向尾部前面添加(默认:加密) >0:尾部前面单元向首单元前面添加(默认:解密))
  564.   #     value   : 执行次数
  565.   #--------------------------------------------------------------------------
  566.   def self.deed_2(object, type = 0, value = 2)
  567.     result = false
  568.     # 存储源文件数据用数组
  569.     object_data = object
  570.     object_new = object_data.clone
  571.     value = value.to_i
  572.     for v in 1..value
  573.       # 即时刷新
  574.   #    self.update
  575.       # 加密
  576.       if type <= 0
  577.         # 删除并返回首单元
  578.         new = object_new.shift
  579.         new = self.zlib(new, 0)[0]
  580.         # 将已经删除的首单元数据添加到尾部单元的前面
  581.         object_new.insert((object_new.size - 1), new)
  582.         reslut = true if v == value
  583.       # 解密
  584.       else
  585.         # 删除并返回尾部前面的单元
  586.         new = object_new.delete_at((object_new.size - 1 - 1))
  587.         new = self.zlib(new, 1)[0]
  588.         # 将已经删除的尾部前面单元数据添加到首单元前面
  589.         object_new.insert(0, new)
  590.         reslut = true if v == value
  591.       end
  592.     end
  593.     # 返回 ([流数据数组, 结果])
  594.     return [object_new, reslut]
  595.   end # def
  596.   #--------------------------------------------------------------------------
  597.   # ● 方式3:插入法(指定单元位移到指定位置上)
  598.   #     object  : 源流数据组
  599.   #     type    : 类型(<=0:指定元向指定位置前面添加(默认:加密) >0:指定位置单元向指定位置上前面添加(默认:解密))
  600.   #     value   : 执行次数
  601.   #     place   : 位移位置([指定位置索引, 位移的所在索引])
  602.   #                         注意:位置索引按照每行的字节数量而定,一般在1-6左右,超过字节数量上限即出错。
  603.   #--------------------------------------------------------------------------
  604.   def self.deed_3(object, type = 0, value = 2, place = [0, 3])
  605.     result = false
  606.     # 存储源文件数据用数组
  607.     object_data = object
  608.     object_new = object_data.clone
  609.     value = value.to_i
  610.     place = place
  611.     for v in 1..value
  612.       # 即时刷新
  613.    #   self.update
  614.       # 加密
  615.       if type <= 0
  616.         new = object_new.delete_at(place[0])
  617.         new = self.zlib(new, 0)[0]
  618.         object_new.insert(place[1], new)
  619.         reslut = true if v == value
  620.       # 解密
  621.       else
  622.         new = object_new.delete_at(place[1])
  623.         new = self.zlib(new, 1)[0]
  624.         object_new.insert(place[0], new)
  625.         reslut = true if v == value
  626.       end
  627.     end
  628.     # 返回 ([流数据数组, 结果])
  629.     return [object_new, reslut]
  630.   end # def
  631. end # module
  632. # 应用
  633. #SPG.start_change
  634. #SPG.start_script_data

点评

我看不懂,但大受震撼  发表于 2021-12-21 23:41

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2021-12-22 00:19:48 | 只看该作者
数据加密的脚本,都是核心加密函数;看脚本最后两行的函数并不在里头,估计这脚本并不完整,或者分成几个脚本来写了。

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
408
在线时间
20 小时
注册时间
2021-11-22
帖子
18
3
 楼主| 发表于 2021-12-23 11:54:37 | 只看该作者
我是一级的。不能发私信,私聊我也回不了你啊
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
8977
在线时间
481 小时
注册时间
2010-7-15
帖子
141
4
发表于 2021-12-24 10:08:18 | 只看该作者
好多代码,需要慢慢看
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
2832
在线时间
474 小时
注册时间
2010-9-11
帖子
519
5
发表于 2021-12-24 12:35:03 | 只看该作者
看得出是把数据加密/解密 防止修改器/外挂用的
建议楼主更具体说出哪一部分不明白

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

Paku
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
408
在线时间
20 小时
注册时间
2021-11-22
帖子
18
6
 楼主| 发表于 2021-12-24 12:38:32 | 只看该作者
phunmung5173 发表于 2021-12-24 12:35
看得出是把数据加密/解密 防止修改器/外挂用的
建议楼主更具体说出哪一部分不明白 ...

有你这第一句就明白了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 11:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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