Fix for quest::GetZoneLongName(zone_short_name) garbled output (#1134)

This commit is contained in:
Chris Miles 2020-10-31 18:47:43 -05:00 committed by GitHub
parent 25c596656c
commit be12cad7bd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 59 additions and 60 deletions

View File

@ -3733,10 +3733,11 @@ XS(XS__GetZoneLongName) {
if (items != 1)
Perl_croak(aTHX_ "Usage: quest::GetZoneLongName(string zone)");
dXSTARG;
char *zone = (char *) SvPV_nolen(ST(0));
Const_char *RETVAL = quest_manager.GetZoneLongName(zone);
sv_setpv(TARG, RETVAL);
std::string zone = (std::string) SvPV_nolen(ST(0));
std::string RETVAL = quest_manager.GetZoneLongName(zone);
sv_setpv(TARG, RETVAL.c_str());
XSprePUSH;
PUSHTARG;
XSRETURN(1);
@ -3767,7 +3768,7 @@ XS(XS__crosszoneassigntaskbycharid) {
if (items == 3) {
enforce_level_requirement = (bool) SvTRUE(ST(2));
}
}
quest_manager.CrossZoneAssignTaskByCharID(character_id, task_id, enforce_level_requirement);
}
@ -3801,13 +3802,13 @@ XS(XS__crosszoneassigntaskbyraidid) {
int raid_id = (int) SvIV(ST(0));
uint32 task_id = (uint32) SvIV(ST(1));
bool enforce_level_requirement = false;
if (items == 3) {
enforce_level_requirement = (bool) SvTRUE(ST(2));
}
quest_manager.CrossZoneAssignTaskByRaidID(raid_id, task_id, enforce_level_requirement);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneassigntaskbyguildid);
@ -3825,7 +3826,7 @@ XS(XS__crosszoneassigntaskbyguildid) {
}
quest_manager.CrossZoneAssignTaskByGuildID(guild_id, task_id, enforce_level_requirement);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonecastspellbycharid);
@ -3838,7 +3839,7 @@ XS(XS__crosszonecastspellbycharid) {
uint32 spell_id = (uint32) SvIV(ST(1));
quest_manager.CrossZoneCastSpellByCharID(character_id, spell_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonecastspellbygroupid);
@ -3851,7 +3852,7 @@ XS(XS__crosszonecastspellbygroupid) {
uint32 spell_id = (uint32) SvIV(ST(1));
quest_manager.CrossZoneCastSpellByGroupID(group_id, spell_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonecastspellbyraidid);
@ -3864,7 +3865,7 @@ XS(XS__crosszonecastspellbyraidid) {
uint32 spell_id = (uint32) SvIV(ST(1));
quest_manager.CrossZoneCastSpellByRaidID(raid_id, spell_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonecastspellbyguildid);
@ -3877,7 +3878,7 @@ XS(XS__crosszonecastspellbyguildid) {
uint32 spell_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneCastSpellByGuildID(guild_id, spell_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonedisabletaskbycharid);
@ -3890,7 +3891,7 @@ XS(XS__crosszonedisabletaskbycharid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneDisableTaskByCharID(char_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonedisabletaskbygroupid);
@ -3903,7 +3904,7 @@ XS(XS__crosszonedisabletaskbygroupid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneDisableTaskByGroupID(group_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonedisabletaskbyraidid);
@ -3916,7 +3917,7 @@ XS(XS__crosszonedisabletaskbyraidid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneDisableTaskByRaidID(raid_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonedisabletaskbyguildid);
@ -3929,7 +3930,7 @@ XS(XS__crosszonedisabletaskbyguildid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneDisableTaskByGuildID(guild_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneenabletaskbycharid);
@ -3942,7 +3943,7 @@ XS(XS__crosszoneenabletaskbycharid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneEnableTaskByCharID(char_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneenabletaskbygroupid);
@ -3955,7 +3956,7 @@ XS(XS__crosszoneenabletaskbygroupid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneEnableTaskByGroupID(group_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneenabletaskbyraidid);
@ -3968,7 +3969,7 @@ XS(XS__crosszoneenabletaskbyraidid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneEnableTaskByRaidID(raid_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneenabletaskbyguildid);
@ -3981,7 +3982,7 @@ XS(XS__crosszoneenabletaskbyguildid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneEnableTaskByGuildID(guild_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonefailtaskbycharid);
@ -3994,7 +3995,7 @@ XS(XS__crosszonefailtaskbycharid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneFailTaskByCharID(char_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonefailtaskbygroupid);
@ -4007,7 +4008,7 @@ XS(XS__crosszonefailtaskbygroupid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneFailTaskByGroupID(group_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonefailtaskbyraidid);
@ -4020,7 +4021,7 @@ XS(XS__crosszonefailtaskbyraidid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneFailTaskByRaidID(raid_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonefailtaskbyguildid);
@ -4033,7 +4034,7 @@ XS(XS__crosszonefailtaskbyguildid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneFailTaskByGuildID(guild_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonemarqueebycharid);
@ -4390,7 +4391,7 @@ XS(XS__crosszoneremovetaskbycharid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneRemoveTaskByCharID(char_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneremovetaskbygroupid);
@ -4403,7 +4404,7 @@ XS(XS__crosszoneremovetaskbygroupid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneRemoveTaskByGroupID(group_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneremovetaskbyraidid);
@ -4416,7 +4417,7 @@ XS(XS__crosszoneremovetaskbyraidid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneRemoveTaskByRaidID(raid_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneremovetaskbyguildid);
@ -4429,7 +4430,7 @@ XS(XS__crosszoneremovetaskbyguildid) {
uint32 task_id = (uint32) SvUV(ST(1));
quest_manager.CrossZoneRemoveTaskByGuildID(guild_id, task_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneresetactivitybycharid);
@ -4443,7 +4444,7 @@ XS(XS__crosszoneresetactivitybycharid) {
int activity_id = (int) SvIV(ST(2));
quest_manager.CrossZoneResetActivityByCharID(char_id, task_id, activity_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneresetactivitybygroupid);
@ -4457,7 +4458,7 @@ XS(XS__crosszoneresetactivitybygroupid) {
int activity_id = (int) SvIV(ST(2));
quest_manager.CrossZoneResetActivityByGroupID(group_id, task_id, activity_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneresetactivitybyraidid);
@ -4471,7 +4472,7 @@ XS(XS__crosszoneresetactivitybyraidid) {
int activity_id = (int) SvIV(ST(2));
quest_manager.CrossZoneResetActivityByRaidID(raid_id, task_id, activity_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneresetactivitybyguildid);
@ -4485,7 +4486,7 @@ XS(XS__crosszoneresetactivitybyguildid) {
int activity_id = (int) SvIV(ST(2));
quest_manager.CrossZoneResetActivityByGuildID(guild_id, task_id, activity_id);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszonesetentityvariablebynpctypeid);
@ -4684,7 +4685,7 @@ XS(XS__crosszoneupdateactivitybycharid) {
}
quest_manager.CrossZoneUpdateActivityByCharID(char_id, task_id, activity_id, activity_count);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneupdateactivitybygroupid);
@ -4702,7 +4703,7 @@ XS(XS__crosszoneupdateactivitybygroupid) {
}
quest_manager.CrossZoneUpdateActivityByGroupID(group_id, task_id, activity_id, activity_count);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneupdateactivitybyraidid);
@ -4720,7 +4721,7 @@ XS(XS__crosszoneupdateactivitybyraidid) {
}
quest_manager.CrossZoneUpdateActivityByRaidID(raid_id, task_id, activity_id, activity_count);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__crosszoneupdateactivitybyguildid);
@ -4738,7 +4739,7 @@ XS(XS__crosszoneupdateactivitybyguildid) {
}
quest_manager.CrossZoneUpdateActivityByGuildID(guild_id, task_id, activity_id, activity_count);
}
XSRETURN_EMPTY;
XSRETURN_EMPTY;
}
XS(XS__worldwideassigntask);
@ -4753,7 +4754,7 @@ XS(XS__worldwideassigntask) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4775,7 +4776,7 @@ XS(XS__worldwidecastspell) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4797,7 +4798,7 @@ XS(XS__worldwidedisabletask) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4819,7 +4820,7 @@ XS(XS__worldwideenabletask) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4841,7 +4842,7 @@ XS(XS__worldwidefailtask) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4868,7 +4869,7 @@ XS(XS__worldwidemarquee) {
if (items == 7) {
min_status = (uint8) SvUV(ST(6));
}
if (items == 8) {
max_status = (uint8) SvUV(ST(7));
}
@ -4891,7 +4892,7 @@ XS(XS__worldwidemessage) {
if (items == 3) {
min_status = (uint8) SvUV(ST(2));
}
if (items == 4) {
max_status = (uint8) SvUV(ST(3));
}
@ -4914,7 +4915,7 @@ XS(XS__worldwidemove) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4936,7 +4937,7 @@ XS(XS__worldwidemoveinstance) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4958,7 +4959,7 @@ XS(XS__worldwideremovespell) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -4980,7 +4981,7 @@ XS(XS__worldwideremovetask) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(2));
}
@ -5003,7 +5004,7 @@ XS(XS__worldwideresetactivity) {
if (items == 3) {
min_status = (uint8) SvUV(ST(2));
}
if (items == 4) {
max_status = (uint8) SvUV(ST(3));
}
@ -5026,7 +5027,7 @@ XS(XS__worldwidesetentityvariableclient) {
if (items == 3) {
min_status = (uint8) SvUV(ST(2));
}
if (items == 4) {
max_status = (uint8) SvUV(ST(3));
}
@ -5075,7 +5076,7 @@ XS(XS__worldwidesignalclient) {
if (items == 2) {
min_status = (uint8) SvUV(ST(1));
}
if (items == 3) {
max_status = (uint8) SvUV(ST(1));
}
@ -5102,7 +5103,7 @@ XS(XS__worldwideupdateactivity) {
if (items == 4) {
min_status = (uint8) SvUV(ST(3));
}
if (items == 5) {
max_status = (uint8) SvUV(ST(4));
}
@ -6171,7 +6172,7 @@ EXTERN_C XS(boot_quest) {
newXS(strcpy(buf, "crosszonemoveinstancebycharid"), XS__crosszonemoveinstancebycharid, file);
newXS(strcpy(buf, "crosszonemoveinstancebygroupid"), XS__crosszonemoveinstancebygroupid, file);
newXS(strcpy(buf, "crosszonemoveinstancebyraidid"), XS__crosszonemoveinstancebyraidid, file);
newXS(strcpy(buf, "crosszonemoveinstancebyguildid"), XS__crosszonemoveinstancebyguildid, file);
newXS(strcpy(buf, "crosszonemoveinstancebyguildid"), XS__crosszonemoveinstancebyguildid, file);
newXS(strcpy(buf, "crosszoneremovespellbycharid"), XS__crosszoneremovespellbycharid, file);
newXS(strcpy(buf, "crosszoneremovespellbygroupid"), XS__crosszoneremovespellbygroupid, file);
newXS(strcpy(buf, "crosszoneremovespellbyraidid"), XS__crosszoneremovespellbyraidid, file);

View File

@ -3272,13 +3272,11 @@ int32 QuestManager::GetZoneID(const char *zone) {
return static_cast<int32>(ZoneID(zone));
}
const char* QuestManager::GetZoneLongName(const char *zone) {
char *long_name;
content_db.GetZoneLongName(zone, &long_name);
std::string ln = long_name;
safe_delete_array(long_name);
return ln.c_str();
std::string QuestManager::GetZoneLongName(std::string zone_short_name)
{
return zone_store.GetZoneLongName(
zone_store.GetZoneID(zone_short_name)
);
}
void QuestManager::CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement) {
@ -3958,7 +3956,7 @@ void QuestManager::CrossZoneUpdateActivityByGuildID(int guild_id, uint32 task_id
}
}
void QuestManager::WorldWideAssignTask(uint32 task_id, bool enforce_level_requirement, uint8 min_status, uint8 max_status) {
void QuestManager::WorldWideAssignTask(uint32 task_id, bool enforce_level_requirement, uint8 min_status, uint8 max_status) {
QuestManagerCurrentQuestVars();
if (initiator && owner) {
auto pack = new ServerPacket(ServerOP_WWAssignTask, sizeof(WWAssignTask_Struct));

View File

@ -280,7 +280,7 @@ public:
void SendMail(const char *to, const char *from, const char *subject, const char *message);
uint16 CreateDoor( const char* model, float x, float y, float z, float heading, uint8 opentype, uint16 size);
int32 GetZoneID(const char *zone);
const char *GetZoneLongName(const char *zone);
static std::string GetZoneLongName(std::string zone_short_name);
void CrossZoneAssignTaskByCharID(int character_id, uint32 task_id, bool enforce_level_requirement = false);
void CrossZoneAssignTaskByGroupID(int group_id, uint32 task_id, bool enforce_level_requirement = false);
void CrossZoneAssignTaskByRaidID(int raid_id, uint32 task_id, bool enforce_level_requirement = false);