mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-14 16:04:38 +01:00
guild recruitment closing
This commit is contained in:
6
patch-schema/guild-enumeration.sql
Normal file
6
patch-schema/guild-enumeration.sql
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
BEGIN;
|
||||||
|
|
||||||
|
ALTER TABLE IF EXISTS public.guilds
|
||||||
|
ADD COLUMN IF NOT EXISTS recruiting bool NOT NULL DEFAULT true;
|
||||||
|
|
||||||
|
END;
|
||||||
@@ -54,6 +54,7 @@ type Guild struct {
|
|||||||
PugiName1 string `db:"pugi_name_1"`
|
PugiName1 string `db:"pugi_name_1"`
|
||||||
PugiName2 string `db:"pugi_name_2"`
|
PugiName2 string `db:"pugi_name_2"`
|
||||||
PugiName3 string `db:"pugi_name_3"`
|
PugiName3 string `db:"pugi_name_3"`
|
||||||
|
Recruiting bool `db:"recruiting"`
|
||||||
FestivalColour FestivalColour `db:"festival_colour"`
|
FestivalColour FestivalColour `db:"festival_colour"`
|
||||||
Rank uint16 `db:"rank"`
|
Rank uint16 `db:"rank"`
|
||||||
AllianceID uint32 `db:"alliance_id"`
|
AllianceID uint32 `db:"alliance_id"`
|
||||||
@@ -123,6 +124,7 @@ SELECT
|
|||||||
pugi_name_1,
|
pugi_name_1,
|
||||||
pugi_name_2,
|
pugi_name_2,
|
||||||
pugi_name_3,
|
pugi_name_3,
|
||||||
|
recruiting,
|
||||||
festival_colour,
|
festival_colour,
|
||||||
CASE
|
CASE
|
||||||
WHEN rank_rp <= 48 THEN rank_rp/24
|
WHEN rank_rp <= 48 THEN rank_rp/24
|
||||||
@@ -639,6 +641,8 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bf.WriteUint32(uint32(response))
|
bf.WriteUint32(uint32(response))
|
||||||
|
doAckSimpleSucceed(s, pkt.AckHandle, bf.Data())
|
||||||
|
return
|
||||||
case mhfpacket.OPERATE_GUILD_APPLY:
|
case mhfpacket.OPERATE_GUILD_APPLY:
|
||||||
err = guild.CreateApplication(s, s.charID, GuildApplicationTypeApplied, nil)
|
err = guild.CreateApplication(s, s.charID, GuildApplicationTypeApplied, nil)
|
||||||
|
|
||||||
@@ -648,6 +652,8 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
} else {
|
} else {
|
||||||
bf.WriteUint32(guild.LeaderCharID)
|
bf.WriteUint32(guild.LeaderCharID)
|
||||||
}
|
}
|
||||||
|
doAckSimpleSucceed(s, pkt.AckHandle, bf.Data())
|
||||||
|
return
|
||||||
case mhfpacket.OPERATE_GUILD_LEAVE:
|
case mhfpacket.OPERATE_GUILD_LEAVE:
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
@@ -664,81 +670,53 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bf.WriteUint32(uint32(response))
|
bf.WriteUint32(uint32(response))
|
||||||
|
doAckSimpleSucceed(s, pkt.AckHandle, bf.Data())
|
||||||
|
return
|
||||||
case mhfpacket.OPERATE_GUILD_DONATE_RANK:
|
case mhfpacket.OPERATE_GUILD_DONATE_RANK:
|
||||||
handleDonateRP(s, pkt, bf, guild, false)
|
handleDonateRP(s, pkt, bf, guild, false)
|
||||||
case mhfpacket.OPERATE_GUILD_SET_APPLICATION_DENY:
|
case mhfpacket.OPERATE_GUILD_SET_APPLICATION_DENY:
|
||||||
// TODO: close applications for guild
|
s.server.db.Exec("UPDATE guilds SET recruiting=false WHERE id=$1", guild.ID)
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_SET_APPLICATION_ALLOW:
|
case mhfpacket.OPERATE_GUILD_SET_APPLICATION_ALLOW:
|
||||||
// TODO: open applications for guild
|
s.server.db.Exec("UPDATE guilds SET recruiting=true WHERE id=$1", guild.ID)
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_SET_AVOID_LEADERSHIP_TRUE:
|
case mhfpacket.OPERATE_GUILD_SET_AVOID_LEADERSHIP_TRUE:
|
||||||
handleAvoidLeadershipUpdate(s, pkt, true)
|
handleAvoidLeadershipUpdate(s, pkt, true)
|
||||||
case mhfpacket.OPERATE_GUILD_SET_AVOID_LEADERSHIP_FALSE:
|
case mhfpacket.OPERATE_GUILD_SET_AVOID_LEADERSHIP_FALSE:
|
||||||
handleAvoidLeadershipUpdate(s, pkt, false)
|
handleAvoidLeadershipUpdate(s, pkt, false)
|
||||||
case mhfpacket.OPERATE_GUILD_UPDATE_COMMENT:
|
case mhfpacket.OPERATE_GUILD_UPDATE_COMMENT:
|
||||||
pbf := byteframe.NewByteFrameFromBytes(pkt.UnkData)
|
pbf := byteframe.NewByteFrameFromBytes(pkt.UnkData)
|
||||||
|
|
||||||
if !characterGuildInfo.IsLeader && !characterGuildInfo.IsSubLeader() {
|
if !characterGuildInfo.IsLeader && !characterGuildInfo.IsSubLeader() {
|
||||||
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = pbf.ReadUint8() // len
|
_ = pbf.ReadUint8() // len
|
||||||
_ = pbf.ReadUint32()
|
_ = pbf.ReadUint32()
|
||||||
guild.Comment = stringsupport.SJISToUTF8(pbf.ReadNullTerminatedBytes())
|
guild.Comment = stringsupport.SJISToUTF8(pbf.ReadNullTerminatedBytes())
|
||||||
err = guild.Save(s)
|
guild.Save(s)
|
||||||
if err != nil {
|
|
||||||
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
bf.WriteUint32(0x00)
|
|
||||||
case mhfpacket.OPERATE_GUILD_UPDATE_MOTTO:
|
case mhfpacket.OPERATE_GUILD_UPDATE_MOTTO:
|
||||||
if !characterGuildInfo.IsLeader && !characterGuildInfo.IsSubLeader() {
|
if !characterGuildInfo.IsLeader && !characterGuildInfo.IsSubLeader() {
|
||||||
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guild.SubMotto = pkt.UnkData[3]
|
guild.SubMotto = pkt.UnkData[3]
|
||||||
guild.MainMotto = pkt.UnkData[4]
|
guild.MainMotto = pkt.UnkData[4]
|
||||||
|
guild.Save(s)
|
||||||
err := guild.Save(s)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
case mhfpacket.OPERATE_GUILD_RENAME_PUGI_1:
|
case mhfpacket.OPERATE_GUILD_RENAME_PUGI_1:
|
||||||
handleRenamePugi(s, pkt.UnkData, guild, 1)
|
handleRenamePugi(s, pkt.UnkData, guild, 1)
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_RENAME_PUGI_2:
|
case mhfpacket.OPERATE_GUILD_RENAME_PUGI_2:
|
||||||
handleRenamePugi(s, pkt.UnkData, guild, 2)
|
handleRenamePugi(s, pkt.UnkData, guild, 2)
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_RENAME_PUGI_3:
|
case mhfpacket.OPERATE_GUILD_RENAME_PUGI_3:
|
||||||
handleRenamePugi(s, pkt.UnkData, guild, 3)
|
handleRenamePugi(s, pkt.UnkData, guild, 3)
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_CHANGE_PUGI_1:
|
case mhfpacket.OPERATE_GUILD_CHANGE_PUGI_1:
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
// TODO: decode guild poogie outfits
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_CHANGE_PUGI_2:
|
case mhfpacket.OPERATE_GUILD_CHANGE_PUGI_2:
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_CHANGE_PUGI_3:
|
case mhfpacket.OPERATE_GUILD_CHANGE_PUGI_3:
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
case mhfpacket.OPERATE_GUILD_DONATE_EVENT:
|
case mhfpacket.OPERATE_GUILD_DONATE_EVENT:
|
||||||
handleDonateRP(s, pkt, bf, guild, true)
|
handleDonateRP(s, pkt, bf, guild, true)
|
||||||
default:
|
default:
|
||||||
panic(fmt.Sprintf("unhandled operate guild action '%d'", pkt.Action))
|
panic(fmt.Sprintf("unhandled operate guild action '%d'", pkt.Action))
|
||||||
}
|
}
|
||||||
|
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, bf.Data())
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleRenamePugi(s *Session, data []byte, guild *Guild, num int) {
|
func handleRenamePugi(s *Session, data []byte, guild *Guild, num int) {
|
||||||
@@ -1220,7 +1198,7 @@ func handleMsgMhfEnumerateGuild(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
ps.Uint8(bf, guild.Name, true)
|
ps.Uint8(bf, guild.Name, true)
|
||||||
ps.Uint8(bf, guild.LeaderName, true)
|
ps.Uint8(bf, guild.LeaderName, true)
|
||||||
bf.WriteUint8(0x01) // Unk
|
bf.WriteUint8(0x01) // Unk
|
||||||
bf.WriteBool(false) // closed
|
bf.WriteBool(!guild.Recruiting)
|
||||||
}
|
}
|
||||||
|
|
||||||
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
|
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
|
||||||
|
|||||||
Reference in New Issue
Block a user