设为首页 收藏本站
登录 /立即注册 /找回密码

URPGs

快捷导航
  • 门户Portal
  • 论坛BBS
  • 群组Group
  • 导读Guide
  • 家园Space
  • 工具Tools
  • 广播Follow
  • 期刊Periodical
  • 排行榜Ranklist
  • 社区茶坊
  • pixlr图片编辑
  • 资源列表
  • photobucket
  • RMVA Lite [In English]
  • RM RTP
  • TryRUBY
  • RMXP+RMVX下载[VeryCD]
  • RMVA下载[66RPG]
搜索
  • 本版
  • 帖子
  • 用户
URPGs»论坛 › 技术讨论 › 技术讨论 › 【新人练手】VA脑残加点系统 0.7
返回列表 发新帖
查看: 3498|回复: 1

[RMVA 技术讨论] 【新人练手】VA脑残加点系统 0.7

[复制链接]
lbq
lbq 当前离线
积分
199
查看详细资料 窥视卡 雷达卡
发表于 2013-1-8 08:02:59 | 显示全部楼层 |阅读模式
我从来没有想到一个加点都那么难

↑主要是你没有想到切换选项Enable的方法吧↑



好吧,本人第一次真正的脚本。

奉献给大家!


【明明是你上不了6R,先在这里发一下嘛。。。】

同时,也在这里求各位高手的脚本修改建议哦!


[code=ruby]#==============================================================================
# ■ VA脑残加点系统0.7版本 by LBQ
#------------------------------------------------------------------------------
#  这是一个简单的加点系统,里面界面比较粗糙,功能比较弱。
#------------------------------------------------------------------------------
#==============================================================================
#                          ■ 新人练手,大神勿喷 ■
#                         一切喷新人的习惯都是不好的
#                              十分欢迎建议哦!
#==============================================================================
# 【功能】
#  简单的加点
#  手动分配点数
#==============================================================================
# 【有待追加】
#  洗点
#  队伍菜单内嵌
#  选项消耗不同技能点(初始研发失败)
#==============================================================================
# 【使用说明】
#  呼出加点界面:
#  $id=n
#  SceneManager.call(Scene_StatDist)
#  其中n为人物数据库编号(这个脑残的方法我真的会改。。。)
#
#  手动分配点数(默认设置):
#  所有点数储存在变量50号+人物数据库编号里面,也就是说,埃里克是数据库的一号,那么他
#  的点数就储存在51号变量里面。通过变量操作(只支持进行加减法)即可。
#==============================================================================
#==============================================================================
# 【注意】
#  1:本脚本没有取消默认的升级能力提升,请自行设置
#  2:本脚本对“降级”这个设定做的处理不好,降级之后恐怕可能出现负数技能点,我也想
#     不出有什么更好的方法了。。。
#  3:本脚本默认的加点加的属性不是特别平衡,请自己修改。
#  4:本脚本的算法可能会导致在进入加点界面之前,点数都不会发生变化,请不要条件分歧
#     点数变量。那个变量是用来手动分配点数的!
#==============================================================================
#==============================================================================
# 【使用条例】
#  你拿去干什么合法的都可以,但是不要剽窃我的脚本。也不要拿来当奖励啊什么的。
#                  (↑ 别自恋了,谁会想要剽窃你的脚本!↑)
#==============================================================================

#==============================================================================
#                            ※ 特别感谢:GubiD ※
#==============================================================================

