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

Project1

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

[已经解决] 关于★之类特殊字符为什么在这段脚本里显示不出来?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2010-9-10
帖子
14
跳转到指定楼层
1
发表于 2012-2-24 15:43:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 cmfwmj 于 2012-2-24 15:44 编辑

随机装备显示前缀的问题,代码的18和19行,普通文字(例如代码中“强化的”)或数字都可以正常显示出来,为什么特殊字符(例如代码中“★”)显示不了。我的字体是可以显示特殊符号的,另一个功能脚本也能显示出★,请问这个脚本要添加什么才能显示出特殊字符?
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ 随机属性装备 By wyongcan
  4. #==============================================================================
  5. module Equipplus
  6. #得到随机属性装备方法:gainequip(装备ID,属性数)
  7. #~ 前缀结构:
  8. #~ ①权重(1-100) 越大越重要
  9. #~ ②名称(多个名称用","分开,会随机取其中一个添加到武器名前)
  10. #~ ③属性数组  提供两种方式:
  11. #~ 1.[属性ID,增加值]    属性ID参考说明增强脚本 增加了9号属性“极品出现率” ID为8,影响前缀的好坏 1 - 100
  12. #~ 2.与装备特性相同[code,data_id,value]  code,data_id参考说明增强脚本
  13.   @maxparamplus = 2 #最大前缀数
  14.   @moneyrate = 10 #物品价格计算公式为:原价格 + 前缀权重 * @moneyrate
  15.   @transpose = [*1..100].reverse #用于把1变成100,100变成1
  16.   @paramsplus= [           #暂时只写了三个前缀,可以自己添加,参照前缀结构

  17.   [10,"☆",[[2,50]]], #物理攻击加50
  18.   [10,"强化的",[[2,50]]] #物理攻击加50

  19.   ]
  20.   $商店随机 = true #商店买装备时出随机属性
  21.   $战斗随机 = true #战斗后获得随机属性装备
  22.   def self.getname(paramsplus)
  23.     name = ""
  24.     paramsplus.is_a?(Array) ? paramsplus.each{|a| @temp = []; a[1].scan(/^[\u4e00-\u9fa5|\w]*|,[\u4e00-\u9fa5|\w]*/){|b| @temp.push b.gsub(","){}}; name += @temp[rand(@temp.size)]} : paramsplus[1].scan(/^[\u4e00-\u9fa5|\w]*|,[\u4e00-\u9fa5|\w]*/){|b| @temp = [] if @temp == nil ;@temp.push b.gsub(","){}}
  25.     name += @temp[rand(@temp.size)] if paramsplus.is_a?(Array) != true
  26.     name += ""
  27.   end
  28.   def self.getluck #获得极品出现率
  29.     luck = 0
  30.     $game_party.all_members.each{|a| a.weapons.each{|a| luck += a.params[8] if a.params.size == 9};a.armors.each{|a| luck += a.params[8] if a.params.size == 9}}
  31.     luck
  32.   end
  33.   def self.getnewequip(xequip,params = nil) #提供两个参数  装备(RPG::Equip类下的)和附加前缀数,不填则为随机
  34.     return unless xequip.is_a?(RPG::EquipItem)
  35.     #xparamplus为前缀数
  36.     xequip.paramsplus = [] if xequip.paramsplus == nil
  37.     return if xequip.paramsplus.size >= @maxparamplus
  38.     params != nil ? xparamplus = params :  xparamplus = rand(@maxparamplus * 110) / 100
  39.     xparamplus = xparamplus.to_int
  40.     return xequip if xparamplus == 0
  41.     equip = xequip.dup
  42.     paramsplus = equip.paramsplus.dup  #无奈的方法,不这样改一个装备所有同父装备的装备都会变
  43.     newparams = equip.params.dup
  44.     newfeatures = equip.features.dup
  45.     aparamsplus = @paramsplus.collect{|a| [a[0] = @transpose[a[0]-1],a[1],a[2]]}.sort_by{|a| a[0]}
  46.     while paramsplus.size < xparamplus
  47.       temp = rand(aparamsplus[-1][0])
  48.       temp = [temp - getluck,0].max
  49.       x = []
  50.       for i in aparamsplus
  51.         x.push i if i[0] >= temp && paramsplus.include?(i) != true
  52.       end
  53.       if x != []
  54.         a = [(x.size-1)*100 - getluck,0].max
  55.         a = (rand(a)/100).to_int
  56.         paramsplus.push x[a]
  57.       end
  58.     end
  59.     equip.name = getname(paramsplus) + equip.name #更新名称
  60.     paramsplus.each{|a| equip.price += @transpose[a[0] - 1] * @moneyrate} #更新价格
  61.     paramsplus.select{|a| a[2].select{|a| a.size == 2}.each{|a| newparams[a[0]] += a[1]}} #更新属性
  62.     #以下为更新特性
  63.     features = []
  64.     paramsplus.each{|a| a[2].each{|a| features.push a if a.size == 3}}
  65.     while features.size > 0
  66.       i = features.pop
  67.       newfeatures.select{|a| a.code == i[0] && a.data_id == i[1]}.size == 0 ? newfeatures.push(RPG::BaseItem::Feature.new(i[0],i[1],i[2])) : newfeatures.each_with_index{|a,b| newfeatures[b].value += i[2] if a.code == i[0] && a.data_id == i[1]}
  68.     end
  69.     if equip.is_a?(RPG::Weapon)
  70.       equip.id = $data_weapons.size
  71.       $data_weapons.insert $data_weapons.size,equip
  72.       $data_weapons[equip.id].paramsplus = paramsplus
  73.       $data_weapons[equip.id].params = newparams
  74.       $data_weapons[equip.id].features = newfeatures
  75.     else
  76.       equip.id = $data_armors.size
  77.       $data_armors.insert $data_armors.size,equip
  78.       $data_armors[equip.id].paramsplus = paramsplus
  79.       $data_armors[equip.id].params = newparams
  80.       $data_armors[equip.id].features = newfeatures
  81.     end
  82.     equip
  83.   end
  84.   def self.gainequip(id,params = nil)
  85.     $game_party.gain_item(Equipplus.getnewequip($data_weapons[id],params),1,true)
  86.   end
  87. end
  88. if $商店随机 == true
  89.   class Scene_Shop < Scene_MenuBase
  90.     def do_buy(number)
  91.       $game_party.lose_gold(number * buying_price)
  92.       if @item.is_a?(RPG::EquipItem)
  93.         x = number
  94.         loop do
  95.           break if x <= 0
  96.           x -= 1
  97.           $game_party.gain_item(Equipplus.getnewequip(@item), 1)
  98.         end
  99.       else
  100.         $game_party.gain_item(@item, number)
  101.       end
  102.     end
  103.   end
  104. end
  105. if $战斗随机 == true
  106.   module BattleManager
  107.     def self.gain_drop_items
  108.       $game_troop.make_drop_items.each do |item|
  109.         item.is_a?(RPG::EquipItem) ? xitem = Equipplus.getnewequip(item) : xitem = item
  110.         $game_party.gain_item(xitem, 1)
  111.         $game_message.add(sprintf(Vocab::ObtainItem, xitem.name))
  112.       end
  113.       wait_for_message
  114.     end
  115.   end
  116. end
  117. class RPG::EquipItem < RPG::BaseItem
  118.   alias old initialize
  119.   def initialize
  120.     old
  121.     @paramsplus  #前缀
  122.   end
  123.   attr_accessor :paramsplus
  124. end
