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

Project1

 找回密码
 注册会员
搜索

录了一小段dlsite的gif

查看数: 4792 | 评论数: 13 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-27 23:39

正文摘要:

感觉很可爱,于是我录了一段。 动作片CG就别提了,我看了一下视频,动作挺多而且还是挺流畅的,绘制精细度也不是很高,不是看上去明显画不出来那种,我觉得气氛渲染挺到位的,看介绍视频,就能感觉到很沉重,下雨 ...

回复

灯笼菜刀王 发表于 2018-4-30 13:47:45
本帖最后由 灯笼菜刀王 于 2018-4-30 16:24 编辑
89444640 发表于 2018-4-30 10:55
听上去可行,不过……后面的一大串脚本,可能会有刷新的地方。
我一个一个试,然后挨个报错吧……?


无可奈何的连贴

发现个小BUG,普通攻击咱是用1弹来写的,虽然提供了复数方法, 不过没有针对复数的情况

修复BUG顺便加上用HELP窗口提示残弹,

最后面普通攻击那部分,把红色的替换成下面这段就好了

        if @active_battler.残弹 >= 0
          if @active_battler.残弹 < WEAPON_AMMO[@active_battler.weapon_id][1]
            $game_system.se_play($data_system.buzzer_se)
            @window_help.set_text("弹药不足",1)
            return
          else
            a = WEAPON_AMMO[@active_battler.weapon_id][0]
            $game_variables[a] -= WEAPON_AMMO[@active_battler.weapon_id][1]
            @window_help.set_text("还剩"+ $game_variables[a].to_s + "发",1)
          end
        end

点评

好的,我一点点试着来。  发表于 2018-4-30 13:57
灯笼菜刀王 发表于 2018-4-30 11:25:55
本帖最后由 灯笼菜刀王 于 2018-4-30 16:23 编辑
89444640 发表于 2018-4-30 10:55
听上去可行,不过……后面的一大串脚本,可能会有刷新的地方。
我一个一个试,然后挨个报错吧……?


厚颜无耻的连贴

咱采用的方法是

让你要子弹的武器和指定的变量相关联, 也就是说 ,这个变量就是你这把武器的装弹数,你可以给变量起武器的名字方便识别。

栗子,沙漠之鹰和11号变量关联,那这个11号变量就是沙漠之鹰的装弹数。给沙漠之鹰装弹的时候,子弹就已经消耗掉了,装到11号变量里了, 所以N把武器用同样的子弹也没影响,各自装自己的,碰到子弹不够的话,“满弹”是随机装填的=。=,因为哈希表没有顺序~

点评

同样的,要把子弹取出来的话,就直接操作子弹获得这个变量的数量,然后让变量=0.  发表于 2018-4-30 11:47
所以可以用事件做个“改造效果”,让某把枪的装弹数临时突破上限=,=  发表于 2018-4-30 11:45
还有扩展用法,因为装弹上限是“装弹”的时候限制的,如果直接操作变量,那是可以突破这个上限的=。=  发表于 2018-4-30 11:44
灯笼菜刀王 发表于 2018-4-30 11:13:25
89444640 发表于 2018-4-30 10:55
听上去可行,不过……后面的一大串脚本,可能会有刷新的地方。
我一个一个试,然后挨个报错吧……?


只要不是“不同的人同时相同ID的武器”就不会有问题,也就是说你枪械类武器一种只有一把的话就完全没有副作用。

相同弹药也没关系。

残弹变量 =>[装填上限,需要的道具ID]  只要这个需要道具的ID设置相同的就是用同一种弹药装填了。

点评

没用框框起来的那些,是让你自己找到你脚本里的这部分添加红色的句子就好了,因为这些地方你肯定有重复定义过了,所以直接里面改就不会冲突。  发表于 2018-4-30 11:17
至于脚本一大串,其实咱就只定义了3个方法,而且肯定不会撞车的(真有人和我一样用汉字还撞车的,咱就纳了他=。=)  发表于 2018-4-30 11:16
哦~这个肯定不同,因为攻击动画实在哎武器上的,所有角色武器都不通用。  发表于 2018-4-30 11:14
灯笼菜刀王 发表于 2018-4-30 01:17:47
本帖最后由 灯笼菜刀王 于 2018-4-30 01:44 编辑

理直气壮的连贴

其实SailCat前辈的技能依赖1.2里就已经可以实现你要的基本效果了

