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

Project1

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

脚本恢复(集合帖)

 关闭 [复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

跳转到指定楼层
1
发表于 2007-12-16 19:03:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
为了突破30M 我恢复的 脚本全部在这里

1、模范武林群侠传
--------------------------------------------------------------------------------
6R首页 > RMXP 原创技术发布区 【kk688005】发贴:2007-10-2 12:55:33
--------------------------------------------------------------------------------
kk688005】
发贴:2007-10-2 12:55:33
--------------------------------------------------------------------------------
这个是模范武林群侠传弄的,
属于半成品.
成品弄好了一定第一时间和大家分享下,
我这个的优点是可以配合事件来制作,比如说剧情等都可以直接用地图事件完成.
由于是个半成品主要的回合制功能未展现,如学习等.不过由于可以直接和地图事件
混合,大家可以用事件+脚本修改实现学习等功能.
下面是截图:
[图链]

[图链]

请直接点击查看,因为我不会让它直接呈现.
由于怕范例有毒我就不发了啊!
下面为脚本部分,都把他们粘贴到MAIN之前
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  显示文章的信息窗口。
#==============================================================================

class Window_Message2 < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化状态
#--------------------------------------------------------------------------
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
end
end
class Window_Wdef initialize
super(0,120,160,200)
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
end
end
class Window_W2def initialize
super(480,120,160,200)
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
end
end

class Window_FNdef initialize
$game_variables[14]=10

super(0,0,160,120)
# self.windowskin=RPG::Cache.Windowskin("学习")
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
self.contents.clear

self.contents.draw_text(0-32,0,160,32,"疲劳值:",1)
self.contents.draw_text(0-32,32,160,32,"/",1)
self.contents.draw_text(-32-32,32,160,32,$game_variables[14].to_s,1)
self.contents.draw_text(32-32,32,160,32,"10",1)
end
end
class Window_Nlidef initialize
super(160,0,480,120)
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0,0,480,32,"软 硬 内 轻 拳 脚 刀 剑 棍 魔 毒 医 才",1)
self.contents.draw_text(0,32,480,32,"功 功 功 功 法 法 法 法 法 音 术 术 艺",1)
for i in 1..6
self.contents.draw_text((i-7.0)*34,64,480,32,$game_variables.to_s,1)
self.contents.draw_text(0,64,480,32,$game_variables[7].to_s,1)
self.contents.draw_text(0+32,64,480,32,$game_variables[13].to_s,1)
for d in 8...13
self.contents.draw_text((d-6.0)*32,64,480,32,$game_variables[d].to_s,1)
end
end
end
end
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  处理地图画面的类。
#==============================================================================

class Scene_Map
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 生成活动块
@spriteset = Spriteset_Map.new
# 生成信息窗口
@message_window = Window_Message.new
@message_window.opacity=0
@message_window6 = Window_Message2.new
@message_window2 = Window_Nli.new
@message_window3 = Window_FN.new
@message_window4 = Window_W.new
@message_window5 = Window_W2.new
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放活动块
@spriteset.dispose
# 释放信息窗口
@message_window.dispose
@message_window6.dispose
@message_window2.dispose
@message_window3.dispose
@message_window4.dispose
@message_window8.dispose
# 标题画面切换中的情况下
if $scene.is_a?(Scene_Title)
# 淡入淡出画面
Graphics.transition
Graphics.freeze
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 循环
@message_window2.refresh
@message_window3.refresh
@message_window4.re……
长篇帖子,完整版请原地址查看


-回帖-
--------------------------------------------------------------------------------
【kk688005】
希望大家看了一后不管好不好都要提一下
建议什么的都好啊!!
--------------------------------------------------------------------------------
【永劫的咎人】
从截图看出,疲劳度的窗口刷新没有做好,就是几句话的功夫啦~
--------------------------------------------------------------------------------
【kk688005】
的确有点问题改下
--------------------------------------------------------------------------------
【越前リョーマ】
那个……

这个是干嘛的……
看图看不出什么意思……
--------------------------------------------------------------------------------
【chen012】
貌似很有趣
--------------------------------------------------------------------------------
【kk688005】

(引用一段)

呵呵可以用来配合做武林群侠传那样的游戏啊.
--------------------------------------------------------------------------------
【神思】
呵~~不错`支持一下``
不过很明显的```左上角那个窗口在重新描绘前没有清除bitmap
--------------------------------------------------------------------------------
【orochi2k】
忽然想到我手头个自宅系统的策划案....
--------------------------------------------------------------------------------
【gpra8764】
哦,因为没有玩过《武林群侠传》,所以还是不知道是什么东西
哎呀,蛋疼什么的最有爱了

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

2
 楼主| 发表于 2007-12-16 19:03:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
为了突破30M 我恢复的 脚本全部在这里

1、模范武林群侠传
--------------------------------------------------------------------------------
6R首页 > RMXP 原创技术发布区 【kk688005】发贴:2007-10-2 12:55:33
--------------------------------------------------------------------------------
kk688005】
发贴:2007-10-2 12:55:33
--------------------------------------------------------------------------------
这个是模范武林群侠传弄的,
属于半成品.
成品弄好了一定第一时间和大家分享下,
我这个的优点是可以配合事件来制作,比如说剧情等都可以直接用地图事件完成.
由于是个半成品主要的回合制功能未展现,如学习等.不过由于可以直接和地图事件
混合,大家可以用事件+脚本修改实现学习等功能.
下面是截图:
[图链]