复制代码

Lv2.观梦者

梦石
0
星屑
805
在线时间
173 小时
注册时间
2008-11-22
帖子
112
2
发表于 2012-2-24 17:49:01 | 只看该作者
修改26行的正则表达式,我当时也想到了这一点,不过技术有限没写出来
又不知道干什么好了。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
400 小时
注册时间
2005-10-24
帖子
634
3
发表于 2012-2-24 18:10:54 | 只看该作者
http://oniguruma.rubyforge.org/oniguruma/files/Syntax_txt.html

Character Properties
\p{property-name}
\p{^property-name}    (negative)
\P{property-name}     (negative)
property-name:
Works on all encodings:

Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII,
Works on EUC_JP, Shift_JIS:

Hiragana, Katakana
Works on UTF8, UTF16, UTF32:

Any, Assigned, C, Cc, Cf, Cn, Co, Cs, L, Ll, Lm, Lo, Lt, Lu, M, Mc, Me, Mn, N, Nd, Nl, No, P, Pc, Pd, Pe, Pf, Pi, Po, Ps, S, Sc, Sk, Sm, So, Z, Zl, Zp, Zs, Arabic, Armenian, Bengali, Bopomofo, Braille, Buginese, Buhid, Canadian_Aboriginal, Cherokee, Common, Coptic, Cypriot, Cyrillic, Deseret, Devanagari, Ethiopic, Georgian, Glagolitic, Gothic, Greek, Gujarati, Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hiragana, Inherited, Kannada, Katakana, Kharoshthi, Khmer, Lao, Latin, Limbu, Linear_B, Malayalam, Mongolian, Myanmar, New_Tai_Lue, Ogham, Old_Italic, Old_Persian, Oriya, Osmanya, Runic, Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tamil, Telugu, Thaana, Thai, Tibetan, Tifinagh, Ugaritic, Yi

点评

偶......偶......偶是语法盲的说......  发表于 2012-2-24 20:31
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
121 小时
注册时间
2011-1-13
帖子
131
4
发表于 2012-2-24 19:51:03 | 只看该作者
恕我无知!叶子的怎么想vbs的蓝屏代码?恕我无知!!

点评

像蓝屏+1~ 恩 是编码问题。  发表于 2012-2-24 20:32
是ruby 1.9的正则表达式引擎oniguruma的语法文档  发表于 2012-2-24 20:27
坑:


VX脚本;易语言龟速学习中ing。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 01:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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