具体做法 :  第一步,先"填弹".  让技能和变量勾搭.  在你要填弹的技能备注#的后面补上 cv={1=>5} 表示使用这个技能要消耗1号变量5点.变量数值不够不让使用, 你的目标3就实现了.

这样1号变量就是这个技能/武器的残弹.

---------------------------------------------------------------------------------
然后就是把它显示出来, 到 window_skill,

  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y, bitmap, Rect.new(0, 0, 32, 32), opacity)
    self.contents.draw_text(x + 32, y, 204, 32, skill.name, 0)
    self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
   if skill._cv != nil
      a = skill._cv.keys[0]
      self.contents.draw_text(x + 200, y, 80, 32, "残弹" + $game_variables[a].to_s, 2)
  end

  end
填上红色的部分就OK, 位置可以自己调整,   只要有"填弹"的技能, 就会显示出这个, 没设置填弹不显示.

上面蓝色的那句是"SP消耗" 如果你的热兵器不消耗SP,那可以把上面红色句子改造下
if skill._cv != nil
   XXXXX
else
  蓝色句子移到这里来
end
这样显示残弹就不显示SP了.

------------------------------------------------------------------------------
然后, 塞上这个脚本, 用汉字当做函数名的应该就不会冲突了吧~~~
RUBY 代码复制
  1. WEAPON_AMMO = {10 => [1,1], 28 => [99,5]} # 武器ID => [残弹变量, 普通攻击消耗的子弹数量]
  2. MAX_AMMO = {1 =>[10,100], 2 =>[30,101]} # 残弹变量 =>[装填上限,需要的道具ID]
  3. class Game_Actor < Game_Battler
  4.   def 残弹
  5.     if WEAPON_AMMO[@weapon_id] != nil
  6.       return $game_variables[WEAPON_AMMO[@weapon_id][0]]
  7.     else
  8.       return -1
  9.     end
  10.   end
  11.   def 上弹
  12.   if WEAPON_AMMO[@weapon_id] != nil
  13.     a = WEAPON_AMMO[@weapon_id][0]
  14.     b = $game_party.item_number(MAX_AMMO[a][1])
  15.     if $game_variables[a] < MAX_AMMO[a][0] && b > 0
  16.       $game_party.lose_item(MAX_AMMO[a][1], [MAX_AMMO[a][0]-$game_variables[a],0].max)
  17.       $game_variables[a] = [MAX_AMMO[a][0],b].min
  18.       $game_variables[50] = "子弹装填完毕"
  19.     elsif b <= 0
  20.       $game_variables[50] = "子弹不足"
  21.     elsif $game_variables[a] >=  MAX_AMMO[a][0]
  22.       $game_variables[a] =  MAX_AMMO[a][0]
  23.       $game_variables[50] = "子弹已经满了"
  24.     end
  25.   else
  26.     $game_variables[50] = "这个武器没办法装子弹"
  27.   end
  28. end
  29. end
  30. def 满弹
  31.   for i in MAX_AMMO.keys
  32.    a = $game_party.item_number(MAX_AMMO[i][1])
  33.    if $game_variables[i] < MAX_AMMO[i][0] && a > 0
  34.     $game_party.lose_item(MAX_AMMO[i][1], [MAX_AMMO[i][0]-$game_variables[i],0].max)
  35.     $game_variables[i] = [MAX_AMMO[i][0],a].min
  36.    end
  37.   end
  38. end


WEAPON_AMMO = {10 => [1,1], 28 => [99,5]} # 武器ID => [残弹变量, 普通攻击消耗的子弹数量]
MAX_AMMO = {1 =>[10,100], 2 =>[30,101]} # 残弹变量 =>[装填上限,需要的道具ID]

在这里设置武器对应的变量和要使用的弹药就可以了, 按格式, 把要新加的组合塞进大括号里

那个随便弹药都能用的炮先别管......
-----------------------------------------------------------
然后就是用法

要补充满弹药, 就脚本写 满弹 就好了,注意别用繁体... 可以事件脚本用,也可以塞到任意脚本里.

比如战斗结束后,

  #--------------------------------------------------------------------------
  # ● 战斗结束
  #     result : 結果 (0:胜利 1:失败 2:逃跑)
  #--------------------------------------------------------------------------
  def battle_end(result)
    # 清除战斗中标志
    $game_temp.in_battle = false
    # 清除全体同伴的行动
    $game_party.clear_actions
    # 解除战斗用状态
    for actor in $game_party.actors
      actor.remove_states_battle
    end
    # 清除敌人
    $game_troop.enemies.clear
    # 调用战斗返回调用
    if $game_temp.battle_proc != nil
      $game_temp.battle_proc.call(result)
      $game_temp.battle_proc = nil
    end
    # 切换到地图画面
    满弹
    $scene = Scene_Map.new
  end

这样战斗结束自动补满弹药.

要单独补子弹.  就用事件脚本  $game_actors[编号].上弹  这样就给装备的武器补子弹了.  提示用默认的50号变量, 要改的话就到脚本里改编号就行, 比如最简单最绿色的  显示对话: \V[50]  

$game_actors[编号].残弹,   这个可以用来得到所持武器的残弹量, 没子弹设置的话,得到的是 -1.

最后, 普通攻击消耗弹药, 没子弹的时候, 选择攻击会一直提示错误音效

找到这个地方,  默认脚本是在 scene battle3里
  #--------------------------------------------------------------------------
  # ● 刷新画面 (角色命令回合 : 基本命令)
  #--------------------------------------------------------------------------
  def update_phase3_basic_command
    # 按下 B 键的情况下
    if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 转向前一个角色的指令输入
      phase3_prior_actor
      return
    end
    # 按下 C 键的情况下
    if Input.trigger?(Input::C)
      # 角色指令窗口光标位置分之
      case @actor_command_window.index
      when 0  # 攻击
       if @active_battler.残弹 >= 0
          if @active_battler.残弹 == 0
            $game_system.se_play($data_system.buzzer_se)
            return
          else
            a = WEAPON_AMMO[@active_battler.weapon_id][0]
            $game_variables[a] -= WEAPON_AMMO[@active_battler.weapon_id][1]
          end
        end

        # 演奏确定 SE
        $game_system.se_play($data_system.decision_se)
        # 设置行动
        @active_battler.current_action.kind = 0
        @active_battler.current_action.basic = 0
        # 开始选择敌人
        start_enemy_select
      when 1  # 特技

塞上红色部分即可
灯笼菜刀王 发表于 2018-4-29 21:41:07
本帖最后由 灯笼菜刀王 于 2018-4-29 22:06 编辑

都没考虑UI就风风火火开搞了啊....  

参考咱的


咱是以装备来决定残弹量(弹耗就是SP啦),  炮的是耐久度(装备自身属性), 攻击会消耗耐久, 耐久会多方面耗损, 比如中破大破的时候,舰装会因此受损.可能导致炮报废,.  耐久不满的炮卸下来会直接消失=v=, 可以修理.

快修是消耗品, 使用会消耗持有数量.  装备的时候, 就是从仓库扣去最大携带数量, 如果数量不够,就是有多少装多少

舰载机和快修一样,区别是舰载机的消耗是看挨打方的防空能力和双方的制空权来决定耗损量, 装备后要消耗航空铝来补充数量, (数量根据角色装备格子的搭载量决定,  图上因为不是航母,所以舰载机很少,其实现实中驱逐舰也是搭不了舰载机的啦, 要测试咱就先允许驱逐舰拥有搭载量了 =.=)

以上就是咱的残弹系统

然后看你的,  

1, 需要在战斗中切换武器才能使用不同类型的枪械技能,不消耗回合,若实现有难度可消耗回合。

这里可以用, 技能附带公共事件解决, 使用这个技能后,切换武器(至于武器的属性对技能影响, 因为武器是固定的,大可设置成这个技能不吃武器属性, 威力相应调整)

2,部分武器可装填多种类型子弹,主要针对榴弹发射器。若实现有难度就把这武器取消。

多种类型子弹如何体现?  ①只要持有它可以用的子弹,那就可以使用它.  这个用or就能搞定.  ②装备不同子弹有不同效果, 这个有两种方式,,一,战斗前决定武器装填, 用 子弹附带公共事件,菜单使用解决,  二,战斗中选择技能后,在选择子弹, 不同子弹释放不同技能.  这个效果比较麻烦些,考虑到你的全动画脚本不好兼容... 还是算了= =, 或者战斗中的公共事件能用"选择项"么? 能的话就弹个对话框, 选择项, 然后XX的时候放XX技能.....

3,没子弹了后者当前残弹量不够,技能不能选择,显示为灰色,普通攻击也不能选择,若选择普通攻击,则以文字“弹药不足”作为提示。

