Project1

标题: MV脚本问题 [打印本页]

作者: 沙皇蘑菇    时间: 2019-8-2 21:51
标题: MV脚本问题
本帖最后由 沙皇蘑菇 于 2019-8-2 22:50 编辑

JAVASCRIPT 代码复制
  1. $gameActors.actor(1000)._equips = $gameActors.actor(actorpool[this._actorIndex])._equips;
  2.     $gameActors.actor(1000).mhp = $gameActors.actor(actorpool[this._actorIndex]).mhp;
  3.     $gameActors.actor(1000).mmp = $gameActors.actor(actorpool[this._actorIndex]).mmp;
  4.     $gameActors.actor(1000).atk = $gameActors.actor(actorpool[this._actorIndex]).atk;
  5.     $gameActors.actor(1000).def = $gameActors.actor(actorpool[this._actorIndex]).def;
  6.     $gameActors.actor(1000).mat = $gameActors.actor(actorpool[this._actorIndex]).mat;
  7.     $gameActors.actor(1000).mdf = $gameActors.actor(actorpool[this._actorIndex]).mdf;
  8.     $gameActors.actor(1000).agi = $gameActors.actor(actorpool[this._actorIndex]).agi;
  9.     $gameActors.actor(1000).luk = $gameActors.actor(actorpool[this._actorIndex]).luk;   
  10.     $gameActors.actor(1000).changeEquip(1, 5);
  11.     var actorstatus = new Array(8);
  12.     actorstatus[0] = $gameActors.actor(1000).mhp;
  13.     actorstatus[1] = $gameActors.actor(1000).mmp;
  14.     actorstatus[2] = $gameActors.actor(1000).atk;
  15.     actorstatus[3] = $gameActors.actor(1000).def;
  16.     actorstatus[4] = $gameActors.actor(1000).mat;
  17.     actorstatus[5] = $gameActors.actor(1000).mdf;
  18.     actorstatus[6] = $gameActors.actor(1000).agi;
  19.     actorstatus[7] = $gameActors.actor(1000).luk;
  20.     console.log($gameActors.actor(1000).atk);
  21.     console.log($gameActors.actor(1000)._equips);

这一段代码应该换掉第1000号角色的装备,但是却没有,为什么?
$gameActors.actor(1000)._equips = $gameActors.actor(actorpool[this._actorIndex])._equips;
测试出来是这一行出了问题,现在问题变成了怎么样才能让两个角色的装备相同。
希望各位大佬能帮我解答。


代码是不完整的,但是里面所有的变量都定义过,所以不是这方面的问题
作者: hjpk1    时间: 2019-8-2 21:51
本帖最后由 hjpk1 于 2019-8-3 17:11 编辑

function hjpk1(ai){
    let bi = []
    for(let n = 0; n < ai.length; n++ ){
        bi[n] = new Game_Item
        for(let k of keys(b[n])){
            bi[n][k] = ai[n][k]
        }
    }
    return bi
}

$gameActors.actor(1000)._equips = hjpk1( $gameActors.actor(actorpool[this._actorIndex])._equips )
我讨厌富文本编辑器
这个才是正确的答案..... emmm 折寿啊...
作者: Mehmet    时间: 2019-8-3 00:10
$gameActors.actor(1000).changeEquip(1, $dataWeapons[5]);
$gameActors.actor(1000).changeEquip(3, $dataArmors[5]);
作者: hyrious    时间: 2019-8-3 09:50
“让两个角色装备相同”,装备是一种有限的物品,你说的使相同是消耗背包中已有的相同装备还是不消耗(复制人.jpg)
作者: 沙皇蘑菇    时间: 2019-8-3 10:21
本帖最后由 沙皇蘑菇 于 2019-8-3 11:38 编辑
hyrious 发表于 2019-8-3 09:50
“让两个角色装备相同”,装备是一种有限的物品,你说的使相同是消耗背包中已有的相同装备还是不消耗(复制 ...


不消耗,是要强制换上这个装备。实际上这个1000号角色的作用是做为临时角色。
实际上原来用了这一句脚本
$gameActors.actor(1000)._equips = $gameActors.actor(actorpool[this._actorIndex])._equips;
但是发现这么做会导致当前角色的装备更换
作者: hjpk1    时间: 2019-8-3 14:59
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips 指向 A的 _equips时 等于 A和B 指向的同一个 数组.
所以 1000号的B角色改变装备时 也会导致 A角色的装备被替换了.
解决办法时
$gameActors.actor(1000)._equips = [...$gameActors.actor(actorpool[this._actorIndex])._equips];
作者: hjpk1    时间: 2019-8-3 15:00
本帖最后由 hjpk1 于 2019-8-3 15:11 编辑
hjpk1 发表于 2019-8-3 14:59
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips  ...


这时一个 关于 浅拷贝和 深拷贝的 典型问题.
鼓掌,撒花.
ps: 笨蛋蘑菇 我不会告诉你我就是曾经那个 萌萌哒的爱酱哈哈.
作者: 沙皇蘑菇    时间: 2019-8-3 15:47
hjpk1 发表于 2019-8-3 14:59
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips  ...

好像依然是跟着变动的……
作者: 沙皇蘑菇    时间: 2019-8-3 16:00
hjpk1 发表于 2019-8-3 14:59
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips  ...

找到的其他深拷贝方法都会导致Item.object未定义
作者: hjpk1    时间: 2019-8-3 16:32
本帖最后由 hjpk1 于 2019-8-3 16:42 编辑

function hjpk1(ai){
    let bi = []
    for(let i = 0; i < ai.length; i++ ){
        bi = new Game_Item
        for(let k of keys(bi)){
            bi[k] = ai[k]
        }
    }
    return bi
}

$gameActors.actor(1000)._equips = hjpk1( $gameActors.actor(actorpool[this._actorIndex])._equips )
作者: 沙皇蘑菇    时间: 2019-8-3 16:39
本帖最后由 沙皇蘑菇 于 2019-8-3 16:42 编辑
hjpk1 发表于 2019-8-3 16:32
function hjpk1(ai){
    let items = []
    for(let i = 0; i < ai.length; i++ ){


item is not defined……把items改成item后,keys is not defined

作者: hjpk1    时间: 2019-8-3 16:41
沙皇蘑菇 发表于 2019-8-3 16:39
item is not defined……

我的错 刚刚该了
作者: hjpk1    时间: 2019-8-3 16:43
我修改了 但是页面没有更新...还是显示的错误的 哈哈
作者: 沙皇蘑菇    时间: 2019-8-3 16:48
hjpk1 发表于 2019-8-3 16:43
我修改了 但是页面没有更新...还是显示的错误的 哈哈

keys is not defined
作者: 沙皇蘑菇    时间: 2019-8-3 16:50
hjpk1 发表于 2019-8-3 16:43
我修改了 但是页面没有更新...还是显示的错误的 哈哈

把keys去掉解决了,跪谢大佬
作者: hjpk1    时间: 2019-8-3 16:54
方法是没有问题的哦 我自己能正常食用了
作者: hjpk1    时间: 2019-8-3 17:13
本帖最后由 hjpk1 于 2019-8-3 17:14 编辑

```js
console.log(257)
```
这个编辑器 真落后 还不支持 markdown.....




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