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

Project1

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

[有事请教] MV脚本问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
115
在线时间
19 小时
注册时间
2018-7-30
帖子
19
跳转到指定楼层
1
发表于 2019-8-2 21:51:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
本帖最后由 沙皇蘑菇 于 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;
测试出来是这一行出了问题,现在问题变成了怎么样才能让两个角色的装备相同。
希望各位大佬能帮我解答。


代码是不完整的,但是里面所有的变量都定义过,所以不是这方面的问题

最佳答案

查看完整内容

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 折寿啊...

Lv1.梦旅人

梦石
0
星屑
183
在线时间
6 小时
注册时间
2017-9-28
帖子
15
2
发表于 2019-8-2 21:51:49 | 只看该作者
本帖最后由 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 折寿啊...
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4344
在线时间
552 小时
注册时间
2017-12-2
帖子
41
3
发表于 2019-8-3 00:10:47 | 只看该作者
$gameActors.actor(1000).changeEquip(1, $dataWeapons[5]);
$gameActors.actor(1000).changeEquip(3, $dataArmors[5]);

点评

武器默认的slotId应该是0  发表于 2019-8-3 00:22
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9617
在线时间
566 小时
注册时间
2017-9-28
帖子
208
4
发表于 2019-8-3 09:50:48 | 只看该作者
“让两个角色装备相同”,装备是一种有限的物品,你说的使相同是消耗背包中已有的相同装备还是不消耗(复制人.jpg)
喵喵喵
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
115
在线时间
19 小时
注册时间
2018-7-30
帖子
19
5
 楼主| 发表于 2019-8-3 10:21:32 | 只看该作者
本帖最后由 沙皇蘑菇 于 2019-8-3 11:38 编辑
hyrious 发表于 2019-8-3 09:50
“让两个角色装备相同”,装备是一种有限的物品,你说的使相同是消耗背包中已有的相同装备还是不消耗(复制 ...


不消耗,是要强制换上这个装备。实际上这个1000号角色的作用是做为临时角色。
实际上原来用了这一句脚本
$gameActors.actor(1000)._equips = $gameActors.actor(actorpool[this._actorIndex])._equips;
但是发现这么做会导致当前角色的装备更换
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
183
在线时间
6 小时
注册时间
2017-9-28
帖子
15
6
发表于 2019-8-3 14:59:42 | 只看该作者
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips 指向 A的 _equips时 等于 A和B 指向的同一个 数组.
所以 1000号的B角色改变装备时 也会导致 A角色的装备被替换了.
解决办法时
$gameActors.actor(1000)._equips = [...$gameActors.actor(actorpool[this._actorIndex])._equips];
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
183
在线时间
6 小时
注册时间
2017-9-28
帖子
15
7
发表于 2019-8-3 15:00:59 | 只看该作者
本帖最后由 hjpk1 于 2019-8-3 15:11 编辑
hjpk1 发表于 2019-8-3 14:59
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips  ...


这时一个 关于 浅拷贝和 深拷贝的 典型问题.
鼓掌,撒花.
ps: 笨蛋蘑菇 我不会告诉你我就是曾经那个 萌萌哒的爱酱哈哈.
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
115
在线时间
19 小时
注册时间
2018-7-30
帖子
19
8
 楼主| 发表于 2019-8-3 15:47:39 | 只看该作者
hjpk1 发表于 2019-8-3 14:59
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips  ...

好像依然是跟着变动的……
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
115
在线时间
19 小时
注册时间
2018-7-30
帖子
19
9
 楼主| 发表于 2019-8-3 16:00:49 | 只看该作者
hjpk1 发表于 2019-8-3 14:59
我来告诉你为什么, _equips 是个数组.
A角色的 _equips 是一个 指向 数组的指针.
当你把 B角色的 _equips  ...

找到的其他深拷贝方法都会导致Item.object未定义
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
183
在线时间
6 小时
注册时间
2017-9-28
帖子
15
10
发表于 2019-8-3 16:32:40 | 只看该作者
本帖最后由 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 )
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-14 23:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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