Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Expand] strnpcinfo 支持指定Npc Id #580

Open
ShiraGawaAnri opened this issue May 19, 2022 · 4 comments
Open

[Expand] strnpcinfo 支持指定Npc Id #580

ShiraGawaAnri opened this issue May 19, 2022 · 4 comments

Comments

@ShiraGawaAnri
Copy link

ShiraGawaAnri commented May 19, 2022

功能建议或构想

*strnpcinfo(,{<npc_gid>})

在原来的基础上支持GID获取指定NPC的String信息
常用于copynpc返回npcid,快捷donpcevent(由于donpcevent并不支持Id的缘故)

想实现它的原因

copynpc在副本里表现并不友好

参考信息

No response

@jian916
Copy link

jian916 commented May 20, 2022

*getunitname ; 可以達到你要的需求?

@ShiraGawaAnri
Copy link
Author

*getunitname ; 可以達到你要的需求?

getunitname并不如strnpcinfo详细方便
尤其在副本里copynpc的场合,没法取得#hidden ::unique
前者结合displayname用于instance_npcname,后者可以 donpcevent strnpcinfo(3,.@gid)+"::"+"EventLabel"; (仅限副本内 copynpc返回的npc)
其他场合没并有特别需求

@jian916
Copy link

jian916 commented May 20, 2022

取得 #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, 用字串保存不是更簡單?

@ShiraGawaAnri
Copy link
Author

ShiraGawaAnri commented May 21, 2022

取得 #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,再图谋其他不是吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants