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

Project1

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

[已经解决] 大家好,我想请教一个有关脚本的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
跳转到指定楼层
1
发表于 2012-12-2 19:29:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
前期有三个脚本windows_1,windows_2,windows_3
分别描述了三个窗口。

现在想做一个sence(名称为sence_1)脚本,把这三个窗口里同时显示出来,并且按esc退出。
我想显示的方法是,设定一个事件,当游戏主角激活事件后,显示一这个sence。
事件中引用脚本 $sence=Sence_1.new

那写sence脚本的具体思路是什么?
需要跟贴说明哪些问题?

或者给sence描述的一个传送门什么的......
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

2
发表于 2012-12-2 20:45:30 | 只看该作者
$sence=Sence_1.new  这是 XP 脚本的语句
但是这是 VA 区 那你是想问在XP里该怎么做 还是在VA里?











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
3
 楼主| 发表于 2012-12-2 23:57:57 | 只看该作者
后知后觉 发表于 2012-12-2 20:45
$sence=Sence_1.new  这是 XP 脚本的语句
但是这是 VA 区 那你是想问在XP里该怎么做 还是在VA里? ...

RGSS3的教程我没有找到一个能修改脚本逻辑和脚本控制窗口外观的教程 多数还是停留在介绍类对象这方面
完成一个脚本可能需要的更是一个系统的理解过程 因此在找不到教程后我套用的XP教程非法部分结合VA默认脚本
还请给一个事件激活窗口的通用例子或教程 辛苦
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
4
 楼主| 发表于 2012-12-2 23:58:51 | 只看该作者
dujian15 发表于 2012-12-2 23:57
RGSS3的教程我没有找到一个能修改脚本逻辑和脚本控制窗口外观的教程 多数还是停留在介绍类对象这方面
完 ...

手机敲字没标点
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
5
 楼主| 发表于 2012-12-3 09:13:07 | 只看该作者
后知后觉 发表于 2012-12-2 20:45
$sence=Sence_1.new  这是 XP 脚本的语句
但是这是 VA 区 那你是想问在XP里该怎么做 还是在VA里? ...

能接触到电脑了,我重新说一下吧。

我想知道VA怎么做。
但是VA现有的教程不太适应新手学习。

所以我先看XP的教程,看到里面写脚本的思路,然后按到VA上照猫画虎。

您需要我现在写的sence脚本来看一下么?
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

6
发表于 2012-12-3 12:30:13 | 只看该作者
本帖最后由 后知后觉 于 2012-12-3 12:42 编辑

不管是脚本新手还是老手.要在陌生的脚本里增减删.读脚本是必不可少的
脚本不外乎就是由对象的创建、方法的调用以及流程控制(条件分歧、循环等)这几个基础的方面构成.
默认脚本里有一个 SceneManager 的模块.这是专门用来管理场景的模块.
里面有这样的3个方法

  1.   #--------------------------------------------------------------------------
  2.   # ● 直接切换某个场景(无过渡)
  3.   #--------------------------------------------------------------------------
  4.   def self.goto(scene_class)
  5.     @scene = scene_class.new
  6.   end
  7.   #--------------------------------------------------------------------------
  8.   # ● 切换
  9.   #--------------------------------------------------------------------------
  10.   def self.call(scene_class)
  11.     @stack.push(@scene)
  12.     @scene = scene_class.new
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 返回到上一个场景
  16.   #--------------------------------------------------------------------------
  17.   def self.return
  18.     @scene = @stack.pop
  19.   end
复制代码
你看上面有汉字注释......
这个地方的 self 指的是 SceneManager 这个模块对象.
切换场景的时候就是这样调用
SceneManager.goto(Scene_1)
或者
SceneManager.call(Scene_1)
两者的区别是使用 call 切换的之后.
可以用 SceneManager.return 返回.
比如你现在的当前场景是 Scene_1
这时你调用 SceneManager.call(Scene_2) 进入了 Scene_2
然后你要返回 Scene_1 就可以直接调用 SceneManager.return
如果你是从 Scene_Map 进入的 Scene_2.
那么在 Scene_2 里调用 SceneManager.return 返回的就是 Scene_Map

VA和XP的不同.对按键的判断.VA是在窗口的刷新里.而不是像XP那样在 Scene 脚本里.
VA的 Scene 脚本里基本都是按键以后要调用执行的内容.
可以参考下默认脚本的 Scene_End

不知道你现在的脚本基础如何.就先说这么多咯.

