Add Banner Equiping

This commit is contained in:
eccentric 2023-11-09 19:35:39 +00:00
parent 5c6b1d6407
commit 5ed3817c86
3 changed files with 103 additions and 19 deletions

View File

@ -215,9 +215,6 @@ func GetPublicAccounts(c *fiber.Ctx) error {
}) })
} }
aid.PrintJSON(accountIds)
aid.PrintJSON(response)
return c.Status(fiber.StatusOK).JSON(response) return c.Status(fiber.StatusOK).JSON(response)
} }

View File

@ -1,6 +1,7 @@
package handlers package handlers
import ( import (
"fmt"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -17,6 +18,7 @@ var (
"ClientQuestLogin": PostQueryProfileAction, "ClientQuestLogin": PostQueryProfileAction,
"MarkItemSeen": PostMarkItemSeenAction, "MarkItemSeen": PostMarkItemSeenAction,
"EquipBattleRoyaleCustomization": PostEquipBattleRoyaleCustomizationAction, "EquipBattleRoyaleCustomization": PostEquipBattleRoyaleCustomizationAction,
"SetBattleRoyaleBanner": PostSetBattleRoyaleBannerAction,
} }
) )
@ -68,7 +70,7 @@ func PostMarkItemSeenAction(c *fiber.Ctx, person *p.Person, profile *p.Profile)
err := c.BodyParser(&body) err := c.BodyParser(&body)
if err != nil { if err != nil {
return c.Status(400).JSON(aid.ErrorBadRequest("Invalid Body")) return fmt.Errorf("invalid Body")
} }
for _, itemId := range body.ItemIds { for _, itemId := range body.ItemIds {
@ -93,21 +95,24 @@ func PostEquipBattleRoyaleCustomizationAction(c *fiber.Ctx, person *p.Person, pr
err := c.BodyParser(&body) err := c.BodyParser(&body)
if err != nil { if err != nil {
return c.Status(400).JSON(aid.ErrorBadRequest("Invalid Body")) return fmt.Errorf("invalid Body")
} }
item := profile.Items.GetItem(body.ItemToSlot) item := profile.Items.GetItem(body.ItemToSlot)
if item == nil { if item == nil {
return c.Status(400).JSON(aid.ErrorBadRequest("Item not found")) if body.ItemToSlot != "" && !strings.Contains(strings.ToLower(body.ItemToSlot), "random") {
return fmt.Errorf("item not found")
}
item = &p.Item{
ID: body.ItemToSlot,
}
} }
attr := profile.Attributes.GetAttributeByKey("favorite_" + strings.ToLower(body.SlotName)) attr := profile.Attributes.GetAttributeByKey("favorite_" + strings.ToLower(body.SlotName))
if attr == nil { if attr == nil {
return c.Status(400).JSON(aid.ErrorBadRequest("Attribute not found")) return fmt.Errorf("attribute not found")
} }
defer func() {
go attr.Save()
}()
switch body.SlotName { switch body.SlotName {
case "Dance": case "Dance":
@ -122,5 +127,47 @@ func PostEquipBattleRoyaleCustomizationAction(c *fiber.Ctx, person *p.Person, pr
attr.ValueJSON = aid.JSONStringify(item.ID) attr.ValueJSON = aid.JSONStringify(item.ID)
} }
go attr.Save()
return nil
}
func PostSetBattleRoyaleBannerAction(c *fiber.Ctx, person *p.Person, profile *p.Profile) error {
var body struct {
HomebaseBannerColorID string `json:"homebaseBannerColorId" binding:"required"`
HomebaseBannerIconID string `json:"homebaseBannerIconId" binding:"required"`
}
err := c.BodyParser(&body)
if err != nil {
return fmt.Errorf("invalid Body")
}
colorItem := person.CommonCoreProfile.Items.GetItemByTemplateID("HomebaseBannerColor:"+body.HomebaseBannerColorID)
if colorItem == nil {
return fmt.Errorf("color item not found")
}
iconItem := person.CommonCoreProfile.Items.GetItemByTemplateID("HomebaseBannerIcon:"+body.HomebaseBannerIconID)
if iconItem == nil {
return fmt.Errorf("icon item not found")
}
iconAttr := profile.Attributes.GetAttributeByKey("banner_icon")
if iconAttr == nil {
return fmt.Errorf("icon attribute not found")
}
colorAttr := profile.Attributes.GetAttributeByKey("banner_color")
if colorAttr == nil {
return fmt.Errorf("color attribute not found")
}
iconAttr.ValueJSON = aid.JSONStringify(strings.Split(iconItem.TemplateID, ":")[1])
colorAttr.ValueJSON = aid.JSONStringify(strings.Split(colorItem.TemplateID, ":")[1])
go func() {
iconAttr.Save()
colorAttr.Save()
}()
return nil return nil
} }

View File

@ -1,21 +1,59 @@
package person package person
import "github.com/ectrc/snow/aid" import (
"strconv"
func NewFortnitePerson(displayName string, key string) { "github.com/ectrc/snow/aid"
)
var (
defaultAthenaItems = []string{
"AthenaCharacter:CID_001_Athena_Commando_F_Default",
"AthenaPickaxe:DefaultPickaxe",
"AthenaGlider:DefaultGlider",
"AthenaDance:EID_DanceMoves",
}
defaultCommonCoreItems = []string{
"Currency:MtxPurchased",
"HomebaseBannerIcon:StandardBanner",
"HomebaseBannerColor:DefaultColor",
}
)
func NewFortnitePerson(displayName string, key string) *Person {
person := NewPerson() person := NewPerson()
person.DisplayName = displayName person.DisplayName = displayName
person.AccessKey = key person.AccessKey = key
person.AthenaProfile.Items.AddItem(NewItem("AthenaCharacter:CID_001_Athena_Commando_F_Default", 1))
person.AthenaProfile.Items.AddItem(NewItem("AthenaCharacter:CID_032_Athena_Commando_M_Medieval", 1))
person.AthenaProfile.Items.AddItem(NewItem("AthenaCharacter:CID_033_Athena_Commando_F_Medieval", 1))
person.AthenaProfile.Items.AddItem(NewItem("AthenaPickaxe:DefaultPickaxe", 1))
person.AthenaProfile.Items.AddItem(NewItem("AthenaGlider:DefaultGlider", 1))
person.AthenaProfile.Items.AddItem(NewItem("AthenaDance:EID_DanceMoves", 1))
person.CommonCoreProfile.Items.AddItem(NewItem("Currency:MtxPurchased", 0))
person.Profile0Profile.Items.AddItem(NewItem("Currency:MtxPurchased", 0)) // for season 2 and bellow person.Profile0Profile.Items.AddItem(NewItem("Currency:MtxPurchased", 0)) // for season 2 and bellow
for _, item := range defaultAthenaItems {
person.AthenaProfile.Items.AddItem(NewItem(item, 1))
}
for _, item := range defaultCommonCoreItems {
if item == "HomebaseBannerIcon:StandardBanner" {
for i := 1; i < 32; i++ {
person.CommonCoreProfile.Items.AddItem(NewItem(item+strconv.Itoa(i), 1))
}
continue
}
if item == "HomebaseBannerColor:DefaultColor" {
for i := 1; i < 22; i++ {
person.CommonCoreProfile.Items.AddItem(NewItem(item+strconv.Itoa(i), 1))
}
continue
}
if item == "Currency:MtxPurchased" {
person.CommonCoreProfile.Items.AddItem(NewItem(item, 0))
continue
}
person.CommonCoreProfile.Items.AddItem(NewItem(item, 1))
}
person.AthenaProfile.Attributes.AddAttribute(NewAttribute("mfa_reward_claimed", true)) person.AthenaProfile.Attributes.AddAttribute(NewAttribute("mfa_reward_claimed", true))
person.AthenaProfile.Attributes.AddAttribute(NewAttribute("rested_xp_overflow", 0)) person.AthenaProfile.Attributes.AddAttribute(NewAttribute("rested_xp_overflow", 0))
person.AthenaProfile.Attributes.AddAttribute(NewAttribute("lifetime_wins", 0)) person.AthenaProfile.Attributes.AddAttribute(NewAttribute("lifetime_wins", 0))
@ -69,4 +107,6 @@ func NewFortnitePerson(displayName string, key string) {
person.CommonCoreProfile.Attributes.AddAttribute(NewAttribute("gift_history", aid.JSON{})) person.CommonCoreProfile.Attributes.AddAttribute(NewAttribute("gift_history", aid.JSON{}))
person.Save() person.Save()
return person
} }