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

Project1

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

[原创发布] 赌命轮盘

[复制链接]

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
跳转到指定楼层
1

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

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

x
1,赌命轮盘

敌我双方同时有状态18,则血量低于50%时,有30%几率即死

RUBY 代码复制
  1. #==============================================================================
  2. # ** Game_Battler
  3. #------------------------------------------------------------------------------
  4. #  本类处理战斗者。此类作为 Game_Actor 类和 Game_Enemy 类的超类使用。
  5. #==============================================================================
  6.  
  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # * 判定即死状态 (覆盖原方法以添加自定义逻辑)
  10.   #--------------------------------------------------------------------------
  11.   alias original_slip_damage? slip_damage?
  12.  
  13.   def slip_damage?
  14.     # 首先执行原有的即死/持续伤害判定
  15.     if original_slip_damage?
  16.       return true
  17.     end
  18.  
  19.     # 自定义逻辑:检查状态 18
  20.     # 条件:
  21.     # 1. 当前战斗者拥有状态 18
  22.     # 2. 对手(如果存在)也拥有状态 18
  23.     # 3. 当前 HP < 最大 HP 的 50%
  24.     # 4. 随机数 < 30% (即 0, 1, 2 在 0-9 之间)
  25.  
  26.     if @states.include?(18)
  27.       # 获取对手引用
  28.       opponent = nil
  29.       if self.is_a?(Game_Actor)
  30.         # 如果是演员,对手通常是当前的敌人目标,这里简化为检查是否存在任意敌人也有状态18
  31.         # 在 RMXP 默认战斗中,通常是一对多或多对一,这里假设“双方”指战场上的对立阵营
  32.         $game_troop.enemies.each do |enemy|
  33.           if enemy.exist? && enemy.states.include?(18)
  34.             opponent = enemy
  35.             break
  36.           end
  37.         end
  38.       elsif self.is_a?(Game_Enemy)
  39.         # 如果是敌人,检查演员队伍中是否有状态18
  40.         $game_party.actors.each do |actor|
  41.           if actor.exist? && actor.states.include?(18)
  42.             opponent = actor
  43.             break
  44.           end
  45.         end
  46.       end
  47.  
  48.       # 如果找到了对立阵营也有状态18的单位
  49.       if opponent != nil
  50.         # 检查血量是否低于 50%
  51.         if self.hp > 0 && self.hp < (self.maxhp / 2.0)
  52.           # 30% 几率即死
  53.           if rand(10) < 3
  54.             # 设置为即死状态 (状态 ID 通常为 1,具体取决于数据库设置,这里直接扣血至0或添加即死状态)
  55.             # 更稳妥的方式是添加即死状态,让系统处理死亡
  56.             self.add_state(1) # 假设状态1是即死/战斗不能
  57.             return true
  58.           end
  59.         end
  60.       end
  61.     end
  62.  
  63.     return false
  64.   end
  65. end


2,一次性装备战斗一次就销毁

3,无法装备的装备,纪念品武器

4,偷取敌人技能为我所用

5,李代桃僵,被攻击的人不受伤,有李代桃僵状态的人受伤,或者一人分摊一半

评分

参与人数 1+1 收起 理由
azazaaz13142121 + 1 认可答案

查看全部评分

退隐....

Lv4.逐梦者

素材区好人

梦石
3
星屑
11154
在线时间
4172 小时
注册时间
2011-7-21
帖子
2528

极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

13
发表于 昨天 09:11 | 只看该作者
y967 发表于 2026-6-2 10:09
灭世轮回

# ------------------------------------------------------------------

这不就是2周目吗,我记得给你的工程中也有
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
12
 楼主| 发表于 前天 10:09 | 只看该作者
灭世轮回