[图链]

请直接点击查看,因为我不会让它直接呈现.
由于怕范例有毒我就不发了啊!
下面为脚本部分,都把他们粘贴到MAIN之前
#==============================================================================
# ■ Window_Message
#------------------------------------------------------------------------------
#  显示文章的信息窗口。
#==============================================================================

class Window_Message2 < Window_Selectable
#--------------------------------------------------------------------------
# ● 初始化状态
#--------------------------------------------------------------------------
def initialize
super(0, 320, 640, 160)
self.contents = Bitmap.new(width - 32, height - 32)
end
end
class Window_Wdef initialize
super(0,120,160,200)
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
end
end
class Window_W2def initialize
super(480,120,160,200)
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
end
end

class Window_FNdef initialize
$game_variables[14]=10

super(0,0,160,120)
# self.windowskin=RPG::Cache.Windowskin("学习")
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
self.contents.clear

self.contents.draw_text(0-32,0,160,32,"疲劳值:",1)
self.contents.draw_text(0-32,32,160,32,"/",1)
self.contents.draw_text(-32-32,32,160,32,$game_variables[14].to_s,1)
self.contents.draw_text(32-32,32,160,32,"10",1)
end
end
class Window_Nlidef initialize
super(160,0,480,120)
self.contents=Bitmap.new(width-32,height-32)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(0,0,480,32,"软 硬 内 轻 拳 脚 刀 剑 棍 魔 毒 医 才",1)
self.contents.draw_text(0,32,480,32,"功 功 功 功 法 法 法 法 法 音 术 术 艺",1)
for i in 1..6
self.contents.draw_text((i-7.0)*34,64,480,32,$game_variables.to_s,1)
self.contents.draw_text(0,64,480,32,$game_variables[7].to_s,1)
self.contents.draw_text(0+32,64,480,32,$game_variables[13].to_s,1)
for d in 8...13
self.contents.draw_text((d-6.0)*32,64,480,32,$game_variables[d].to_s,1)
end
end
end
end
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  处理地图画面的类。
#==============================================================================

class Scene_Map
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 生成活动块
@spriteset = Spriteset_Map.new
# 生成信息窗口
@message_window = Window_Message.new
@message_window.opacity=0
@message_window6 = Window_Message2.new
@message_window2 = Window_Nli.new
@message_window3 = Window_FN.new
@message_window4 = Window_W.new
@message_window5 = Window_W2.new
# 执行过渡
Graphics.transition
# 主循环
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
# 准备过渡
Graphics.freeze
# 释放活动块
@spriteset.dispose
# 释放信息窗口
@message_window.dispose
@message_window6.dispose
@message_window2.dispose
@message_window3.dispose
@message_window4.dispose
@message_window8.dispose
# 标题画面切换中的情况下
if $scene.is_a?(Scene_Title)
# 淡入淡出画面
Graphics.transition
Graphics.freeze
end
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
# 循环
@message_window2.refresh
@message_window3.refresh
@message_window4.re……
长篇帖子,完整版请原地址查看


-回帖-
--------------------------------------------------------------------------------
【kk688005】
希望大家看了一后不管好不好都要提一下
建议什么的都好啊!!
--------------------------------------------------------------------------------
【永劫的咎人】
从截图看出,疲劳度的窗口刷新没有做好,就是几句话的功夫啦~
--------------------------------------------------------------------------------
【kk688005】
的确有点问题改下
--------------------------------------------------------------------------------
【越前リョーマ】
那个……

这个是干嘛的……
看图看不出什么意思……
--------------------------------------------------------------------------------
【chen012】
貌似很有趣
--------------------------------------------------------------------------------
【kk688005】

(引用一段)

呵呵可以用来配合做武林群侠传那样的游戏啊.
--------------------------------------------------------------------------------
【神思】
呵~~不错`支持一下``
不过很明显的```左上角那个窗口在重新描绘前没有清除bitmap
--------------------------------------------------------------------------------
【orochi2k】
忽然想到我手头个自宅系统的策划案....
--------------------------------------------------------------------------------
【gpra8764】
哦,因为没有玩过《武林群侠传》,所以还是不知道是什么东西
哎呀,蛋疼什么的最有爱了

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

3
 楼主| 发表于 2007-12-16 19:05:16 | 只看该作者
【憔悴的帅哥】
发贴:2007-11-16 23:39:52
--------------------------------------------------------------------------------
#====================================================☆○
# 本脚本来自www.66rpg.com,使用和转载请保留此信息
#====================================================☆○
#格式:显示的td图片的命名格式为:
# cmd调用公共事件编号_名字
# cmd调用公共事件编号_名字_02 # 此为鼠标经过的图片

#即,带有cmd的为可以点击的图片,点击后执行相应的公共事件.....
#不带cmd的图片没任何影响。。。


class Game_Picture
attr_accessor :x # X 坐标
attr_accessor :y # Y 坐标
attr_accessor :number # 编号
attr_accessor :cmd # 拖动标记

def name=(str)
@name = str
end

end

class Sprite_Picture

