Hero Online Desenvolvimento
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
avatar
fenixnew
Mensagens : 5
Data de inscrição : 06/08/2020

Add nature points Empty Add nature points

Qui Ago 06, 2020 10:49 pm

in characters.go


levelUp := false

level := int16(c.Level)

targetExp := EXPs[level].Exp

skPts, sp := 0, 0

np := 0 //nature pts

for exp >= targetExp && level < 299 { // Levelling up

//skPts += EXPs[level].SkillPoints



level++

st.HP = st.MaxHP

sp += int(level/10) + 4

if level >= 101 && level < 201 { //divine nature stats

np += 4

}



targetExp = EXPs[level].Exp

levelUp = true

}



c.Level = int(level)

skPts = spIndex2 - spIndex

c.Socket.Skills.SkillPoints += skPts

st.StatPoints += sp

st.NaturePoints += np



LATER.......





resp.Insert(utils.IntToBytes(uint64(st.NaturePoints), 2, true), index) // divine stat points

index += 2



IN STATS.GO

ADD to struct





NaturePoints int `db:"nature_points"`


LATER....




func (t *Stat) Create(c *Character) error {

t = startingStats[c.Type]

t.ID = c.ID

t.StatPoints = 4

t.NaturePoints = 0

t.Honor = 10000

return db.Insert(t)

}




(remember to calculate in the Reset() function too!! i didnt add it.)




in init.go




50179: &player.AddNatureHandler{},

50180: &player.AddNatureHandler{},

50181: &player.AddNatureHandler{},




in stats.go







type AddNatureHandler struct {

amount uint16

natureType byte

}




func (h *AddNatureHandler) Handle(s *database.Socket, data []byte) ([]byte, error) {



h.natureType = data[5]

h.amount = uint16(utils.BytesToInt(data[6:8], true))

return h.addNature(s)

}



func (h *AddNatureHandler) addNature(s *database.Socket) ([]byte, error) {

if s.Character != nil {

stat := s.Stats

if stat.NaturePoints < int(h.amount) {

return nil, nil

}



switch h.natureType {

case 3:

stat.Wind += int(h.amount)

break

case 4:

stat.Water += int(h.amount)

break

case 5:

stat.Fire += int(h.amount)

break

}

stat.NaturePoints -= int(h.amount)

resp := STAT_ADDED



location := database.ConvertPointToLocation(s.Character.Coordinate)

resp.Insert(utils.FloatToBytes(location.X, 4, true), 7) // location-x

resp.Insert(utils.FloatToBytes(location.Y, 4, true), 11) // location-y



gsh := &GetStatsHandler{}

statData, err := gsh.Handle(s)

if err != nil {

return nil, err

}



resp.Concat(statData)

return resp, nil

}

return nil, nil



}





Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos