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

Project1

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

[已经过期] 如何在脚本中添加技能的效果?比如,脚本中编写添加状态

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2012-1-21
帖子
67
跳转到指定楼层
1
发表于 2012-2-8 03:13:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

就像:
  1.       if skill.element_set.include?(45)
  2.        if rand(100) < 75
  3.          self.damage *= 10 / 5
  4.        else
  5.          self.damage /= - 2 / 1
  6.         end
  7.       end
复制代码
这样。有75%几率造成双倍伤害。有25%几率给敌人回复双倍血量。

我的问题是:如果我要做:75%给敌人添加1号状态,且造成伤害固定 100   ;25%几率 给敌人添加 2号 状态 ,且造成固定伤害100。

其实,看着很复杂,造成固定伤害很简单啊。
是不是就这样?
  1.       if skill.element_set.include?(45)
  2.        if rand(100) < 75
  3.          self.damage = 100      
  4.              else
  5.          self.damage = 200
  6.         end
  7.       end
复制代码
问题就是如何在脚本中编写添加状态呢??

最后感谢每一位有心帮助我的人!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
498 小时
注册时间
2011-5-23
帖子
73
2
发表于 2012-2-8 13:04:01 | 只看该作者
$data_states[编号]
回复

使用道具 举报

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
3
发表于 2012-2-8 14:40:42 | 只看该作者
  1.   #--------------------------------------------------------------------------
  2.   # ● 附加状态
  3.   #     state_id : 状态 ID
  4.   #     force    : 强制附加标志 (处理自动状态时使用)
  5.   #--------------------------------------------------------------------------
  6.   def add_state(state_id, force = false)
复制代码

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2012-1-21
帖子
67
4
 楼主| 发表于 2012-2-8 16:19:53 | 只看该作者
Wind2010 发表于 2012-2-8 14:40

大神可否说的详细一点。。比如 1号属性,75%给敌人+1号状态,25%无效果。。感恩。。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
57 小时
注册时间
2009-7-9
帖子
124
5
发表于 2012-2-8 20:53:45 | 只看该作者
  1. def add_state(state_id, force = false)
  2.     if rand(99)<25 and state_id == 1
  3.       return
  4.     end  
  5.     # 无效状态的情况下
  6.     if $data_states[state_id] == nil
  7.       # 过程结束
  8.       return
  9.     end
  10.     # 无法强制附加的情况下
  11.     unless force
  12.       # 已存在的状态循环
  13.       for i in @states
  14.         # 新的状态和已经存在的状态 (-) 同时包含的情况下、
  15.         # 本状态不包含变化为新状态的状态变化 (-)
  16.         # (ex : 战斗不能与附加中毒同时存在的场合)
  17.         if $data_states[i].minus_state_set.include?(state_id) and
  18.            not $data_states[state_id].minus_state_set.include?(i)
  19.           # 过程结束
  20.           return
  21.         end
  22.       end
  23.     end
  24.     # 无法附加本状态的情况下
  25.     unless state?(state_id)
  26.       # 状态 ID 追加到 @states 序列中
  27.       @states.push(state_id)
  28.       # 选项 [当作 HP 0 的状态] 有效的情况下
  29.       if $data_states[state_id].zero_hp
  30.         # HP 更改为 0
  31.         @hp = 0
  32.       end
  33.       # 所有状态的循环
  34.       for i in 1...$data_states.size
  35.         # 状态变化 (+) 处理
  36.         if $data_states[state_id].plus_state_set.include?(i)
  37.           add_state(i)
  38.         end
  39.         # 状态变化 (-) 处理
  40.         if $data_states[state_id].minus_state_set.include?(i)
  41.           remove_state(i)
  42.         end
  43.       end
  44.       # 按比例大的排序 (值相等的情况下按照强度排序)
  45.       @states.sort! do |a, b|
  46.         state_a = $data_states[a]
  47.         state_b = $data_states[b]
  48.         if state_a.rating > state_b.rating
  49.           -1
  50.         elsif state_a.rating < state_b.rating
  51.           +1
  52.         elsif state_a.restriction > state_b.restriction
  53.           -1
  54.         elsif state_a.restriction < state_b.restriction
  55.           +1
  56.         else
  57.           a <=> b
  58.         end
  59.       end
  60.     end
  61.     # 强制附加的场合
  62.     if force
  63.       # 设置为自然解除的最低回数 -1 (无效)
  64.       @states_turn[state_id] = -1
  65.     end
  66.     # 不能强制附加的场合
  67.     unless  @states_turn[state_id] == -1
  68.       # 设置为自然解除的最低回数
  69.       @states_turn[state_id] = $data_states[state_id].hold_turn
  70.     end
  71.     # 无法行动的场合
  72.     unless movable?
  73.       # 清除行动
  74.       @current_action.clear
  75.     end
  76.     # 检查 HP 及 SP 的最大值
  77.     @hp = [@hp, self.maxhp].min
  78.     @sp = [@sp, self.maxsp].min
  79.   end
复制代码

点评

Game_Battler 2 里,有个强制状态。 if rand(99)<25 and state_id == 1 return end 我也是随便写的,不知道这里是不是添加状态的路口。不好意思 04. end  发表于 2012-2-8 22:59
请发的直接一点。直接发 那个对应的属性脚本,就可以了,谢谢。。  发表于 2012-2-8 21:41
恕鄙人愚钝,是在看不懂此脚本有什么作用????  发表于 2012-2-8 21:40
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2012-1-21
帖子
67
6
 楼主| 发表于 2012-2-9 22:12:09 | 只看该作者
不知道为什么,我的想说的是,一个技能属性
  1. if skill.element_set.include?(45)

  2.        if rand(100) < 75

  3.          self.damage *= 10 / 5

  4.        else

  5.          self.damage /= - 2 / 1

  6.         end

  7.       end
复制代码
就像这样,在75%那里给敌人添加属性。。就是这么个意思。。咋写这段脚本。。

点评

看不懂。。只是,咋用啊?  发表于 2012-2-10 09:29
def add_state(state_id, force = false)←看不懂么?  发表于 2012-2-9 22:16
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 08:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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