alias update_old update
def update
update_old
return if @picture_name == "" or @picture_name[/cmd/].nil?
return if @picture_name == "" or @picture_name[/cmd/].nil?
@mx,@my = Mouse.get_mouse_pos
lx = self.x - self.ox
rx = lx + self.bitmap.width
ty = self.y - self.oy
by = ty + self.bitmap.height

mx,my = Mouse.get_mouse_pos
lx = self.x - self.ox
rx = lx + self.bitmap.width
ty = self.y - self.oy
by = ty + self.bitmap.height

if @picture.cmd
@picture.x = @dx + @mx if [email protected]?
@picture.y = @dy + @my if [email protected]?
end

if @mx > lx and @mx < rx and @my > ty and @my < by and self.bitmap.get_pixel(@mx-lx,@my-ty).alpha != 0
if Input.trigger?(13)
@dx = @picture.x - @mx
@dy = @picture.y - @my
@picture.cmd = true
if @picture.number > $yd.number
$yd.cmd = false
$yd = @picture
end
end
@picture.cmd = false if !Input.press?(13)
end

if mx < lx or mx > rx or my < ty or my > by or
self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
@picture.name = @picture.name.split(/_/)[0]+"_"[email protected](/_/)[1]
return
end
if @picture.name.split(/_/)[2].nil?
@picture.name = @picture.name + "_02"
end
if Input.trigger?(13)
@picture.name.split(/_/)[0].sub(/cmd([0-9]+)/,"")
$game_temp.common_event_id = $1.to_i
end
end
end
#====================================================☆○
# 本脚本来自www.66rpg.com,使用和转载请保留此信息
#====================================================☆○



-回帖-
--------------------------------------------------------------------------------
【kk688005】
不知道有什么用不..不是说伤你自尊.我想首先还是弄一下键盘的好..
--------------------------------------------------------------------------------
【憔悴的帅哥】
我怎么自己的得行!不过上面这个脚本不行。
我自己都可以拖动图片,点击事件都行啊!
--------------------------------------------------------------------------------
【secondsen】
a ?LS啥意思?看不明白阿

--------------------------------------------------------------------------------
【kk688005】
他说上面脚本单独用不可以用把.....
那是当然的,你用了鼠标脚本的前提下用的..........
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

4
 楼主| 发表于 2007-12-16 19:07:21 | 只看该作者
这是在 2007年11月29日 14:01:18 GMT 检索到的 http://rpg.blue/viewthread.php?tid=49482 的 G o o g l e 缓存内容。
G o o g l e 已先预览各网页,拍下网页的快照存档。
这网页可能有更新的版本,请按此查看最新版。
本缓存网页可能引用了已经不存在的图片。单击此处,只查看缓存文本。
请使用网址 http://www.google.com/search?q=cache:BvqxO9-HX3wJ:rpg.blue/forumTopicRead.asp%3Fid%3D49482+%E5%8E%9F%E5%88%9B%E6%8A%80%E6%9C%AF%E5%8F%91%E5%B8%83%E5%8C%BA+site:rpg.blue&hl=zh-CN&ct=clnk&cd=13&gl=cn&lr=lang_ja%7Clang_en&st_usg=ALhdy2_6MWe57V_n3GZyWWrg0WPdqfzK3w 链接此页或将其做成书签。


Google 和网页作者无关,不对网页的内容负责。
这些搜索字词都已标明如下:  原创  技术  发布  区  



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

  
 我发表的主题 | 我参与的主题 用户面板 | 论坛无图版 |  | 论坛附件 | 会员  
恩,本区一般以启发思路为主,新人问题请提交新手区 本页阅读版 论坛短信(0 新)
66RPG 8 RMXP 原创技术发布区 8 超!地圖遇敵系統 測試版   
点击统计:1378 次
   
 帖子主题:超!地圖遇敵系統 測試版 字体:默认稍大普通较大大最大   
kevin5408



好人:3 张好人卡
点数:28
称号:圣骑士
经验:1805
帖子:122
注册:2005-10-24
状态:离线 档案 搜索 邮件 短信 推荐 引用   

這個系統,是模擬 仙劍奇俠傳的地圖遇敵模式。
基本上怪物會在地圖上出現,當玩家處碰/或是被處碰到才會進入戰鬥
(目前戰鬥系統還是以RMXP預設為主)
可能有人會認為,這個功能用事件內建功能就可以達成。在此是利用腳本整合,並且有些
特殊的地方。
1.比如1號地圖上有 史萊姆、蜘蛛、蛇 三類的敵人。
如果運用事件來作,可能事件的圖案就很難達到完善
(地圖上事件是史萊姆,結果一開打竟然是蛇。)
這個腳本他可以把你再[地圖設定]內所加入的怪物,直接轉換到地圖上直接顯示
你的地圖設定有三類的怪,那地圖上絕對不會顯示出第四類...
並且,地圖上顯示史萊姆,進入戰鬥就是跟史萊姆作戰,不會打錯敵人.

2.大幅簡化開發者的怪物設定上的困難度。
如果以事件內建功能來製作,不同的怪物你必許指定不同的圖案外,進入戰鬥這指令
還得再另外的去設定。
這個腳本很簡單,只要在事件名稱上輸入[敵人]。其他欄位都不用管
(你也可以設定他的移動速度/頻率)
系統自動會幫你轉換地圖上因該出現的敵人。開發者只要把這敵人事件放到想要放的位置即可。

