Skip to content

Commit 4bfd7ba

Browse files
committed
fix: Player::talkAs #47
1 parent f6cecd2 commit 4bfd7ba

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

src/legacy/api/PlayerAPI.cpp

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "api/PlayerAPI.h"
22

3+
#include "EventAPI.h"
34
#include "MoreGlobal.h"
45
#include "ScriptX/ScriptX.h"
56
#include "api/APIHelp.h"
@@ -171,6 +172,7 @@ ClassDefine<PlayerClass> PlayerClassBuilder =
171172
.instanceFunction("disconnect", &PlayerClass::kick)
172173
.instanceFunction("tell", &PlayerClass::tell)
173174
.instanceFunction("talkAs", &PlayerClass::talkAs)
175+
.instanceFunction("talkTo", &PlayerClass::talkTo)
174176
.instanceFunction("sendText", &PlayerClass::tell)
175177
.instanceFunction("setTitle", &PlayerClass::setTitle)
176178
.instanceFunction("rename", &PlayerClass::rename)
@@ -1525,14 +1527,25 @@ Local<Value> PlayerClass::talkAs(const Arguments& args) {
15251527
Player* player = get();
15261528
if (!player) return Local<Value>();
15271529

1528-
TextPacket pkt = TextPacket::createChat(
1529-
player->getRealName(),
1530-
args[0].asString().toString(),
1531-
player->getXuid(),
1532-
player->getPlatformOnlineId()
1533-
);
1534-
;
1535-
ll::service::getServerNetworkHandler()->handle(player->getNetworkIdentifier(), pkt);
1530+
TextPacket pkt =
1531+
TextPacket::createChat(player->getName(), args[0].asString().toString(), player->getXuid(), "");
1532+
if (ll::service::getLevel().has_value()) {
1533+
IF_LISTENED(EVENT_TYPES::onChat) {
1534+
CallEventRtnValue(
1535+
EVENT_TYPES::onChat,
1536+
Boolean::newBoolean(false),
1537+
PlayerClass::newPlayer(player),
1538+
String::newString(args[0].asString().toString())
1539+
);
1540+
}
1541+
IF_LISTENED_END(EVENT_TYPES::onChat);
1542+
ll::service::getLevel()->forEachPlayer([&pkt](Player& player) {
1543+
player.sendNetworkPacket(pkt);
1544+
return true;
1545+
});
1546+
} else {
1547+
Boolean::newBoolean(false);
1548+
}
15361549
return Boolean::newBoolean(true);
15371550
}
15381551
CATCH("Fail in talkAs!");
@@ -1548,13 +1561,8 @@ Local<Value> PlayerClass::talkTo(const Arguments& args) {
15481561
Player* player = get();
15491562
if (!player) return Local<Value>();
15501563

1551-
TextPacket pkt = TextPacket();
1552-
pkt.createChat(
1553-
player->getRealName(),
1554-
args[0].asString().toString(),
1555-
player->getXuid(),
1556-
player->getPlatformOnlineId()
1557-
);
1564+
TextPacket pkt =
1565+
TextPacket::createChat(player->getRealName(), args[0].asString().toString(), player->getXuid(), "");
15581566
target->sendNetworkPacket(pkt);
15591567
return Boolean::newBoolean(true);
15601568
}

0 commit comments

Comments
 (0)