Added code

This commit is contained in:
stratic-dev
2024-02-26 04:19:28 +00:00
parent f5ee81b8d1
commit d195e667ae
4 changed files with 24 additions and 11 deletions

View File

@@ -3,6 +3,7 @@ package mhfpacket
import ( import (
"errors" "errors"
"erupe-ce/common/byteframe" "erupe-ce/common/byteframe"
"erupe-ce/common/stringsupport"
"erupe-ce/network" "erupe-ce/network"
"erupe-ce/network/clientctx" "erupe-ce/network/clientctx"
) )
@@ -12,7 +13,7 @@ type MsgMhfApplyCampaign struct {
AckHandle uint32 AckHandle uint32
CampaignID uint32 CampaignID uint32
NullPadding uint16 // set as 0 in z2 NullPadding uint16 // set as 0 in z2
CodeString []byte CodeString string
} }
// Opcode returns the ID associated with this packet type. // Opcode returns the ID associated with this packet type.
@@ -25,7 +26,8 @@ func (m *MsgMhfApplyCampaign) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Clie
m.AckHandle = bf.ReadUint32() m.AckHandle = bf.ReadUint32()
m.CampaignID = bf.ReadUint32() m.CampaignID = bf.ReadUint32()
m.NullPadding = bf.ReadUint16() m.NullPadding = bf.ReadUint16()
m.CodeString = bf.ReadBytes(16) m.CodeString = stringsupport.SJISToUTF8(bf.ReadNullTerminatedBytes())
bf.ReadInt8()
return nil return nil
} }

View File

@@ -58,7 +58,8 @@ CREATE TABLE IF NOT EXISTS public.campaign_category_links (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
campaign_id INTEGER, campaign_id INTEGER,
state INTEGER, state INTEGER,
character_id INTEGER character_id INTEGER,
code TEXT
); );
INSERT INTO public.campaign_state INSERT INTO public.campaign_state

View File

@@ -1,11 +1,14 @@
package channelserver package channelserver
import ( import (
"database/sql"
"erupe-ce/common/byteframe" "erupe-ce/common/byteframe"
ps "erupe-ce/common/pascalstring" ps "erupe-ce/common/pascalstring"
"erupe-ce/common/stringsupport" "erupe-ce/common/stringsupport"
_config "erupe-ce/config" _config "erupe-ce/config"
"erupe-ce/network/mhfpacket" "erupe-ce/network/mhfpacket"
"fmt"
"log"
"time" "time"
) )
@@ -172,18 +175,25 @@ func handleMsgMhfStateCampaign(s *Session, p mhfpacket.MHFPacket) {
func handleMsgMhfApplyCampaign(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfApplyCampaign(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfApplyCampaign) pkt := p.(*mhfpacket.MsgMhfApplyCampaign)
// Check campaign ID var result string
// Check code against campaign list of codes to see if valid....
//checkCode(pkt.CodeString,pkt.CampaignID)
validCode := true // Query to check if the event code exists in the database
if validCode { err := s.server.db.QueryRow("SELECT code FROM public.campaign_state WHERE code = $1", pkt.CodeString).Scan(&result)
s.server.db.Exec(`UPDATE public.campaign_state SET state = $3 WHERE campaign_id = $1 AND character_id =$2`, pkt.CampaignID, s.charID, 1)
switch {
case err == sql.ErrNoRows:
fmt.Println("Event code does not exist in the database.")
s.server.db.Exec(`UPDATE public.campaign_state SET state = $3, code = $4 WHERE campaign_id = $1 AND character_id =$2`, pkt.CampaignID, s.charID, 1, pkt.CodeString)
doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4)) doAckSimpleSucceed(s, pkt.AckHandle, make([]byte, 4))
} else { case err != nil:
log.Fatal(err)
default:
fmt.Printf("Event code '%s' exists in the database.\n", result)
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4)) doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
} }
} }
func handleMsgMhfEnumerateItem(s *Session, p mhfpacket.MHFPacket) { func handleMsgMhfEnumerateItem(s *Session, p mhfpacket.MHFPacket) {

View File

@@ -275,7 +275,7 @@ func makeEventQuest(s *Session, rows *sql.Rows) ([]byte, error) {
} }
bf.WriteUint8(questType) bf.WriteUint8(questType)
if questType == 9 { if questType == 9 {
var state int16 var state int
s.server.db.QueryRow(`SELECT state s.server.db.QueryRow(`SELECT state
FROM campaign_state FROM campaign_state
WHERE character_id = $2 WHERE character_id = $2