目前唯一的BUG無法克服:
設計時地圖上所有[事件ID]必須[連號]
也就是有5個事件,那麼這事件ID必須為1.2.3.4.5
不可以為 1.2.3.4.6 會出現異常錯誤。

目前這系統有修改到 Scene_Battler 4 這腳本些許功能(主要是判斷戰鬥勝利的模組)
因此可能會與部分戰鬥腳本衝突。但是..要修改非常簡單...
因為只是在 Scene_Battler 4 內增加幾個變數而已。

OK!以下就是腳本內容,歡迎測試:

   本帖相关代码如下:
#-------------------------------------------------------------------------------------
#超!遇敵系統
#coding by Kevin Chang
#==============================================================================
# ■ Game_Event
#------------------------------------------------------------------------------
#  處理事件的程式。條件判斷、事件頁的切換、並行處理、執行事件功能
#     在 Game_Map 的內部使用。
#==============================================================================
module RPG #新增name定義,作用於抓取事件名稱欄位值
class Event
   def initialize(x, y)
     @id = 0
     @name = ""
     @x = x
     @y = y
     @pages = [RPG::Event::Page.new]
   end
   attr_accessor :id
   attr_accessor :name
   attr_accessor :x
   attr_accessor :y
   attr_accessor :pages
end
end
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 定義實例變量
#--------------------------------------------------------------------------
attr_accessor   :trigger                  # 目標(改為可讀寫)
attr_reader   :list                     # 執行內容
attr_reader   :starting                 # 啟動中標誌
attr_accessor :name                  #取得事件名稱
attr_accessor :character_name #改變事件圖形為可讀寫
attr_accessor :auto_fight   #敵人事件處碰啟動戰鬥設定
attr_accessor :move_type          #移動方式讓 $game_map.events[event_id].move_type = ? 來設定
#--------------------------------------------------------------------------
# ● 初始化對像
#     map_id : 地圖 ID
#     event  : 事件 (RPG::Event)
#--------------------------------------------------------------------------
def initialize(map_id, event)
   super()
   @map_id = map_id
   @event = event
   @id = @event.id
   @erased = false
   @starting = false
   @through = true
   @name = @event.name #取得事件名稱
   @character_name =""#改變事件圖形為可讀寫
   @auto_fight = false #敵人事件接觸自動戰鬥
   @move_type = 0 #移動方式 讓 $game_map.events[event_id].move_type = ? 來設定
   #改變敵人事件的移動方法 0.不動 1.隨機 2.接近 4.自訂AI
   # 初期位置的移動
   moveto(@event.x, @event.y)
   refresh
end
   #--------------------------------------------------------------------------
# ● 接觸事件啟動判定
#--------------------------------------------------------------------------
def check_event_trigger_touch(x, y)
   # 事件執行中的情況下
   if $game_system.map_interpreter.running?
     return
   end
   # 目標為 [與事件接觸] 以及和主角坐標一致的情況下
   if @trigger == 2 and x == $game_player.x and y == $game_player.y
     # 除跳躍中以外的情況、啟動判定就是正面的事件
     if not jumping? and not over_trigger?
       @auto_fight = true
            start
      else
       @auto_fight = false
     end
   end
end
#--------------------------------------------------------------------------
# ● 自動事件啟動判定
#--------------------------------------------------------------------------
def check_event_trigger_auto
   # 目標為 [與事件接觸] 以及和主角坐標一致的情況下
   if @trigger == 2 and @x == $game_player.x and @y == $game_player.y
     # 除跳躍中以外的情況、啟動判定就是同位置的事件
     if not jumping? and over_trigger?
       @auto_fight = true
       start
     else
       @auto_fight = false
     end
   end
   # 目標是 [自動執行] 的情況下
   if @trigger == 3
     start
   end
end
end

#==============================================================================
# ■ Game_Character (分割定義 2)
#------------------------------------------------------------------------------
#  處理角色的程式。本程式作為 Game_Player 與 Game_Event
#     的超級程式使用。
#==============================================================================

class Game_Character
#--------------------------------------------------------------------------
# ● 移動類型 : 接近
#--------------------------------------------------------------------------
def move_type_toward_player
   # 求得與主角坐標的差
   sx = @x - $game_player.x
   sy = @y - $game_player.y
   # 求得差的絕對值
   abs_sx = sx > 0 ? sx : -sx
   abs_sy = sy > 0 ? sy : -sy
   # 如果縱橫共計離開 20 個元件
   if sx + sy >= 5#修正敵人警戒距離
     # 隨機
     move_random
     return
   end
   # 隨機 0~5 的分支
   case rand(6)
   when 0..3  # 接近主角
     move_toward_player
   when 4  # 隨機
     move_random
   when 5  # 前進一步
     move_forward
   end
end
end

#===========================================================
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  處理地圖畫面的程式。
#==============================================================================

class Scene_Map
#--------------------------------------------------------------------------
# ● 主處理
#--------------------------------------------------------------------------
$enemy_event_arry = [] #存放敵人事件的事件編號對應的敵人隊伍id(troop_id)
$e_event_id = []#存放屬於敵人事件的事件id
def main  
@a = 0
   # 生成活動塊
   @spriteset = Spriteset_Map.new
   # 生成訊息窗口
   @message_window = Window_Message.new
   # 執行過渡
   Graphics.transition
   # 主循環
   loop do   
     new_battle_module #呼叫新版遇敵系統
     # 刷新遊戲畫面
     Graphics.update
     # 刷新輸入訊息
     Input.update
     # 刷新畫面
     update
     # 如果畫面切換的話就中斷循環
     if $scene != self
       break
     end
   end
   # 準備過渡
   Graphics.freeze
   # 釋放活動塊
   @spriteset.dispose
   # 釋放訊息窗口
   @message_window.dispose
   # 標題畫面切換中的情況下
   if $scene.is_a?(Scene_Title)
     # 淡入淡出畫面
     Graphics.transition
     Graphics.freeze
   end
end
#------------------------------------------------------------------
#●怪物事件隨機圖示變化設計模組-主要控制
#--------------------------------------------------------------------
def new_battle_module
   # 遇敵列表不為空的情況下
   if $game_map.encounter_list != []
     # 不是在事件執行中或者禁止遇敵中
     unless $game_system.map_interpreter.running? or
            $game_system.encounter_disabled
       # 確定隊伍
        for i in 1 .. $game_map.events.size
          if $game_map.events.name == "敵人"
            if $game_map.events.character_name == ""#避免怪物持續刷新,設置一個break的條件
            $game_map.events.character_name = rand_enemies_character_name#改變敵人事件的圖片
            $enemy_event_arry = $enemy_event_id#將獲取的troop_id 存放到敵人事件陣列內
            $e_event_id[@a] = i
           @a += 1
            $game_map.events.trigger = 2 #自動改為接觸啟動事件
            $game_map.events.move_type = 2
            #改變敵人事件的移動方法 0.不動 1.隨機 2.接近
            # 隊伍有效的話
            else
              break
            end#if 避免怪物持續刷新,設置一個break的條件
          end
      end#end for
   end #unless
end#if 遇敵列表不為空的情況下
end#module   
#--------------------------------------------------------------------
#●怪物事件隨機圖示變化設計模組-戰鬥圖獲取
#--------------------------------------------------------------------
def rand_enemies_character_name
        n = rand($game_map.encounter_list.size)#亂數取得地圖敵人列表數量
        troop_id = $game_map.encounter_list[n]#亂數帶入敵人隊伍ID內,由敵人列表隨機取出一隊伍
        troop = $data_troops[troop_id]#將隨機敵人隊伍資料存放到 troop 變數內
        $enemy_event_id = troop_id
        i =  rand(troop.members.size) #由troop隊伍資料內 隨機抽出一個敵人隊員
        enemy_character_name = $data_enemies[troop.members.enemy_id].battler_name
        #抽出的隨機敵人隊員,與data_enemies去比對出對應的怪物戰鬥圖,把戰鬥圖名稱取出
         return enemy_character_name #回傳戰鬥圖名稱
end
#--------------------------------------------------------------------------
# ● 刷新畫面
#--------------------------------------------------------------------------
def update
   # 循環
   loop do
     # 按照地圖、實例、主角的順序刷新
     # (本更新順序不會在的滿足事件的執行條件下成為給予角色瞬間移動
     #  的機會的重要原素)
     $game_map.update
     $game_system.map_interpreter.update
     $game_player.update
     # 系統 (計時器)、畫面刷新
     $game_system.update
     $game_screen.update
     # 如果主角在場所移動中就中斷循環
     unless $game_temp.player_transferring
       break
     end
     # 執行場所移動
     transfer_player
     # 處理過渡中的情況下、中斷循環
     if $game_temp.transition_processing
       break
     end
   end
   # 刷新活動塊
   @spriteset.update
   # 刷新訊息窗口
   @message_window.update
   # 遊戲結束的情況下
   if $game_temp.gameover
     # 切換的遊戲結束畫面
     $scene = Scene_Gameover.new
     return
   end
   # 返回標題畫面的情況下
   if $game_temp.to_title
     # 切換到標題畫面
     $scene = Scene_Title.new
     return
   end
   # 處理過渡中的情況下
   if $game_temp.transition_processing
     # 清除過渡處理中標誌
     $game_temp.transition_processing = false
     # 執行過渡
     if $game_temp.transition_name == ""
       Graphics.transition(20)
     else
       Graphics.transition(40, "Graphics/Transitions/" +
         $game_temp.transition_name)
     end
   end
   # 顯示訊息窗口中的情況下
   if $game_temp.message_window_showing
     return
   end
   # 遇敵列表不為空的情況下且敵人事件 auto_fight 為true
   for i in $e_event_id
   if $game_map.encounter_list != [] and $game_map.events.auto_fight == true
     $event_id_on_time = i #把正在進行戰鬥的 event_id 取出,以便後面呼叫使用
     # 不是在事件執行中或者禁止遇敵中
     unless $game_system.map_interpreter.running? or
            $game_system.encounter_disabled
       # 確定隊伍
       troop_id = $enemy_event_arry
       # 隊伍有效的話
       if $data_troops[troop_id] != nil
         # 設置調用戰鬥標誌
         $game_temp.battle_calling = true
         $game_temp.battle_troop_id = troop_id
         $game_temp.battle_can_escape = true
         $game_temp.battle_can_lose = false
         $game_temp.battle_proc = nil
       end
     end
   end
   end #for
   # 按下 B 鍵的情況下
   if Input.trigger?(Input::B)
     # 不是在事件執行中或菜單禁止中
     unless $game_system.map_interpreter.running? or
            $game_system.menu_disabled
       # 設置菜單調用標誌以及 SE 演奏
       $game_temp.menu_calling = true
       $game_temp.menu_beep = true
     end
   end
   # 調試模式為 ON 並且按下 F9 鍵的情況下
   if $DEBUG and Input.press?(Input::F9)
     # 設置調用調試標誌
     $game_temp.debug_calling = true
   end
   # 不在主角移動中的情況下
   unless $game_player.moving?
     # 執行各種畫面的調用
     if $game_temp.battle_calling
       call_battle
     elsif $game_temp.shop_calling
       call_shop
     elsif $game_temp.name_calling
       call_name
     elsif $game_temp.menu_calling
       call_menu
     elsif $game_temp.save_calling
       call_save
     elsif $game_temp.debug_calling
       call_debug
     end
   end
end
end
#==============================================================================
# ■ Scene_Battle (分割定義 2)
#------------------------------------------------------------------------------
#  處理戰鬥畫面的程式。
#==============================================================================

class Scene_Battle
#--------------------------------------------------------------------------
# ● 畫面更新 (結束戰鬥回合)
#--------------------------------------------------------------------------
def update_phase5
   # 等待計數大于 0 的情況下
   if @phase5_wait_count > 0
     # 減少等待計數
     @phase5_wait_count -= 1
     # 等待計數為 0 的情況下
     if @phase5_wait_count == 0
       # 顯示結果窗口
       @result_window.visible = true
       # 清除主回合標誌
       $game_temp.battle_main_phase = false
       # 刷新狀態窗口
       @status_window.refresh
     end
     return
   end
   # 按下 C 鍵的情況下
   if Input.trigger?(Input::C)
     # 戰鬥結束
     $game_map.events[$event_id_on_time].name = "死亡"
     $game_map.events[$event_id_on_time].auto_fight = false
     $game_map.events[$event_id_on_time].trigger = 0
     $game_map.events[$event_id_on_time].erase
     battle_end(0)
   end
end
end


              [本贴由 叶舞枫 于 2007-5-16 21:12:52 进行了编辑]  



发贴时间:2007-4-4 3:56:36  

来源:61.222.*.* nothing here

kevin5408



好人:3 张好人卡
点数:28
称号:圣骑士
经验:1805
帖子:122
注册:2005-10-24
状态:离线 档案 搜索 邮件 短信 引用  第2楼

補充,因為使用繁體,所以可能再事件名稱的判斷上會出現問題。
可以看到整個程式碼後找到下面這段修改。

   本帖相关代码如下:
if $game_map.events.name == "敵人"

這敵人請改為簡體,事件名稱使用簡體的[敵人]即可。


   本帖相关代码如下:
#------------------------------------------------------------------
#●怪物事件隨機圖示變化設計模組-主要控制
#--------------------------------------------------------------------
def new_battle_module
  # 遇敵列表不為空的情況下
  if $game_map.encounter_list != []
    # 不是在事件執行中或者禁止遇敵中
    unless $game_system.map_interpreter.running? or
           $game_system.encounter_disabled
      # 確定隊伍
       for i in 1 .. $game_map.events.size
         if $game_map.events.name == "敵人"
           if $game_map.events.character_name == ""#避免怪物持續刷新,設置一個break的條件



回贴时间:2007-4-4 4:08:34


来源:61.222.*.*  广告招租,目前等待6R新闻杂志中。

暴风の龙



好人:170 张好人卡
点数:174
称号:邪恶小龙包
经验:57707
帖子:6282
注册:2006-5-22
状态:在线 档案 搜索 邮件 短信 引用  第3楼

看来不错不过说敌人必须连号就比较麻烦了哦- -  


努力自学3D MAX中
3D的RMXP世界看起来效果还不错啊~

最新游戏策划,请到某龙的Blog查看:http://hi.baidu.com/stormdragon  
回贴时间:2007-4-4 4:14:19


来源:208.120.*.*  广告招租,目前等待6R新闻杂志中。

kevin5408



好人:3 张好人卡
点数:28
称号:圣骑士
经验:1805
帖子:122
注册:2005-10-24
状态:离线 档案 搜索 邮件 短信 引用  第4楼


以下引用暴风の龙于2007-4-4 4:14:19的发言:

看来不错不过说敌人必须连号就比较麻烦了哦- -


其實還好啦,除非地圖上有幾百的事件...不然想斷號因該不太會...
就算斷號,只要再地圖上安插空白的事件 補足中斷的號碼即可(系統會自動連號)  



回贴时间:2007-4-4 4:17:41


来源:61.222.*.*  广告招租,目前等待6R新闻杂志中。

魔剑美神



好人:27 张好人卡
点数:116
称号:秀逗De魔导士
经验:30526
帖子:2675
注册:2006-10-25
状态:离线 档案 搜索 邮件 短信 引用  第5楼

LZ能给出范例吗?  