#==============================================================================
# ※ 设置模块
#------------------------------------------------------------------------------
module Lbq
  #大家干嘛都用2个module,这样很烦啊,一个不就够了吗。。。
  #但是,我还是尊重习惯
  module Sta_dist
    #点数用语↓
    VOCAB_PTS="点数:"
    #加点储存的基础数↓
    VAR_ACT=50
    #每升一级获得点数↓
    GAIN=3
    #行走图是否启动(因为功能不成熟)(貌似名字打错了。。。)↓
    FACE_ENABLE=true
    #每个选项之前的用语↓
    PRE="增加"
    #每个选项的用语↓
    VOCAB=["力量","体制","魔力","灵巧","幸运"]
    #每个选项效果:从左往右依次为:最大HP 最大MP 物攻 物防 魔攻 魔防 敏捷 幸运↓
    STA_ADD=[
    [1,0,2,0,0,0,0,0],
    [5,1,0,1,0,0,0,0],
    [0,3,0,0,1,1,0,0],
    [0,0,0,0,0,0,1,1],
    [0,1,0,0,0,0,0,2]
    ]
   
#--------------------------------------------------------------------------
# ● 注意
#    修改以下内容可能导致 头晕眼花、白内障、地中海式贫血、链状红细胞等病症。
#    严重时可导致 昏厥,休克,不孕不育等奇葩情况。
#    请谨慎修改,若出现以上病症,本人恕不负责。
#--------------------------------------------------------------------------
   
    #已经失败了的东西,不要修改!↓
    STA_COST=[1,1,1,1,1]
  end
end

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :rec_lv                     # 算法用记录变量  
  attr_accessor :rec_stapts                 # 洗点用变量(未完成)
  
  alias dist_set setup
  def setup(actor_id)
    #初始化角色记录登记
    @rec_lv=1
    dist_set(actor_id)
  end
end

