Project1

标题: 我想把获取基本物理防御分为自己人跟敌人 [打印本页]

作者: 老司机带我飞啊    时间: 2019-9-1 18:23
标题: 我想把获取基本物理防御分为自己人跟敌人
如题 就是计算自己人防御按照原来公式,计算敌人防御的时候改成防御受到速度的影响。。请问怎么弄 本人新手 麻烦脚本带点注释
作者: 老司机带我飞啊    时间: 2019-9-1 18:25
顺便问下有没有新建工程脚本文件带注释非常多的。。对着帮助文档还是看不懂
作者: 灯笼菜刀王    时间: 2019-9-1 19:58
本帖最后由 灯笼菜刀王 于 2019-9-1 23:26 编辑

搜索  def base_pdef 可以在 game actor 和 game enemy 两个地方找到
这个就是基础防御设置

角色的是装备堆一起获得基础防御,  敌人是直接获取数据库设置的防御值,  你想改, 就在它后面 + 10086 就可以让基础防御增加10086点了

汉化版的XP注释应该是非常详细了, 详细到默认的时候110+K, 把注释全删了才50+K的程度, 虽然有些翻译是有点问题(比如柜台翻译成反击...,笑 不过看英文单词也能猜到是啥也没多大影响就是了)
作者: 老司机带我飞啊    时间: 2019-9-2 13:24
灯笼菜刀王 发表于 2019-9-1 19:58
搜索  def base_pdef 可以在 game actor 和 game enemy 两个地方找到
这个就是基础防御设置

我在问几个个问题啊我一直分不清
def pdef_str(str_val)
def pdef_str?(str_val)
for i in @states
这个分别是代表什么 def pder_str我能看懂加括号跟?就看不懂了
for i in 1..100能看懂 for i in @states是啥意思
作者: 灯笼菜刀王    时间: 2019-9-2 14:26
本帖最后由 灯笼菜刀王 于 2019-9-2 14:27 编辑
老司机带我飞啊 发表于 2019-9-2 13:24
我在问几个个问题啊我一直分不清
def pdef_str(str_val)
def pdef_str?(str_val)


加括号是表示带参数的方法, 括号内的就是代表参数的变量, 会在本方法里使用

末尾加问号是标准的函数命名格式, 它和普通函数没什么不同, 不过在XP脚本里, 末尾带问号的函数一般表示判断用

@states 是一个数组, 它是默认脚本里用来保存战斗者本身状态id的一个实变量, 你可以试试, 给1号角色附加不同状态后, 运行这个脚本 p $game_actors[1].states  看看它里面有什么

for i in Array 就是表示, 分别把数组里每一个单元赋值给变量i, 然后用它来运算,  具体解释可以看F1的循环说明
作者: 老司机带我飞啊    时间: 2019-9-2 16:45
本帖最后由 老司机带我飞啊 于 2019-9-2 16:47 编辑
灯笼菜刀王 发表于 2019-9-2 14:26
加括号是表示带参数的方法, 括号内的就是代表参数的变量, 会在本方法里使用

末尾加问号是标准的函数命名 ...


还是不懂啊,能不能来个例子啊,比如下面这个我就想知道element_id 在这个脚本里面是啥,代表什么,使用的时候又是多少,就是想知道一下过程,
def element_rate(element_id)
    # 获取对应属性有效度的数值
    table = [0,200,150,100,50,0,-100]
    result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
    # 状态能防御本属性的情况下效果减半
    for i in @states
      if $data_states.guard_element_set.include?(element_id)
        result /= 2
      end
    end
    # 过程结束
    return result
  end

还有就是def element_rate(element_id)这种在使用的时候是怎么算的比如 element_rate(element_id) > 4
如果在加一个又是怎么算的比如 def element_rate(element_id,state_id)
表达能力不是很强不知道你们看懂了没。。

作者: soulsaga    时间: 2019-9-2 16:57
本帖最后由 soulsaga 于 2019-9-2 17:09 编辑
老司机带我飞啊 发表于 2019-9-2 16:45
还是不懂啊,能不能来个例子啊,比如下面这个我就想知道element_id 在这个脚本里面是啥,代表什么,使用的 ...


element_id

是什么..你P一下就知道 是属性ID
P一下$data_enemies[@enemy_id].element_ranks[element_id]
P一下计算后的 result 得到的返回值就是计算后的结果
你就算加10个參数都不会有任何变化..因为调用脚本没用到..

结果是一样的..返回值没变就都一样
作者: 老司机带我飞啊    时间: 2019-9-2 18:38
soulsaga 发表于 2019-9-2 16:57
element_id

是什么..你P一下就知道 是属性ID

在重新表达一下。。
我是想知道就是类似这种def element_rate(element_id)这个括号里面的(element_id)在后面的定义起到什么作用,比如下面这个脚本那些是跟(element_id)有关联  有关联的时候起到什么作用。
就像这样 @states 是一个数组, 它是默认脚本里用来保存战斗者本身状态id的一个实变量, 解释@states 作用
我现在需要理解 在def 什么什么(什么什么) 就是这个()里面内容的意思以及跟后续定义有什么关联或者影响

  def element_rate(element_id)       ---假设 element_id = 10这里的(element_id)就代表10是这个意思吗
    # 获取对应属性有效度的数值
    table = [0,200,150,100,50,0,-100]
    result = table[$data_enemies[@enemy_id].element_ranks[element_id]]   ---这里(element_id)影响[element_id]吗,又是什么呢
    # 状态能防御本属性的情况下效果减半
    for i in @states
      if $data_states.guard_element_set.include?(element_id)  ---这里这里(element_id)影响(element_id)吗,又是什么呢
        result /= 2        
      end
    end
    # 过程结束
    return result
  end

至于计算比如这个element_rate(element_id)意思就是(element_id)这个括号里面的内容直接无视,element_rate是4那么他就是4 ,(element_id)不会影响是不。

作者: guoxiaomi    时间: 2019-9-2 18:41
没办法了,菜鸟教程吧:https://www.runoob.com/ruby/ruby-method.html
作者: soulsaga    时间: 2019-9-2 19:44
本帖最后由 soulsaga 于 2019-9-2 19:57 编辑
老司机带我飞啊 发表于 2019-9-2 18:38
在重新表达一下。。
我是想知道就是类似这种def element_rate(element_id)这个括号里面的(element_id)在 ...


这里element_id是被传的參数..
假设element_id是10
这脚本里面的element_id没被修改过的话统统是10
DEF后面再加參数本身没有影响..但可以在该方法的脚本应用新加的參数 DEF的參数名可以随意定义..传过来的參数只跟位置有关

顺帶一提DEF加了參数调用方法时如果没有同数量的參数会报错..
加新參数时这样写
參数名=你定义的默认值
那么參数就有一个默认值..即使调用方法时后面没有填新參数也不会报错..

作者: 老司机带我飞啊    时间: 2019-9-2 21:40
soulsaga 发表于 2019-9-2 19:44
这里element_id是被传的參数..
假设element_id是10
这脚本里面的element_id没被修改过的话统统是10

这正是我需要的答案啊,由于我没啥基础基本啥的不懂,不解释很明白的话看不懂。
还有就是你说的P我开始没搞懂,现在我知道用P看脚本的运行调用了,
    result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
    p $data_enemies[@enemy_id].element_ranks[element_id]
    p result
    # 状态能防御本属性的情况下效果减半
这功能太给力了,感谢各位大佬的指导啊






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