难以忘记初次见你, 一双迷人的眼睛,
在我脑海里你的身影…挥散不去………
=============================================================================




回贴时间:2007-4-4 11:52:58


来源:60.214.*.*  广告招租,目前等待6R新闻杂志中。

狄奥



好人:52 张好人卡
点数:23
称号:神
经验:29814
帖子:3674
注册:2006-9-5
状态:离线 档案 搜索 邮件 短信 引用  第6楼

……………………用事件好了…………
这样太复杂了…………
脚本…………除了事件不能做的以外,越少越好…………  


喂喂,怎么我倒成坏人了?

P.s.感谢真的签名……
  
回贴时间:2007-4-4 12:33:39


来源:222.130.*.*  广告招租,目前等待6R新闻杂志中。

kevin5408



好人:3 张好人卡
点数:28
称号:圣骑士
经验:1805
帖子:122
注册:2005-10-24
状态:离线 档案 搜索 邮件 短信 引用  第7楼


以下引用魔剑美神于2007-4-4 11:52:58的发言:

LZ能给出范例吗?


複製/貼上到 Main 上方後
於地圖上設定一個事件,事件名稱取為 敵人,改變一下事件的移動頻率
完成後,複製此事件...隨便在地圖上任意處貼上 (貼個3~4個吧 主要是看效果)

接下來,在[地圖設定]內,把你想要戰鬥的敵人設定出吧.
接下來就可以測試看看嚕

就會發現地圖上剛剛空白的 敵人事件 都變成了怪物,接近牠門就會被追殺
當被怪物處碰就自動進入戰鬥

每次進入遊戲/地圖,怪物都會不同(隨機).  



回贴时间:2007-4-4 18:29:06


来源:220.134.*.*  广告招租,目前等待6R新闻杂志中。

beile



好人:2 张好人卡
称号:学坏的人
经验:-20
帖子:16
注册:2007-3-30
状态:离线 档案 搜索 邮件 短信 引用  第8楼

其实我觉的用事件还比较简单,设定时间随机走,加上碰到主角就进入攻击画面就行了........  


游戏编号:290926
论坛ID:BEILE
人物职业:剑士
人物特长:勇猛
个人留言:能找出比我更土的名字么?

状态:
HP(/40);MP(/33);灵魂点()。
攻击3;防御1;
武器—匕首—攻1;
副装—无—无;
防具—无—无;
游戏货币:0G。


回贴时间:2007-4-4 19:47:40


来源:59.35.*.*  广告招租,目前等待6R新闻杂志中。

狄奥



好人:52 张好人卡
点数:23
称号:神
经验:29814
帖子:3674
注册:2006-9-5
状态:离线 档案 搜索 邮件 短信 引用  第9楼

时间!?难道又是赶工之作?(赶着玩)
用随机数吧……让玩家放松点……  


喂喂,怎么我倒成坏人了?

P.s.感谢真的签名……
  
回贴时间:2007-4-4 20:03:17


来源:125.34.*.*  广告招租,目前等待6R新闻杂志中。

风雪优游



好人:12 张好人卡
点数:151
称号:风雪夜不归人
经验:18670
帖子:2083
注册:2006-3-7
状态:离线 档案 搜索 邮件 短信 引用  第10楼

感觉上事件比较简单吧= =|||  


加油~加油~加油!

