Project1

标题: 求一个简单脚本 [打印本页]

作者: worstsheep    时间: 2008-3-28 03:22
标题: 求一个简单脚本
{/ll}本人想求一个脚本

功能很简单,就是每走一步消耗一定量的HP和SP

希望大家帮帮忙,先谢谢了{/qiang} [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 水迭澜    时间: 2008-3-28 03:44
用不着脚本的
事件并行处理判断就可以了
作者: 9244579    时间: 2008-3-28 04:56
用脚本写上移动去血也可以哦。。。。。




  1. #==============================================================================
  2. # ■ Scene_Map
  3. #------------------------------------------------------------------------------
  4. #  处理地图画面的类。
  5. #==============================================================================


  6. $actor_number = 1 #一号角色 自己可以修改
  7. $hp = 1 #走一步掉一血 自己可以修改
  8. $sp = 1 #走一步掉一法 自己可以修改



  9. #==============================================================================
  10. class Scene_Map
  11.   #--------------------------------------------------------------------------
  12.   # ● 初始化对像
  13.   #--------------------------------------------------------------------------
  14.   def initialize
  15.       @time = 0
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 主处理
  19.   #--------------------------------------------------------------------------
  20.   def main
  21.     # 生成活动块
  22.     @spriteset = Spriteset_Map.new
  23.     # 生成信息窗口
  24.     @message_window = Window_Message.new
  25.     # 执行过渡
  26.     Graphics.transition
  27.     # 主循环
  28.     loop do
  29.       # 刷新游戏画面
  30.       Graphics.update
  31.       # 刷新输入信息
  32.       Input.update
  33.       # 刷新画面
  34.       update
  35.       # 如果画面切换的话就中断循环
  36.       if $scene != self
  37.         break
  38.       end
  39.     end
  40.     # 准备过渡
  41.     Graphics.freeze
  42.     # 释放活动块
  43.     @spriteset.dispose
  44.     # 释放信息窗口
  45.     @message_window.dispose
  46.     # 标题画面切换中的情况下
  47.     if $scene.is_a?(Scene_Title)
  48.       # 淡入淡出画面
  49.       Graphics.transition
  50.       Graphics.freeze
  51.     end
  52.   end
  53.   #--------------------------------------------------------------------------
  54.   # ● 刷新画面
  55.   #--------------------------------------------------------------------------
  56.   def update
  57.     # 走动掉血
  58.         @time += 1
  59.         for i in 0...$game_party.actors.size
  60.           if $game_player.moving?
  61.             if @time >= 8
  62.             $game_actors[$actor_number].hp -= $hp
  63.             $game_actors[$actor_number].sp -= $sp
  64.             @time = 0
  65.           end
  66.         end
  67.       end
  68.     # 循环
  69.     loop do
  70.       # 按照地图、实例、主角的顺序刷新
  71.       # (本更新顺序不会在的满足事件的执行条件下成为给予角色瞬间移动
  72.       #  的机会的重要因素)
  73.       $game_map.update
  74.       $game_system.map_interpreter.update
  75.       $game_player.update
  76.       # 系统 (计时器)、画面刷新
  77.       $game_system.update
  78.       $game_screen.update
  79.       # 如果主角在场所移动中就中断循环
  80.       unless $game_temp.player_transferring
  81.         break
  82.       end
  83.       # 执行场所移动
  84.       transfer_player
  85.       # 处理过渡中的情况下、中断循环
  86.       if $game_temp.transition_processing
  87.         break
  88.       end
  89.     end
  90.     # 刷新活动块
  91.     @spriteset.update
  92.     # 刷新信息窗口
  93.     @message_window.update
  94.     # 游戏结束的情况下
  95.     if $game_temp.gameover
  96.       # 切换的游戏结束画面
  97.       $scene = Scene_Gameover.new
  98.       return
  99.     end
  100.     # 返回标题画面的情况下
  101.     if $game_temp.to_title
  102.       # 切换到标题画面
  103.       $scene = Scene_Title.new
  104.       return
  105.     end
  106.     # 处理过渡中的情况下
  107.     if $game_temp.transition_processing
  108.       # 清除过渡处理中标志
  109.       $game_temp.transition_processing = false
  110.       # 执行过渡
  111.       if $game_temp.transition_name == ""
  112.         Graphics.transition(20)
  113.       else
  114.         Graphics.transition(40, "Graphics/Transitions/" +
  115.           $game_temp.transition_name)
  116.       end
  117.     end
  118.     # 显示信息窗口中的情况下
  119.     if $game_temp.message_window_showing
  120.       return
  121.     end
  122.     # 遇敌计数为 0 且、且遇敌列表不为空的情况下
  123.     if $game_player.encounter_count == 0 and $game_map.encounter_list != []
  124.       # 不是在事件执行中或者禁止遇敌中
  125.       unless $game_system.map_interpreter.running? or
  126.              $game_system.encounter_disabled
  127.         # 确定队伍
  128.         n = rand($game_map.encounter_list.size)
  129.         troop_id = $game_map.encounter_list[n]
  130.         # 队伍有效的话
  131.         if $data_troops[troop_id] != nil
  132.           # 设置调用战斗标志
  133.           $game_temp.battle_calling = true
  134.           $game_temp.battle_troop_id = troop_id
  135.           $game_temp.battle_can_escape = true
  136.           $game_temp.battle_can_lose = false
  137.           $game_temp.battle_proc = nil
  138.         end
  139.       end
  140.     end
  141.     # 按下 B 键的情况下
  142.     if Input.trigger?(Input::B)
  143.       # 不是在事件执行中或菜单禁止中
  144.       unless $game_system.map_interpreter.running? or
  145.              $game_system.menu_disabled
  146.         # 设置菜单调用标志以及 SE 演奏
  147.         $game_temp.menu_calling = true
  148.         $game_temp.menu_beep = true
  149.       end
  150.     end
  151.     # 调试模式为 ON 并且按下 F9 键的情况下
  152.     if $DEBUG and Input.press?(Input::F9)
  153.       # 设置调用调试标志
  154.       $game_temp.debug_calling = true
  155.     end
  156.     # 不在主角移动中的情况下
  157.     unless $game_player.moving?
  158.       # 执行各种画面的调用
  159.       if $game_temp.battle_calling
  160.         call_battle
  161.       elsif $game_temp.shop_calling
  162.         call_shop
  163.       elsif $game_temp.name_calling
  164.         call_name
  165.       elsif $game_temp.menu_calling
  166.         call_menu
  167.       elsif $game_temp.save_calling
  168.         call_save
  169.       elsif $game_temp.debug_calling
  170.         call_debug
  171.       end
  172.     end
  173.   end
  174.   #--------------------------------------------------------------------------
  175.   # ● 调用战斗
  176.   #--------------------------------------------------------------------------
  177.   def call_battle
  178.     # 清除战斗调用标志
  179.     $game_temp.battle_calling = false
  180.     # 清除菜单调用标志
  181.     $game_temp.menu_calling = false
  182.     $game_temp.menu_beep = false
  183.     # 生成遇敌计数
  184.     $game_player.make_encounter_count
  185.     # 记忆地图 BGM 、停止 BGM
  186.     $game_temp.map_bgm = $game_system.playing_bgm
  187.     $game_system.bgm_stop
  188.     # 演奏战斗开始 SE
  189.     $game_system.se_play($data_system.battle_start_se)
  190.     # 演奏战斗 BGM
  191.     $game_system.bgm_play($game_system.battle_bgm)
  192.     # 矫正主角姿势
  193.     $game_player.straighten
  194.     # 切换到战斗画面
  195.     $scene = Scene_Battle.new
  196.   end
  197.   #--------------------------------------------------------------------------
  198.   # ● 调用商店
  199.   #--------------------------------------------------------------------------
  200.   def call_shop
  201.     # 清除商店调用标志
  202.     $game_temp.shop_calling = false
  203.     # 矫正主角姿势
  204.     $game_player.straighten
  205.     # 切换到商店画面
  206.     $scene = Scene_Shop.new
  207.   end
  208.   #--------------------------------------------------------------------------
  209.   # ● 调用名称输入
  210.   #--------------------------------------------------------------------------
  211.   def call_name
  212.     # 清除商店调用名称输入标志
  213.     $game_temp.name_calling = false
  214.     # 矫正主角姿势
  215.     $game_player.straighten
  216.     # 切换到名称输入画面
  217.     $scene = Scene_Name.new
  218.   end
  219.   #--------------------------------------------------------------------------
  220.   # ● 调用菜单
  221.   #--------------------------------------------------------------------------
  222.   def call_menu
  223.     # 清除商店调用菜单标志
  224.     $game_temp.menu_calling = false
  225.     # 已经设置了菜单 SE 演奏标志的情况下
  226.     if $game_temp.menu_beep
  227.       # 演奏确定 SE
  228.       $game_system.se_play($data_system.decision_se)
  229.       # 清除菜单演奏 SE 标志
  230.       $game_temp.menu_beep = false
  231.     end
  232.     # 矫正主角姿势
  233.     $game_player.straighten
  234.     # 切换到菜单画面
  235.     $scene = Scene_Menu.new
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● 调用存档
  239.   #--------------------------------------------------------------------------
  240.   def call_save
  241.     # 矫正主角姿势
  242.     $game_player.straighten
  243.     # 切换到存档画面
  244.     $scene = Scene_Save.new
  245.   end
  246.   #--------------------------------------------------------------------------
  247.   # ● 调用调试
  248.   #--------------------------------------------------------------------------
  249.   def call_debug
  250.     # 清除商店调用调试标志
  251.     $game_temp.debug_calling = false
  252.     # 演奏确定 SE
  253.     $game_system.se_play($data_system.decision_se)
  254.     # 矫正主角姿势
  255.     $game_player.straighten
  256.     # 切换到调试画面
  257.     $scene = Scene_Debug.new
  258.   end
  259.   #--------------------------------------------------------------------------
  260.   # ● 主角的场所移动
  261.   #--------------------------------------------------------------------------
  262.   def transfer_player
  263.     # 清除主角场所移动调试标志
  264.     $game_temp.player_transferring = false
  265.     # 移动目标与现在的地图有差异的情况下
  266.     if $game_map.map_id != $game_temp.player_new_map_id
  267.       # 设置新地图
  268.       $game_map.setup($game_temp.player_new_map_id)
  269.     end
  270.     # 设置主角位置
  271.     $game_player.moveto($game_temp.player_new_x, $game_temp.player_new_y)
  272.     # 设置主角朝向
  273.     case $game_temp.player_new_direction
  274.     when 2  # 下
  275.       $game_player.turn_down
  276.     when 4  # 左
  277.       $game_player.turn_left
  278.     when 6  # 右
  279.       $game_player.turn_right
  280.     when 8  # 上
  281.       $game_player.turn_up
  282.     end
  283.     # 矫正主角姿势
  284.     $game_player.straighten
  285.     # 刷新地图 (执行并行事件)
  286.     $game_map.update
  287.     # 在生成活动块
  288.     @spriteset.dispose
  289.     @spriteset = Spriteset_Map.new
  290.     # 处理过渡中的情况下
  291.     if $game_temp.transition_processing
  292.       # 清除过渡处理中标志
  293.       $game_temp.transition_processing = false
  294.       # 执行过渡
  295.       Graphics.transition(20)
  296.     end
  297.     # 执行地图设置的 BGM、BGS 的自动切换
  298.     $game_map.autoplay
  299.     # 设置画面
  300.     Graphics.frame_reset
  301.     # 刷新输入信息
  302.     Input.update
  303.   end
  304. end
复制代码
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 沉影不器    时间: 2008-3-28 06:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: Cross    时间: 2008-3-28 06:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小昌GG    时间: 2008-3-28 08:16
在状态那里弄上自动中毒就可以了......其实这个不用脚本的吧...{/fd}如果你需要重度这个状态就需要脚本了....如果不需要就弄上状态为中毒...
作者: 编程菜鸟    时间: 2008-3-28 08:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: 姬文翔    时间: 2008-3-29 02:29
以下引用编程菜鸟于2008-3-28 0:18:11的发言:


以下引用水迭澜于2008-3-27 19:44:19的发言:

用不着脚本的
事件并行处理判断就可以了

水兄 能说明白点么?


设置一个并行的公共事件,伤HP和SP的效果写在事件里。条件开关就是进入需要该效果的地图后打开的开关
作者: 沉影不器    时间: 2008-3-29 03:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: worstsheep    时间: 2008-3-29 04:52
{/ll}谢谢解答

作者: 编程菜鸟    时间: 2008-3-29 06:51
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1