ps.你这样一连发了连续的几帖不大好...

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分












你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
7
 楼主| 发表于 2012-12-3 14:30:47 | 只看该作者
后知后觉 发表于 2012-12-3 12:30
不管是脚本新手还是老手.要在陌生的脚本里增减删.读脚本是必不可少的
脚本不外乎就是由对象的创建、方法的 ...

谢谢,至少知道读哪个部分了。


我有一点计算机语言的基础吧,不算太多,脚本配合注释能看懂一部分,看不懂的也能知道怎么用。
大大说的我懂了。

昨天是手机打的,快没电了,我怕白打,所以就只能连发贴了...Sorry.
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
8
 楼主| 发表于 2012-12-4 09:01:48 | 只看该作者
后知后觉 发表于 2012-12-3 12:30
不管是脚本新手还是老手.要在陌生的脚本里增减删.读脚本是必不可少的
脚本不外乎就是由对象的创建、方法的 ...

补充问题:请问让sence影响热键的部分在哪里可以找到?有没有现成的使用范例?
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

9
发表于 2012-12-4 13:44:50 | 只看该作者
本帖最后由 后知后觉 于 2012-12-4 13:46 编辑
dujian15 发表于 2012-12-4 09:01
补充问题:请问让sence影响热键的部分在哪里可以找到?有没有现成的使用范例? ...


大部分的对按键的判断都在窗口里  Window_Selectable 这个光标窗口类 以及 其子类

  1.   #--------------------------------------------------------------------------
  2.   # ● 更新画面
  3.   #--------------------------------------------------------------------------
  4.   def update
  5.     super
  6.     process_cursor_move
  7.     process_handling
  8.   end
复制代码
process_handling 就是处理按键判断的 默认只响应 :C :B :R :L 这4个键位.
每个键位都有一个 符号类对象 的标示符 :ok :cancel :pagedown :pageup
然后在创建窗口类对象以后.给该对象设置 标示符对应的 方法类对象.设置用的方法是 set_handler
比如按下:C键后.会根据:C的标示符 :ok .然后根据 :ok 找到方法.然后调用方法.
看 Scene_Status  状态场景 里创建状态窗口的部分

  1.     @status_window = Window_Status.new(@actor)
  2.     @status_window.set_handler(:cancel,   method(:return_scene))
  3.     @status_window.set_handler(:pagedown, method(:next_actor))
  4.     @status_window.set_handler(:pageup,   method(:prev_actor))
复制代码
:cancel 对应的是 return_scene 这个方法
当按下 :B 的时候 就通过标示符 :cancel 找到该方法对象并调用
这里没有设置 :ok 对应的方法类对象 所以按下:C键的时候没有任何反映.
如果想要对 :C :B :R :L 以外的键位响应
可以不按照他这个格式.自己加到相应的 update 方法里就好了.根据自己的需要.
比如在 Scene_Status 里加这样的几行

  1.   def update
  2.     super
  3.     RPG::BGM.new("Battle4").play if Input.trigger?(:X)
  4.   end
复制代码
进入状态场景后按键盘上面的 A 键 就可以改变背景音乐

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分












你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
140
在线时间
345 小时
注册时间
2009-5-15
帖子
111
10
 楼主| 发表于 2012-12-7 08:41:05 | 只看该作者
后知后觉 发表于 2012-12-4 13:44
大部分的对按键的判断都在窗口里  Window_Selectable 这个光标窗口类 以及 其子类process_handling 就是 ...

大神您好,我想请教一个问题。

我想返回一个人是否学会哪一种技能例如,例如1号actor学会“特技”和“魔法”,数据库里默认技能种类中,“技能”的编号是1,那么
@actors[1].stype.include?(1) 的返回值为true
有没有现成的函数,或者需要怎么写?

我有一个想法,就是遍历这个actor的所有技能,再返回每一种技能种类,如果所有的种类中,含有stype_id == 1的情况返回true 否则返回false 不知道这样可以不?

但是如何遍历一个actor的所有skills,编译老说找不到方法。


for i in 0 .. ( $game_party.members.size - 1 ) do
      
      for j in 0 .. ( $game_party.members.skills.size ) do

        if $game_party.members.skills[j].stype_id == $data_skills[@Skill_id].stype_id


后面的balabalabala~~
敌人自动排列系统    1/1
技能类型着色   1/1
物品着色     0/1
仿网游强化系统    0/1
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 14:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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