新人~~~咱是永恒的新人~~~`  
回贴时间:2007-4-5 17:20:07


来源:218.6.*.*  广告招租,目前等待6R新闻杂志中。
  9 7 1 2 3 8 :   论坛跳转至…… ≡RMXP 技术板块≡  |-RMXP 自由提问专区 |-RMXP 图象技术提问区 |-RMXP 原创技术发布区≡游戏素材 制作板块≡  |-新◎6R 绘图工房 |-RM 素材交流 发布区≡原创游戏专区≡  |-原创游戏 发布区 |-策划与预告 文字专区≡梦想世界≡  |-6R 水世界 |-新◎地球村 |-版务专区 |-66RPG故宫博物馆 |-【6R营销部】 |-新6R杂志社
   

   

回复主题:超!地圖遇敵系統 測試版
表情符号:(更多表情请点这里)                   更多...

· 帖子字数:最大 32768 字符

· 剩余字符:
· UBB 支持:启用UBB

· HTML标记: ×

· 表情符号: √                  
你还没有登陆呢,请先登陆!
    

   

   
   
论坛统计:雅虎统计  §  版权所有:www.66RPG.com , 2005 - 2007, -> Special Ver <-
执行时间:832.0 毫秒  §  页面装载:20.86 秒
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

5
 楼主| 发表于 2007-12-16 19:08:19 | 只看该作者
我自己的教程
【yangff】
发贴:2007-11-3 16:14:12
--------------------------------------------------------------------------------
脚本学习的捷径之学会看事件解译器
前言:
RMXP中的事件都是由脚本解译器翻译成脚本的,脚本解译器就是。。。Interpreter类即:
Interpreter 1
Interpreter 2
Interpreter 3
Interpreter 4
Interpreter 5
Interpreter 6
Interpreter 7
学会利用他们可以让脚本编写方便许多。
第一课。
命令代码分支
命令代码分支的内容在Interpreter 2里相关的内容有:
case @list[@index].code
when 101 # 文章的显示
return command_101
when 102 # 显示选择项
return command_102
when 402 # [**] 的情况下
return command_402
。。。。。。
眼前一亮了吧学会使用它们可以找到一些你不知道的代码。

第二课
寻觅代码
假如我编写脚本时需要增减防具,那么我们找到:
。。。。。。
when 127 # 增减武器
return command_127
when 128 # 增减防具
return command_128
。。。。。。
发现增减防具的代码是128,找到后全域搜索128。
找到Interpreter 4中有DEF 128定位过去
第三棵
华丽的宣布战果吧!
# 获取要操作的值
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 增减防具
$game_party.gain_armor(@parameters[0], value)
先找value的值定位到operate_value
得出value确定的是获得物品的数量
而在搜索中Game_Actor告诉我们@parameters[0]是用来确定获得物品的ID。那么获得防具的代码是:
$game_party.gain_armor(ID,数量)
作业:
增减敌人的 HP的操作编号及语法是什么?快快拨打回帖告诉我吧,第1个告诉我的人会获得1VIP~~~


繁体版本!
  1. 腳本學習的捷徑之學會看事件解譯器
  2. 前言:
  3. RMXP中的事件都是由腳本解譯器翻譯成腳本的,腳本解譯器就是。。。Interpreter類即:
  4. Interpreter 1
  5. Interpreter 2
  6. Interpreter 3
  7. Interpreter 4
  8. Interpreter 5
  9. Interpreter 6
  10. Interpreter 7
  11. 學會利用他們可以讓腳本編寫方便許多。
  12. 第一課。
  13. 命令代碼分支
  14. 命令代碼分支的內容在Interpreter 2裡相關的內容有:
  15. case @list[@index].code
  16. when 101 # 文章的顯示
  17. return command_101
  18. when 102 # 顯示選擇項
  19. return command_102
  20. when 402 # [**] 的情況下
  21. return command_402
  22. 。。。。。。
  23. 眼前一亮了吧學會使用它們可以找到一些你不知道的代碼。

  24. 第二課
  25. 尋覓代碼
  26. 假如我編寫腳本時需要增減防具,那麼我們找到:
  27. 。。。。。。
  28. when 127 # 增減武器
  29. return command_127
  30. when 128 # 增減防具
  31. return command_128
  32. 。。。。。。
  33. 發現增減防具的代碼是128,找到後全域搜索128。
  34. 找到Interpreter 4中有DEF 128定位過去
  35. 第三棵
  36. 華麗的宣佈戰果吧!
  37. # 獲取要操作的值
  38. value = operate_value(@parameters[1], @parameters[2], @parameters[3])
  39. # 增減防具
  40. $game_party.gain_armor(@parameters[0], value)
  41. 先找value的值定位到operate_value
  42. 得出value確定的是獲得物品的數量
  43. 而在搜索中Game_Actor告訴我們@parameters[0]是用來確定獲得物品的ID。那麼獲得防具的代碼是:
  44. $game_party.gain_armor(ID,數量)
  45. 作業:
  46. 增減敵人的 HP的操作編號及語法是什麼?快快撥打回帖告訴我吧,第1個告訴我的人會獲得1VIP~~~
复制代码


-回帖-
--------------------------------------------------------------------------------
【亿万星辰】
在翻译吻合的情况下,需要什么在F11里直接搜索事件操作的中文即可
--------------------------------------------------------------------------------
【Eclair】
解释器好像词典一样~

可是有些内容好像也很难看得懂....
--------------------------------------------------------------------------------
【gpra8764】
精神可嘉……鼓励下[表情]
--------------------------------------------------------------------------------
【风砂罗】
 



    value = enemy.sp
when 2 # MaxHP

Interpreter 4  里的~80行~~敌人的 这个吗老师~



还是说这个
class Interpreter
#--------------------------------------------------------------------------
# ● 增减敌人的 HP
#--------------------------------------------------------------------------
def command_331
# 获取操作值
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 处理循环
iterate_enemy(@parameters[0]) do |enemy|
# HP 不为 0 的情况下
if enemy.hp > 0
# 更改 HP (如果不允许战斗不能的状态就设置为 1)
if @parameters[4] == false and enemy.hp + value <= 0
enemy.hp = 1
else
enemy.hp += value
end
end
end
# 继续
return true
end




本人不懂脚本   不知道Interpreter那么有用   

就算回答错了   还是要感谢你的教学~
--------------------------------------------------------------------------------
【Eclair】
嗯~翻译器中使用了不少内建的简单方法~~~
所以对写脚本有很大的帮助呢~~~ :)
--------------------------------------------------------------------------------
【yangff】

(引用一段)

天啊!答案就在眼前~~
公布答案:
编号:331
语法:增加 $game_troop.enemies[敌人编号].hp += 增加量
减少 $game_troop.enemies[敌人编号].hp +=减少量
--------------------------------------------------------------------------------
【Eclair】
错了错了~~~~
错了哟~~~
--------------------------------------------------------------------------------
【yangff】
天哪!我编辑过啦!RP [表情]鄙视RP
--------------------------------------------------------------------------------
【风砂罗】

(引用一段)

不好意思 第1次学脚本~~[表情
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

6
 楼主| 发表于 2007-12-16 20:06:54 | 只看该作者
因为引入总贴
沉!
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 23:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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