RUBY 代码复制
  1. # ------------------------------------------------------------------
  2. # 脚本名称: CheckLevelAndReset.rb
  3. # 功能: 检查队伍等级,若有人大于10级,则记录TXT,删档,退出
  4. # 使用方法: 在事件中使用 "脚本" 命令,输入: check_level_and_reset
  5. # ------------------------------------------------------------------
  6.  
  7. def check_level_and_reset
  8.   # 1. 遍历角色,检查等级
  9.   level_check_passed = false
  10.   for actor in $game_party.actors
  11.     if actor.level > 10
  12.       level_check_passed = true
  13.       break
  14.     end
  15.   end
  16.  
  17.   # 2. 如果条件满足
  18.   if level_check_passed
  19.     # 设置全局变量1为10 (虽然马上要退出,但为了保险起见先设置,尽管存档会被删)
  20.     $game_variables = 10
  21.  
  22.     # 3. 记录到 TXT 文件 (使用 Game 目录下的 data 文件夹,或者根目录)
  23.     # 注意:RMXP 默认工作目录是游戏根目录
  24.     file_path = "./persistent_var1.txt"
  25.     File.open(file_path, "w") do |f|
  26.       f.write("10")
  27.     end
  28.  
  29.     # 4. 销毁所有存档
  30.     for i in 1..4 # RMXP 通常有4个存档位 Save1.rxdata 到 Save4.rxdata
  31.       save_file = "Save#{i}.rxdata"
  32.       if FileTest.exist?(save_file)
  33.         File.delete(save_file)
  34.       end
  35.     end
  36.  
  37.     # 5. 提示用户 (可选,因为马上退出)
  38.     # $game_message.add("检测到高等级角色,正在重置游戏...")
  39.  
  40.     # 6. 退出游戏
  41.     # 使用 exit 会直接关闭进程,是最彻底的退出方式
  42.     exit
  43.   else
  44.     # 如果没满足条件,可以做其他处理,这里留空
  45.   end
  46. end


脚本2,添加全局变量存储文本
RUBY 代码复制
  1. # ------------------------------------------------------------------
  2. # 脚本名称: AutoLoadVarFromTxt.rb
  3. # 功能: 在新游戏开始时,检查是否存在 persistent_var1.txt,如有则读取并赋值给变量1
  4. # 安装: 放在主脚本列表的底部,确保在 Scene_Title 之后
  5. # ------------------------------------------------------------------
  6.  
  7. class Scene_Title
  8.   # 别名原有的 new_game 命令,以便插入我们的逻辑
  9.   alias :original_command_new_game :command_new_game
  10.  
  11.   def command_new_game
  12.     # 执行原有的新游戏初始化逻辑
  13.     original_command_new_game
  14.  
  15.     # --- 自定义逻辑开始 ---
  16.     # 尝试读取持久化变量文件
  17.     file_path = "./persistent_var1.txt"
  18.     if FileTest.exist?(file_path)
  19.       begin
  20.         content = File.read(file_path).strip
  21.         if content != ""
  22.           # 将读取到的字符串转换为整数并赋值给全局变量1
  23.           $game_variables = Integer(content)
  24.  
  25.           # 可选:读取后删除文件,防止下次新游戏再次覆盖(根据需求决定)
  26.           # 如果希望每次新游戏都重置,则保留删除;如果希望永久保留直到再次被脚本覆盖,则注释掉下一行
  27.           File.delete(file_path)
  28.         end
  29.       rescue => e
  30.         # 如果读取失败(如格式错误),忽略错误,避免游戏崩溃
  31.         print("读取持久化变量失败: #{e.message}")
  32.       end
  33.     end
  34.     # --- 自定义逻辑结束 ---
  35.   end
  36. end


如果通关等级高于10级,则删除存档,重新开始,记录全局变量为10,当全局变量为10,则出生给一个提示道具,
这个道具可以降低等级一级,然后通关时再次进入地狱轮回场景,接受审判,直到等级不高于10,则进入下一场游戏正常场景,
还不知道怎么使用这个全局变量

点评

23行应该是 $game_variables[1] = Integer(content) ; 变量1就是保存的变量  发表于 前天 18:43
退隐....
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
11
发表于 3 天前 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-6-1 16:52 编辑

3, 类似这招吧



元素之灵是该角色的特色能力, 技能组是围绕它来设计的


使用属性魔法后, 就会在UI上保留"元素之灵"


然后, 根据元素之灵的组合, 使用"元素聚变"这招时, 就会变成另外技能, 因为一般要3回合才能使用(2回合凑牌, 笑), 所以技能效果很强力 , 7种属性互相组合出的技能如下


点评

行走图,战斗图,地图,剧情是89做的, 我只负责脚本和设计  发表于 3 天前
真有毅力啊,毅力帝,这NPC的行走图也是腻弄的?有什么好办法,腻自己画的?别告诉腻是全能帝  发表于 3 天前
咱只挖坑不埋, 笑, 89的这个也是做了十几年了,我给他设计的这些技能都是5年前的了, 摊手  发表于 3 天前
这么说腻年轻时好像更厉害啊,都设计了什么游戏,我去玩玩,学习学习,免费的,收费的不要  发表于 3 天前
我设计的战棋是有400个角色 58个职业哦, 想折腾这么多的"特色",脑洞小怎么玩, 笑, 不过如今老了, 脑洞不如前了,设计上卡住了, 摊手  发表于 3 天前
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
10
发表于 3 天前 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-6-1 16:29 编辑

2.类似这些"契约系"技能吧



继承合约: 给自己以外的友方一个状态, 当一方挂掉的时候, 剩余的TP和MP都会加给对方

互不攻击协议: 给目标一个状态, 持有这个状态的敌人如果攻击自己, 就会"违约",然后受到2倍伤害的反伤,同时附带 [丢脸]debuff(四维降低5%) ,当然, 如果自己攻击该敌人也一样"违约" 笑

不耗蓝协议: 给全场一个状态, 如果有出现消耗MP的行为, 那就"违约", 终止行动且当前MP减半

死斗宣言: 2回合内,全场任何恢复技能和药品都禁止使用

不设防宣章: 2回合内, 全场防御和魔防为0

这类的技能特点是: 效果不是立即出现, 而是通过特定行为触发的.效果也比较强力, 自己不留心也会中招, 当然, 因为参考的是"美国", 所以当然己方会有各种手段"双标", 也不算自爆技, 笑

而且, 像互不攻击协议,不耗蓝协议这种, 敌人是有概率会"异议"的(逆转裁判梗), 所以也不是能随心所欲的用, 笑








点评

协议解除当然敌人也一起解除, 我可不会把强力效果的技能这么容易使用, 笑  发表于 3 天前
腻换人了,敌人还生效,腻够可以的  发表于 3 天前
而且我可以战斗换人,换下场协议就作废了,等于想什么时候取消是玩家自己决定, 所以才说,不至于变"自爆技", 笑  发表于 3 天前
重点是"双标", 禁止恢复,但是我有众多被动系能力回血,也有"调合"这种来绕过技能检测,笑  发表于 3 天前
不耗蓝做法和保命符差不多, 互不攻击和反伤的做法差不多, 禁止恢复需要改技能使用判断, 不设防状态做就行了  发表于 3 天前
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
16860
在线时间
4199 小时
注册时间
2013-7-18
帖子
2679
9
 楼主| 发表于 3 天前 | 只看该作者
1,大姐姐的爱

奶你等于毒死你,毒奶,不不,是奶你,还要让你中毒,只对18号叛变者有效,其他人就是正常的奶,配合叛变者使用

2,真心话大冒险

技能弹出真心话,如果敌人答错了,就会造成伤害,随机数好了,反正敌人没有智力,没那么简单,一旦答对了呢,你偷看过寡妇洗澡吗,

那你怎么知道河里不深的,答对两次就得放大招了,诡计而已,答题是一个噱头,组合法才是精髓

3,天工开物

好吧,祭出一点好玩的,12个符/咒/图腾,组合法,打出三个一组,组成一个阵法,效果是攻击阵或防御阵,自定,敌人也有效,比如敌人也打出猛攻阵的时候,我方才打出两个符,可以临时组成防御阵,前两个符定属性,威力,比如火,2,第三个定是攻击/防御/速度,就灵活机动。如果简单点,直接打出攻击或防御也可以。也可以是一个机关图,可以做动画,每个做一个,三个做一个组合动画显示机关/图腾巧妙,出现组合图。