class Window_StatDist < Window_Command
  def initialize(x, y)
    #奇葩的写法,我知道错了。。。
    @enable1=true
    @enable2=true
    @enable3=true
    @enable4=true
    @enable5=true
    judge
    super
  end
  def judge
    i=0
    while i<5
    if $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93; >= Lbq::Sta_dist::STA_COST&#91;i&#93;
      set_enable(i+1,true)
    else
      set_enable(i+1,false)
    end
    i+=1
    end
  end
  def set_enable(index,bl)
    case index
    #这个默认的when排列真是蛋疼。。。
    when 1
      @enable1=bl
    when 2
      @enable2=bl
    when 3
      @enable3=bl
    when 4
      @enable4=bl
    when 5
      @enable5=bl
    end
  end
  #--------------------------------------------------------------------------
  # ● 生成指令列表
  #--------------------------------------------------------------------------
  def make_command_list
    add_command(Lbq::Sta_dist::PRE+Lbq::Sta_dist::VOCAB&#91;0&#93;, :pow, @enable1)
    add_command(Lbq::Sta_dist::PRE+Lbq::Sta_dist::VOCAB&#91;1&#93;, :sta, @enable2)
    add_command(Lbq::Sta_dist::PRE+Lbq::Sta_dist::VOCAB&#91;2&#93;, :man, @enable3)
    add_command(Lbq::Sta_dist::PRE+Lbq::Sta_dist::VOCAB&#91;3&#93;, :tac, @enable4)
    add_command(Lbq::Sta_dist::PRE+Lbq::Sta_dist::VOCAB&#91;4&#93;, :luk, @enable5)
  end
end



#==============================================================================
# ■ Window_StatDisplay
#------------------------------------------------------------------------------
#  用于显示当前剩余点数的窗口
#==============================================================================
class Window_StatDisplay < Window_Base
  #下面的初始化参数十分奇葩~下次改一改。。。虽然我真的觉得没什么。。。
  def initialize(x=0, y=416-50, width=160, height=50)
    super
  end
  def update
    super
    contents.clear
    #偷懒,用这个方法
    draw_text_ex(3, 0, Lbq::Sta_dist::VOCAB_PTS+" "+$game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93;.to_s)
  end
end



#==============================================================================
# ■ Window_StatStatus
#------------------------------------------------------------------------------
#  用于显示当前角色属性的窗口
#==============================================================================
class Window_StatStatus < Window_Base
  def initialize(x=160, y=0,width=Graphics.width-160,height=Graphics.height)
    super
  end
  def update
    super
  end
  def update_data
    contents.clear
    actor=$game_actors&#91;$id&#93;
    draw_actor_face(actor, 3, 2)
    if Lbq::Sta_dist::FACE_ENABLE
    draw_character(actor.character_name, actor.character_index, 80, 96)
    end
    draw_actor_simple_status(actor, 100, 3)
    draw_equipments(215, 120)
    i=0
   
    #话说看着默认的循环看着好晕,还是while比较好理解。《=其实是你不会do循环吧~
    #绘制角色能力值
    while i < 8
    draw_actor_param(actor, 3, 120+24*i, i)
    i+=1
  end
end
  #--------------------------------------------------------------------------
  # ● 绘制装备(盗取自默认状态栏)
  #--------------------------------------------------------------------------
  def draw_equipments(x, y)
    actor=$game_actors&#91;$id&#93;
    actor.equips.each_with_index do |item, i|
      draw_item_name(item, x, y + line_height * i)
    end
  end
end




#==============================================================================
# ■ Scene_StatDist
#------------------------------------------------------------------------------
#  加点界面
#==============================================================================
# 下次我一定要用 include。。。 %>_<%
class Scene_StatDist < Scene_Base
  def start
    super
    @actor=$game_actors&#91;$id&#93;
    gain=(@actor.level-@actor.rec_lv)*Lbq::Sta_dist::GAIN
    #获得点数
    $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93;+= gain
    @actor.rec_lv=@actor.level
    create_background
    create_window
  end
  #--------------------------------------------------------------------------
  # ● 生成背景(直接盗窃默认菜单~)
  #--------------------------------------------------------------------------
  def create_background
    @background_sprite = Sprite.new
    @background_sprite.bitmap = SceneManager.background_bitmap
    @background_sprite.color.set(16, 16, 16, 128)
  end
  
  #生成窗口
  def create_window
    @stat_win=Window_StatDist.new(0,0)
    handler_set
    @display=Window_StatDisplay.new
    @stat=Window_StatStatus.new
    @stat.update_data
  end
  
  #这个纯粹是出错之后偷懒的结果
  def create_choices
    @stat_win=Window_StatDist.new(0,0)
  end
  
  #设置 handler=》方法
  def handler_set
    #设定各种选项结果
    @stat_win.set_handler(:pow,      method(:command_pow))
    @stat_win.set_handler(:sta,      method(:command_sta))
    @stat_win.set_handler(:man,      method(:command_man))
    @stat_win.set_handler(:tac,      method(:command_tac))
    @stat_win.set_handler(:luk,      method(:command_luk))
  end
  #--------------------------------------------------------------------------
  # ● 更新画面
  #--------------------------------------------------------------------------
  def update
    super
    #退出界面设定
    if Input.trigger?(:B)
      Sound.play_cancel
      SceneManager.call(Scene_Map)
    end
  end
  
  def reset_win
    @stat_win.dispose
    create_choices
  end
  
  #--------------------------------------------------------------------------
  # ● 各个选项的设置(貌似下次应该改进一下选项处理)
  #--------------------------------------------------------------------------
  def command_pow
      i = 0
    while i<Lbq::Sta_dist::STA_ADD&#91;0&#93;.length
      @actor.add_param(i, Lbq::Sta_dist::STA_ADD&#91;0&#93;&#91;i&#93;)
      i+=1
    end
    $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93;-=Lbq::Sta_dist::STA_COST&#91;0&#93;
    @cost=Lbq::Sta_dist::STA_COST&#91;0&#93;
    re_active
    return
  end
  
  def command_sta
    i = 0
    while i<Lbq::Sta_dist::STA_ADD&#91;1&#93;.length
      @actor.add_param(i, Lbq::Sta_dist::STA_ADD&#91;1&#93;&#91;i&#93;)
      i+=1
    end
    $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93;-=Lbq::Sta_dist::STA_COST&#91;1&#93;
    @cost=Lbq::Sta_dist::STA_COST&#91;1&#93;
    re_active
  end
  
  def command_man
    i = 0
    while i<Lbq::Sta_dist::STA_ADD&#91;2&#93;.length
      @actor.add_param(i, Lbq::Sta_dist::STA_ADD&#91;2&#93;&#91;i&#93;)
      i+=1
    end
    $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93;-=Lbq::Sta_dist::STA_COST&#91;2&#93;
    @cost=Lbq::Sta_dist::STA_COST&#91;2&#93;
    re_active
  end
  
  def command_tac
    i = 0
    while i<Lbq::Sta_dist::STA_ADD&#91;3&#93;.length
      @actor.add_param(i, Lbq::Sta_dist::STA_ADD&#91;3&#93;&#91;i&#93;)
      i+=1
    end
    $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93;-=Lbq::Sta_dist::STA_COST&#91;3&#93;
    @cost=Lbq::Sta_dist::STA_COST&#91;3&#93;
    re_active
  end
  
  def command_luk
    i = 0
    while i<Lbq::Sta_dist::STA_ADD&#91;4&#93;.length
      @actor.add_param(i, Lbq::Sta_dist::STA_ADD&#91;4&#93;&#91;i&#93;)
      i+=1
    end
    $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93;-=Lbq::Sta_dist::STA_COST&#91;4&#93;
    @cost=Lbq::Sta_dist::STA_COST&#91;4&#93;
    re_active
  end
  
  
  #--------------------------------------------------------------------------
  # ● 重新让窗口处于动态状态 (active),同时兼任一些很重要的工作
  #--------------------------------------------------------------------------
  def re_active
    if $game_variables&#91;Lbq::Sta_dist::VAR_ACT+$id&#93; >= Lbq::Sta_dist::STA_COST&#91;@cost&#93;
      @stat_win.set_enable(1,true)
    else
      #这个地方求大神给建议,方法超级奇葩。。。
      reset_win
    end
    @stat.update_data
    #重新active一下
    @stat_win.active = true
  end
end
#==============================================================================
#                                  ■ 最后 ■
#------------------------------------------------------------------------------
#                                感谢您的使用!
#==============================================================================[/code]



话说写起来真累啊。。。
加点, 系统

点评

Sonic1997
方括号出现故障不只一次了...原因不详...  发表于 2013-1-9 11:28
lbq
奇怪的事情发生了, 混乱的代码  发表于 2013-1-8 09:14

相关帖子

  • • 纯事件银行系统(偷工减料版)
  • • T君の神秘转轮【Ver Beta 1.20 更新】
  • • [未完成][纯事件]新·银行系统
  • • [求建议]自己一个简单的ARPG系统
  • • [渣教程][坑]银行系统
回复

使用道具 举报

  • 提升卡
  • 置顶卡
  • 沉默卡
  • 喧嚣卡
  • 变色卡
  • 抢沙发
  • 千斤顶
  • 显身卡
Sonic1997
Sonic1997 当前离线
积分
212
查看详细资料 窥视卡 雷达卡
发表于 2013-1-8 13:00:14 | 显示全部楼层
我没看懂这脚本是什么...

点评

lbq
主要是我拷贝时出现了乱码。所有方括号全部挂了。。。  发表于 2013-1-9 10:34
回复 Like Dislike

使用道具 举报

  • 显身卡
返回列表 发新帖
高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|意见反馈[feedback]| URPGs RPG Maker 游戏制作讨论

GMT+8, 2025-5-9 22:17 , Processed in 0.029648 second(s), 13 queries .

Powered by Discuz! X3.5

© 2011-2019 URPGs (Discuz! X3.4 © 2001-2019 Comsenz Inc.)

积分 0, 距离下一级还需 积分
快速回复 返回顶部 返回列表