这个只需要到skill_can_use? 添加一下判断就行. 普通攻击的话,  两种都可以, 不过考虑到全动画脚本, 就用"不能选择"比较合适, 否则一边显示"弹药不足",一边放攻击动画就那啥了.....

4,子弹不满的情况下,战斗中可消耗回合装填。只填装当前所持武器的。没有该武器的子弹时候不装填,以文字“弹药不足”作为提示

这个只要做个技能, 战斗中使用, 引用公共事件就行

5,战斗结束后若有消耗会自动装填子弹到最大值,若数量不够装满,有多少装多少。

这个战斗结算的时候添加就行.

------------------------------------------

最主要的是储存方法,  你是只有主角用到枪吧, 也就是不需要考虑"两个人都装备火箭筒, 残弹不同" .  那就用全局变量来保存残弹就好了. 省得什么属性能力上限脚本等来捣乱.....

然后是显示, 技能可以用我的方法, 到技能栏里追加描绘就行了,  主要是普通攻击..... 没地方显示干脆不显示了, 没子弹了就不能普攻, 想看残弹打开技能栏看.  

后面的脑洞技能, 用加菲斑竹的那个"战斗5个地方公共事件调用"就可以实现不少~ 而且这个脚本也能实现你的第一个, 先换武器再用技能 以及第二个, 先选择子弹种类再用技能
chd114 发表于 2018-4-28 23:08:46
原来你喜欢巨乳而且有乳摇的啊(滑稽)

点评

( ′◔ ‸◔`)  发表于 2018-4-29 20:19
其实LZ只是看中兽耳..  发表于 2018-4-29 13:10
不引人注意悄咪咪摸到背后,拍拍肩膀,低声说道“传颂之物了解一下?”(逃  发表于 2018-4-29 09:50
原来大佬也喜欢兽耳……  发表于 2018-4-29 09:49
我关注点在耳朵^_^  发表于 2018-4-29 06:22
89444640 发表于 2018-4-28 15:58:29
本帖最后由 89444640 于 2018-4-28 16:09 编辑
灯笼菜刀王 发表于 2018-4-28 15:45
反重力裙子什么的已经是二次元常识,无需解释。加个动作还算掩耳盗铃了,按住前面后面也一样飘 ...


这个又要提到脚本问题来了,不是我没画,是程序不支持,就不用提供证据链吧,像素区翻我老帖子能翻出来,两段跳第二段完整动作8帧,比这个流畅多了,脚本要是修成其他帧数,副作用群体动作都得修成8帧包括npc,光默认npc就将近100个,只能缩帧了,还有就是跑动,同样8帧,无奈程序不能同时支持两种,只能缩成4帧。

而且你4帧就4帧吧,还不能好好给我顺序播放停到最后一帧……
这个其实多少有点带血轮玛利亚的风格,翅膀有光点。血轮玛利亚的是第二段脚下四个光点然后前空翻,图形版月下,玛利亚是三段跳,恶魔城系列三段跳仅此一家,夏洛特是变出扫帚,夏姐是……用腿硬甩过去。
所以综合考虑还是 阿鲁卡多少爷的合适。这个磨导器地图有显示,是个4帧循环的大黑翅膀。

本来是预计程序能修成横向排列随便多少帧数都行的,结果冲突巨大,只能忍了。

两段跳后两个斜角一个直下的踩都画出来了,程序弄不出来,也是只能剧情看片用……

还有个不想修的bug,空中接触金币什么的事件时候几率角色给刷没了,反正我也修不了,就这样吧,弄完了谁有本事给修好,该给钱给钱就行了。

点评

我单起一个说明吧。  发表于 2018-4-29 18:13
事件改行走图的看到一个,DOT・ダークアウトトリガー,RMXP做的,动作明显是4帧,人家4帧就能用我这画14帧还多,而且有射击和子弹消耗。  发表于 2018-4-29 18:03
子弹消耗其实就差一哆嗦了,数据库备注接口V2.1 技能消耗依赖V1.2 能等到更新下个版本就肯定能用了。可是程序作者……  发表于 2018-4-29 17:58
还有子弹消耗, 感觉不算难把, 要什么样的效果说来听听,或许咱可以解决.  发表于 2018-4-29 13:11
嘛, 剧情可用的意思是,可以用事件改变行走图表现? 如果这样的话,那加个并行事件用来判断按键组合, 然后切换行走图动作不行么?  发表于 2018-4-29 13:08
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-14 23:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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