4,公平决斗

战斗时,强制攻防双方的速度差距不超过10,其他就不动了,毕竟CP制很吃速度的,先手一方优势很大,经常打不到人几个回合下来就失去平衡了
退隐....
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
8
发表于 3 天前 | 只看该作者


技能伤害固定数值随机, 不如倍率随机, 这样一样"赌脸" ,但是又有成长性, 不至于前期SL高数值秒天秒地, 后期就算给你高数字也是抓痒成为鸡肋

我这招加了个暗门, 每场战斗第一次用只会在50-120%之间随机, 免得给人的感觉太超模或者太废

点评

这些是我给89的角色设计的,这个角色职业是类似外交官一样的商人,所以技能组是以美国的国际形象来设计的, 笑  发表于 3 天前
当然不是临时做的, 实际上你的那些脑洞大部分我都有类似效果,笑,这种效果默认XP就可以实现,把分散度写100就差不多是这种了  发表于 3 天前
战力投资和战力梭哈又是什么鬼,你脑洞也不少啊,难道是每次存储变量,到几千就一次性释放  发表于 3 天前
逢五逢三又是什么幺蛾子,莫不是我新脑洞的随机数效果,不过我加了复杂机制变成组合放大招了 hiahiahia....  发表于 3 天前
草,你是临时做的,牛啊,这样确实解决了一个平衡的问题,暗门怎么做呢  发表于 3 天前
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
7
发表于 3 天前 | 只看该作者
偷技能, 偷技能本身很容易做, 主要是设计问题,  如果你的技能绑定了角色动作表演, 那当然不能给别人用, 这种技能就偷不了

还有一些特殊效果的技能没有针对双方处理(比如你之前搞的一堆只限定角色使用的技能, 笑),这类的当然也不能给敌人或者我方偷

所以, 想玩偷技能, 要么限定只有某些技能能偷(青魔法), 要么所有技能都做好考虑敌我双方都能用的情况(百变怪), 要么,去做AB技能,相同名字的技能区分敌我双方

而选择做青魔法, 而且还是"用主动技能来偷', 那只要用技能的公共事件去用 受方.id == XXX 去搞一堆分歧就行了, 如果要像FF那样挨到特定技能才能学会, 那就做AB技能, 给每个可以学的敌人技能里附带公共事件, 里面判断 受方.id == 指定角色 时,给他学会技能

点评

目前我做的技能是AB技能,敌人掉落的秘籍是敌人本来就有的,笑,就是伤害还比敌人强一些,这样就不算偷了,算高仿,笑,因为要8回合击败才掉的  发表于 3 天前
AB技能嘛, 黑化强十倍, 洗白弱八分 是ACE界规则, 笑  发表于 3 天前
这个还是弃坑了吧,一般BOSS技能都强大,我方属于被压制方,平衡不好做。  发表于 3 天前
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
41773
在线时间
5970 小时
注册时间
2006-11-10
帖子
6962
6
发表于 3 天前 | 只看该作者
本帖最后由 灯笼菜刀王 于 2026-6-1 10:38 编辑

赌命轮盘的效果不应该是这样的么





纯事件就可以做, 不需要状态,而且还能加上转盘表演等

技能目标为无, 动画A摆个pose, 然后公共事件

先随机一个变量A, 它就是轮盘指针,  然后, 拿另一个变量B获取场上的人员

脚本: $game_variables[10086]=($game_party.actors +
$game_troop.enemies).find_all{|i| i.exist?}

这样变量B就是场上所有存活的人的数组

想直接得到结果, 那直接用脚本

a = $game_variables[10085]
b = $game_variables[10086]
c = b[c % b.size]
c.add_state(1)
c.animation_id = 10086

想表演一下轮盘转动, 那就要用到循环和等待了, 然后在准备个变量C, 让C = A, 然后每一次循环都让变量C-1, 然后

