Open ShiraGawaAnri opened 2 years ago
*getunitname
*getunitname ; 可以達到你要的需求?
getunitname并不如strnpcinfo详细方便 尤其在副本里copynpc的场合,没法取得#hidden ::unique 前者结合displayname用于instance_npcname,后者可以 donpcevent strnpcinfo(3,.@GID)+"::"+"EventLabel"; (仅限副本内 copynpc返回的npc) 其他场合没并有特别需求
取得 #hidden name = sscanf(getunitname(.@gid), "%[^#]#%s", .@visible$, .@hidden$);
或是 explode(.@name$, getunitname(.@gid), "#"); .@visible$=.@name$[0]; .@hidden$=.@name$[1];
取得 ::unique name
在副本裡 ::unique 等於 instance_npcname("visible#hidden")
副本裡取得 ::unique name = instance_npcname(getunitname(.@gid))
回到問題原始點, 既然 copynpc 是可以預期的名稱, 為什麼要轉成 .@gid
, 用字串保存不是更簡單?
取得 #hidden name =
sscanf(getunitname(.@gid), "%[^#]#%s", .@visible$, .@hidden$);
或是explode(.@name$, getunitname(.@gid), "#"); .@visible$=.@name$[0]; .@hidden$=.@name$[1];
取得 ::unique name 在副本裡 ::unique 等於
instance_npcname("visible#hidden")
副本裡取得 ::unique name =instance_npcname(getunitname(.@gid))
回到問題原始點, 既然 copynpc 是可以預期的名稱, 為什麼要轉成
.@gid
, 用字串保存不是更簡單?
这情况下取得#hidden name过于复杂了 为什么要用#hidden呢,可能是个人习惯的问题 由于RA(Auriga实现了)没有实现副本内Npc自拥变量,并且copynpc的.变量会被共享,即使是被copy的npc也希望功能也有所区别的情况下, 会在#hidden末尾处加入数字作标识 当然以上explode可以封装来代替,但没必要那么麻烦
接着是instance_npcname对于copynpc后的用法
.@gid = copynpc(xx);
.@label$ = strnpcinfo(0,.@gid)+"::"+"OnMobDead";
.@mid = monster(.@map$,.@x,.@y,"--ja--",1002,1,.@label$);
其实是无须instance_npcname,copynpc后就是独立个体了,因此在副本里也不需要instance_npcname 注:这个时候不是100%确定 #hidden 部分是否被占用了,这个和被copynpc的源是否写在副本内有关系。
回答最后一点,copynpc返回的是gid,getunitname也是用gid,无论怎么样我肯定是先保存一份gid,再图谋其他不是吗?
功能建议或构想
*strnpcinfo(,{})
在原来的基础上支持GID获取指定NPC的String信息 常用于copynpc返回npcid,快捷donpcevent(由于donpcevent并不支持Id的缘故)
想实现它的原因
copynpc在副本里表现并不友好
参考信息
No response