mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 23:44:52 +01:00
more GuildTresure optimisation
This commit is contained in:
8
patch-schema/09-fix-guild-treasure.sql
Normal file
8
patch-schema/09-fix-guild-treasure.sql
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
BEGIN;
|
||||||
|
|
||||||
|
ALTER TABLE IF EXISTS public.guild_hunts DROP COLUMN IF EXISTS hunters;
|
||||||
|
|
||||||
|
ALTER TABLE IF EXISTS public.guild_characters
|
||||||
|
ADD COLUMN treasure_hunt integer;
|
||||||
|
|
||||||
|
END;
|
||||||
@@ -233,7 +233,7 @@ func logoutPlayer(s *Session) {
|
|||||||
|
|
||||||
s.server.db.Exec("UPDATE characters SET time_played = $1 WHERE id = $2", timePlayed, s.charID)
|
s.server.db.Exec("UPDATE characters SET time_played = $1 WHERE id = $2", timePlayed, s.charID)
|
||||||
|
|
||||||
treasureHuntUnregister(s)
|
s.server.db.Exec(`UPDATE guild_characters SET treasure_hunt=NULL WHERE character_id=$1`, s.charID)
|
||||||
|
|
||||||
if s.stage == nil {
|
if s.stage == nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -108,56 +108,24 @@ func handleMsgMhfRegistGuildTresure(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
|
|
||||||
func handleMsgMhfAcquireGuildTresure(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfAcquireGuildTresure(s *Session, p mhfpacket.MHFPacket) {
|
||||||
pkt := p.(*mhfpacket.MsgMhfAcquireGuildTresure)
|
pkt := p.(*mhfpacket.MsgMhfAcquireGuildTresure)
|
||||||
s.server.db.Exec("UPDATE guild_hunts SET acquired=true WHERE id=$1", pkt.HuntID)
|
s.server.db.Exec(`UPDATE guild_hunts SET acquired=true WHERE id=$1`, pkt.HuntID)
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
func treasureHuntUnregister(s *Session) {
|
|
||||||
guild, err := GetGuildInfoByCharacterId(s, s.charID)
|
|
||||||
if err != nil || guild == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var huntID int
|
|
||||||
var hunters string
|
|
||||||
rows, err := s.server.db.Queryx("SELECT id, hunters FROM guild_hunts WHERE guild_id=$1", guild.ID)
|
|
||||||
if err != nil {
|
|
||||||
rows.Close()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for rows.Next() {
|
|
||||||
rows.Scan(&huntID, &hunters)
|
|
||||||
hunters = stringsupport.CSVRemove(hunters, int(s.charID))
|
|
||||||
s.server.db.Exec("UPDATE guild_hunts SET hunters=$1 WHERE id=$2", hunters, huntID)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func handleMsgMhfOperateGuildTresureReport(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfOperateGuildTresureReport(s *Session, p mhfpacket.MHFPacket) {
|
||||||
pkt := p.(*mhfpacket.MsgMhfOperateGuildTresureReport)
|
pkt := p.(*mhfpacket.MsgMhfOperateGuildTresureReport)
|
||||||
var csv string
|
var csv string
|
||||||
switch pkt.State {
|
switch pkt.State {
|
||||||
case 0: // Report registration
|
case 0: // Report registration
|
||||||
// Unregister from all other hunts
|
s.server.db.Exec(`UPDATE guild_characters SET treasure_hunt=$1 WHERE character_id=$2`, pkt.HuntID, s.charID)
|
||||||
treasureHuntUnregister(s)
|
|
||||||
if pkt.HuntID != 0 {
|
|
||||||
// Register to selected hunt
|
|
||||||
err := s.server.db.QueryRow("SELECT hunters FROM guild_hunts WHERE id=$1", pkt.HuntID).Scan(&csv)
|
|
||||||
if err != nil {
|
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
csv = stringsupport.CSVAdd(csv, int(s.charID))
|
|
||||||
s.server.db.Exec("UPDATE guild_hunts SET hunters=$1 WHERE id=$2", csv, pkt.HuntID)
|
|
||||||
}
|
|
||||||
case 1: // Collected by hunter
|
case 1: // Collected by hunter
|
||||||
s.server.db.Exec("UPDATE guild_hunts SET hunters='', claimed=true WHERE id=$1", pkt.HuntID)
|
s.server.db.Exec(`UPDATE guild_hunts SET claimed=true WHERE id=$1;UPDATE guild_characters SET treasure_hunt=NULL WHERE treasure_hunt=$1`, pkt.HuntID)
|
||||||
case 2: // Claim treasure
|
case 2: // Claim treasure
|
||||||
err := s.server.db.QueryRow("SELECT treasure FROM guild_hunts WHERE id=$1", pkt.HuntID).Scan(&csv)
|
err := s.server.db.QueryRow(`SELECT treasure FROM guild_hunts WHERE id=$1`, pkt.HuntID).Scan(&csv)
|
||||||
if err != nil {
|
if err == nil {
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
csv = stringsupport.CSVAdd(csv, int(s.charID))
|
csv = stringsupport.CSVAdd(csv, int(s.charID))
|
||||||
s.server.db.Exec("UPDATE guild_hunts SET treasure=$1 WHERE id=$2", csv, pkt.HuntID)
|
s.server.db.Exec(`UPDATE guild_hunts SET treasure=$1 WHERE id=$2`, csv, pkt.HuntID)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user