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