pre cw with probe and a bunch script to read game behavior
This commit is contained in:
1 parent
5120219ae2
commit
da8a32f60d
310 files changed
+219693
-872
No files matched your search
@@ -0,0 +1,72 @@
|
||||
package gameserver
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"gac-hkrpg-go/internal/common"
|
||||
pb "gac-hkrpg-go/protocol/proto"
|
||||
)
|
||||
|
||||
func (s *Session) applyCurrencyWarsCommands() error {
|
||||
if !s.currencyWarsOpen {
|
||||
return nil
|
||||
}
|
||||
if _, active := CURRENT_BATTLE.Load(s.Token); active {
|
||||
return nil
|
||||
}
|
||||
commands, err := common.ReadCurrencyWarsCommands()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(commands) == 0 {
|
||||
return nil
|
||||
}
|
||||
cfg, err := common.LoadRuntimeConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, command := range commands {
|
||||
if command.UID != cfg.PlayerUID {
|
||||
continue
|
||||
}
|
||||
catalog, data, err := cwPreparingData(s)
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
if command.RunID != data.DHFOFLFCLAH.UniqueId {
|
||||
if err = common.AcknowledgeCurrencyWarsCommand(command.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
PacketLog("CW_GM discarded command for a finished run")
|
||||
continue
|
||||
}
|
||||
player, _, _ := cwComponents(data.DHFOFLFCLAH)
|
||||
if player == nil {
|
||||
return fmt.Errorf("CW player missing")
|
||||
}
|
||||
var update *pb.KFNCAIHIHCM
|
||||
switch command.Field {
|
||||
case "gold":
|
||||
player.Gold = command.Value
|
||||
update = cwGoldSync(player.Gold)
|
||||
case "hp":
|
||||
if command.Value == 0 || command.Value > player.PPKKHHNEOHB {
|
||||
return fmt.Errorf("CW command HP exceeds run limit")
|
||||
}
|
||||
player.GridFightLineupHp = command.Value
|
||||
update = &pb.KFNCAIHIHCM{MNLCHEJKDHO: &pb.KFNCAIHIHCM_GridFightLineupHp{GridFightLineupHp: &pb.FMJDDIHBELC{GridFightLineupHp: command.Value, PPKKHHNEOHB: player.PPKKHHNEOHB}}}
|
||||
default:
|
||||
return fmt.Errorf("unknown CW command field")
|
||||
}
|
||||
if err = s.saveCurrencyWarsData(data, catalog); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = s.Send(cwNotify(update)); err != nil {
|
||||
return err
|
||||
}
|
||||
if err = common.AcknowledgeCurrencyWarsCommand(command.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
PacketLog(fmt.Sprintf("CW_GM applied request=%s field=%s value=%d revision=%d", command.ID, command.Field, command.Value, s.currencyWarsRevision))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in new issue
Block a user