c = $game_variables[10087]
b = $game_variables[10086]
d = b[a % b.size]
d.animation_id = 10087

d 就是当前指针所指向的目标, 给它播放一个没中的动画, 直到变量C <= 0 ,退出循环, 然后调用之前的命中脚本, 这就是我上面的GIF表演效果

※ 不建议直接用1号状态作为即死状态, 去新建个其他的状态, 把当做HP为0勾起来, 用它作为即死状态比较好, 因为1号状态是系统默认死亡状态, 如果免疫它, 那就永远死不掉了, 笑

点评

就是个彩蛋嘛,轮盘就是彩蛋,你怎么可能成为主攻技能呢,增加点元素而已  发表于 3 天前
那一样没考虑平衡,打小怪直接普通技能秒不就行了, 赌脸图啥呢,发动条件苛刻命中率不高,效果又要看脸的技能, 和辣鸡又有啥区别, 笑  发表于 3 天前
BOSS都是几万血,考虑几千零头,不太有必要,基本出这个数字伤害就是中期了,BOSS都是大几万血,主要是对付小怪的一点奖励  发表于 3 天前
当然BOSS要区别对待啦,主要是对小怪的,一个彩蛋效果,不作为主要攻击方式,不然就会无限SL不用玩了,而且这种技能发动条件苛刻,命中率也不高  发表于 3 天前
而你那个随机伤害的,如果用固定伤害,那一样也是打BOSS开场来一发,没随到高伤害就SL重来, 这方面的平衡你可没考虑呦, 笑  发表于 3 天前
回复 支持 反对

使用道具 举报

Lv4.逐梦者

素材区好人

梦石
3
星屑
11154
在线时间
4172 小时
注册时间
2011-7-21
帖子
2528

极短27参与极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

5
发表于 4 天前 | 只看该作者
本帖最后由 无忧谷主幻 于 2026-5-31 11:31 编辑
y967 发表于 2026-5-31 10:34
1,共情者/高阶共情者

会给与别人同情的角色,类似于奶妈又不是,圣骑,对,圣骑,牺牲自我50%血量,给同 ...


1,扣除1号角色现有hp的50%,并给其他角色增加扣除的hp量
RUBY 代码复制
  1. actor_main = $game_party.actors[0]
  2. return if actor_main.nil? || actor_main.dead?
  3. # 计算转移HP量:1号角色当前HP的50%,保底1点
  4. transfer_hp = (actor_main.hp * 0.5).to_i
  5. transfer_hp = [transfer_hp, 1].max
  6. # 1号角色扣血
  7. actor_main.hp -= transfer_hp
  8. # 其他存活队员加等量HP
  9. for actor in $game_party.actors
  10.   next if actor == actor_main || actor.nil? || actor.dead?
  11.   actor.hp = [actor.hp + transfer_hp, actor.maxhp].min
  12. end

2,加上给敌方也恢复hp的判断即可
RUBY 代码复制
  1. # 敌方全体存活敌人,加等量HP
  2. for enemy in $game_troop.enemies
  3.   next unless enemy.exist? # 仅给存活的敌人生效,跳过已死亡/不存在的
  4.   enemy.hp = [enemy.hp + transfer_hp, enemy.maxhp].min
  5. end

4,这不是纯事件就能做吗,其实之前2个也是纯事件就可以做

点评

因为伤害公式会在动画表演之前,所以想让伤害在动画之后,就要给它个开关, damage_pop就是这个开关,动画表演之后打开才会显示伤害  发表于 3 天前
damage_pop就是让伤害显示出来的意思是吗,感觉了有存储伤害,对象方,使用方,然后显示伤害,就可以做很多套路出来,加上一点条件判断  发表于 3 天前
除了分担伤害外, 其他技能效果全部可用事件做  发表于 3 天前
对象.damage = XXXX ; 对象.damage_pop = true 就是显示伤害, 默认事件里的伤害处理也会显示伤害  发表于 3 天前
应该有弹出伤害数字的方法,彩虹神剑都有  发表于 4 天前
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-4 11:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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