Hello World

吞风吻雨葬落日 欺山赶海踏雪径

0%

TrinityCore 指定位置增加铁砧

因为大部分工程训练师旁边都没有铁砧,很不方便。这次研究下载Trinity指定位置增加铁砧的方案。

gm 命令添加

遇事不懂,先问chatgpt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在TrinityCore中,您可以使用以下步骤通过gm命令增加一个铁砧:

打开您的服务器控制台或通过gm账户登录到游戏中。

使用以下gm命令生成一个铁砧:
.gobject add <铁砧模板的ID>

铁砧的模板ID可以在游戏数据库中找到,通常在gameobject_template表中。您可以使用SQL查询查找铁砧的模板ID:
SELECT entry, name FROM gameobject_template WHERE name LIKE '%铁砧%';

在查询结果中选择一个适合的铁砧模板ID,并将其替换掉上述gm命令中的<铁砧模板的ID>。

完成上述命令后,您应该能够在游戏中找到一个新生成的铁砧。

请注意,这些步骤是基于TrinityCore的一般操作,具体的操作可能会因服务器设置的不同而有所不同。
在执行任何gm命令之前,请确保您拥有足够的权限和了解服务器的操作指南。

首先,铁砧属于 game object , 是通过gm命令的 gobject 管理的,数据表在world库中

  • gameobject_template 模板表
  • gameobject 实例表

直接上游戏并连接数据库确认下:
20230929195601.png

gameobject_templategameobject 表中查看下:

1
2
3
4
5
6
7
8
9
10
11
> SELECT * FROM gameobject_template where entry = 173065;
entry |type|displayId|name|IconName|castBarCaption|unk1|faction|flags|size|Data0|Data1|Data2|Data3|Data4|Data5|Data6|Data7|Data8|Data9|Data10|Data11|Data12|Data13|Data14|Data15|Data16|Data17|Data18|Data19|Data20|Data21|Data22|Data23|AIName|ScriptName|VerifiedBuild|isnew|
------+----+---------+----+--------+--------------+----+-------+-----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+----------+-------------+-----+
173065| 8| 273|铁砧 | | | | 0| 0|1.85| 1| 10| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| | | 12340| 0|


> select * from gameobject g where id = 173065;
guid |id |map|zoneId|areaId|spawnMask|phaseMask|position_x|position_y|position_z|orientation|rotation0|rotation1|rotation2|rotation3|spawntimesecs|animprogress|state|VerifiedBuild|isnew|
-----+------+---+------+------+---------+---------+----------+----------+----------+-----------+---------+---------+---------+---------+-------------+------------+-----+-------------+-----+
27854|173065|530| 0| 0| 1| 1| -3099.95| 2593.29| 62.7088| 0.914039| 0.0| 0.0| 0.441275| 0.897372| 25| 0| 1| 0| 0|
10187|173065| 1| 0| 0| 1| 1| 2057.71| -4798.63| 22.5034| 0.802851| 0.0| 0.0| 0.390731| 0.920505| 900| 100| 1| 0| 0|

下面说明有两个实例,看地图map id就可以猜出来第二条是奥格瑞玛的(奥格mapid = 1) ,不确定可以人物站过去使用 .gps查看下定位。

好了,这次来到工程训练师旁边,找个合适的位置,直接使用 .gobject add 173065 即可在指定位置添加一个铁砧。
20230929195602.png

具体命令参考 TrinityCore官网

加完在查看数据库,就会发现多了一条

1
2
3
4
5
6
select * from gameobject g  where id = 173065;
guid |id |map|zoneId|areaId|spawnMask|phaseMask|position_x|position_y|position_z|orientation|rotation0|rotation1|rotation2|rotation3|spawntimesecs|animprogress|state|VerifiedBuild|isnew|
------+------+---+------+------+---------+---------+----------+----------+----------+-----------+---------+---------+---------+---------+-------------+------------+-----+-------------+-----+
27854|173065|530| 0| 0| 1| 1| -3099.95| 2593.29| 62.7088| 0.914039| 0.0| 0.0| 0.441275| 0.897372| 25| 0| 1| 0| 0|
10187|173065| 1| 0| 0| 1| 1| 2057.71| -4798.63| 22.5034| 0.802851| 0.0| 0.0| 0.390731| 0.920505| 900| 100| 1| 0| 0|
169381|173065| 1| 0| 0| 1| 1| 2043.61| -4757.41| 29.3856| 4.86094| 0.0| 0.0| 0.0| 1.0| 300| 255| 1| 0| 0|

Eluna 脚本添加

一般超级炉石都做了随身商人,同理,也可以做随身铁砧等内容。
参考随身商人的脚本

1
local NPC=player:SpawnCreature(entry,x,y,z,0, 3,ST.TIME*1000)

查看下Eluna的API(上面确定了 铁砧是GameObject类型),直接查看WorldObject类的方法,找到 SummonGameObject正符合,测试一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
TestIt=function(player)--test it
if(player:IsInCombat())then
player:SendAreaTriggerMessage("不能在战斗中召唤。")
else
local x,y,z=player:GetX()+0.1,player:GetY(),player:GetZ()
local NPC=player:SummonGameObject(173065,x,y,z,20*1000) -- 20s
if(NPC)then
player:SendAreaTriggerMessage("召唤成功")
else
player:SendAreaTriggerMessage("召唤失败")
end
end
end

控制台 .reload eluna 重载脚本,成功召唤了存在20s的铁砧。