mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-26 09:33:02 +01:00
add support for alliances
This commit is contained in:
@@ -63,6 +63,7 @@ type Guild struct {
|
|||||||
PugiName3 string `db:"pugi_name_3"`
|
PugiName3 string `db:"pugi_name_3"`
|
||||||
FestivalColour FestivalColour `db:"festival_colour"`
|
FestivalColour FestivalColour `db:"festival_colour"`
|
||||||
Rank uint16 `db:"rank"`
|
Rank uint16 `db:"rank"`
|
||||||
|
AllianceID uint32 `db:"alliance_id"`
|
||||||
Icon *GuildIcon `db:"icon"`
|
Icon *GuildIcon `db:"icon"`
|
||||||
|
|
||||||
GuildLeader
|
GuildLeader
|
||||||
@@ -138,6 +139,19 @@ SELECT
|
|||||||
WHEN rank_rp < 1200 THEN 16
|
WHEN rank_rp < 1200 THEN 16
|
||||||
ELSE 17
|
ELSE 17
|
||||||
END rank,
|
END rank,
|
||||||
|
CASE WHEN (
|
||||||
|
SELECT id FROM guild_alliances ga WHERE
|
||||||
|
ga.parent_id = g.id OR
|
||||||
|
ga.sub1_id = g.id OR
|
||||||
|
ga.sub2_id = g.id
|
||||||
|
) IS NULL THEN 0
|
||||||
|
ELSE (
|
||||||
|
SELECT id FROM guild_alliances ga WHERE
|
||||||
|
ga.parent_id = g.id OR
|
||||||
|
ga.sub1_id = g.id OR
|
||||||
|
ga.sub2_id = g.id
|
||||||
|
)
|
||||||
|
END alliance_id,
|
||||||
icon,
|
icon,
|
||||||
(
|
(
|
||||||
SELECT count(1) FROM guild_characters gc WHERE gc.guild_id = g.id
|
SELECT count(1) FROM guild_characters gc WHERE gc.guild_id = g.id
|
||||||
@@ -955,7 +969,80 @@ func handleMsgMhfInfoGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
0x00, 0x00, 0xD6, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0x00, 0x00, 0xD6, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
})
|
})
|
||||||
|
|
||||||
bf.WriteUint32(0x00) // Alliance ID
|
if guild.AllianceID > 0 {
|
||||||
|
alliance, err := GetAllianceData(s, guild.AllianceID)
|
||||||
|
if err != nil {
|
||||||
|
bf.WriteUint32(0) // Error, no alliance
|
||||||
|
} else {
|
||||||
|
allianceName, _ := stringsupport.ConvertUTF8ToShiftJIS(alliance.Name)
|
||||||
|
allianceParentName, _ := stringsupport.ConvertUTF8ToShiftJIS(alliance.ParentGuild.Name)
|
||||||
|
allianceParentOwner, _ := stringsupport.ConvertUTF8ToShiftJIS(alliance.ParentGuild.LeaderName)
|
||||||
|
allianceSub1Name, _ := stringsupport.ConvertUTF8ToShiftJIS(alliance.SubGuild1.Name)
|
||||||
|
allianceSub1Owner, _ := stringsupport.ConvertUTF8ToShiftJIS(alliance.SubGuild1.LeaderName)
|
||||||
|
allianceSub2Name, _ := stringsupport.ConvertUTF8ToShiftJIS(alliance.SubGuild2.Name)
|
||||||
|
allianceSub2Owner, _ := stringsupport.ConvertUTF8ToShiftJIS(alliance.SubGuild2.LeaderName)
|
||||||
|
bf.WriteUint32(alliance.ID)
|
||||||
|
bf.WriteUint32(uint32(alliance.CreatedAt.Unix()))
|
||||||
|
bf.WriteUint16(uint16(alliance.TotalMembers))
|
||||||
|
bf.WriteUint16(0) // Unk0
|
||||||
|
bf.WriteUint16(uint16(len(allianceName)))
|
||||||
|
bf.WriteBytes(allianceName)
|
||||||
|
if alliance.SubGuild1ID > 0 {
|
||||||
|
if alliance.SubGuild2ID > 0 {
|
||||||
|
bf.WriteUint8(3)
|
||||||
|
} else {
|
||||||
|
bf.WriteUint8(2)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bf.WriteUint8(1)
|
||||||
|
}
|
||||||
|
bf.WriteUint32(alliance.ParentGuildID)
|
||||||
|
bf.WriteUint32(0) // Unk1
|
||||||
|
if alliance.ParentGuildID == guild.ID {
|
||||||
|
bf.WriteUint16(1)
|
||||||
|
} else {
|
||||||
|
bf.WriteUint16(0)
|
||||||
|
}
|
||||||
|
bf.WriteUint16(alliance.ParentGuild.Rank)
|
||||||
|
bf.WriteUint16(alliance.ParentGuild.MemberCount)
|
||||||
|
bf.WriteUint16(uint16(len(allianceParentName)))
|
||||||
|
bf.WriteBytes(allianceParentName)
|
||||||
|
bf.WriteUint16(uint16(len(allianceParentOwner)))
|
||||||
|
bf.WriteBytes(allianceParentOwner)
|
||||||
|
if alliance.SubGuild1ID > 0 {
|
||||||
|
bf.WriteUint32(alliance.SubGuild1ID)
|
||||||
|
bf.WriteUint32(0) // Unk1
|
||||||
|
if alliance.SubGuild1ID == guild.ID {
|
||||||
|
bf.WriteUint16(1)
|
||||||
|
} else {
|
||||||
|
bf.WriteUint16(0)
|
||||||
|
}
|
||||||
|
bf.WriteUint16(alliance.SubGuild1.Rank)
|
||||||
|
bf.WriteUint16(alliance.SubGuild1.MemberCount)
|
||||||
|
bf.WriteUint16(uint16(len(allianceSub1Name)))
|
||||||
|
bf.WriteBytes(allianceSub1Name)
|
||||||
|
bf.WriteUint16(uint16(len(allianceSub1Owner)))
|
||||||
|
bf.WriteBytes(allianceSub1Owner)
|
||||||
|
}
|
||||||
|
if alliance.SubGuild2ID > 0 {
|
||||||
|
bf.WriteUint32(alliance.SubGuild2ID)
|
||||||
|
bf.WriteUint32(0) // Unk1
|
||||||
|
if alliance.SubGuild2ID == guild.ID {
|
||||||
|
bf.WriteUint16(1)
|
||||||
|
} else {
|
||||||
|
bf.WriteUint16(0)
|
||||||
|
}
|
||||||
|
bf.WriteUint16(alliance.SubGuild2.Rank)
|
||||||
|
bf.WriteUint16(alliance.SubGuild2.MemberCount)
|
||||||
|
bf.WriteUint16(uint16(len(allianceSub2Name)))
|
||||||
|
bf.WriteBytes(allianceSub2Name)
|
||||||
|
bf.WriteUint16(uint16(len(allianceSub2Owner)))
|
||||||
|
bf.WriteBytes(allianceSub2Owner)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
bf.WriteUint32(0) // No alliance
|
||||||
|
}
|
||||||
|
|
||||||
applicants, err := GetGuildMembers(s, guild.ID, true)
|
applicants, err := GetGuildMembers(s, guild.ID, true)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user