Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[RELEASE]-Hero Online (Hero Plus) Emulator + Database

Newbie Spellweaver
Joined
Oct 1, 2020
Messages
10
Reaction score
1
i have added the client i am using to the topic you can download it and check.
Oh I see must be the clients problems. Well at least you should specific which clients version is more compatible with this servers.
 
Custom Title Activated
Loyal Member
Joined
Dec 20, 2005
Messages
2,046
Reaction score
117
Can only be played in local mode, I've tried several times how to play LAN mode always fails I don't know how it works?

You need to change 127.0.0.1 on your server to your external IP or LAN IP before do the compiling.
manoellgamer, tested yeah the items can move around now but the remains bugs are still there even you updated your server code lol
 
Junior Spellweaver
Joined
May 2, 2013
Messages
141
Reaction score
40
You need to change 127.0.0.1 on your server to your external IP or LAN IP before do the compiling.
@manoellgamer, tested yeah the items can move around now but the remains bugs are still there even you updated your server code lol
I've changed it on 192.168.1.100, but the client can't login, until I turn off the firewall for both computers, I still can't log in lol
 
Custom Title Activated
Loyal Member
Joined
Dec 20, 2005
Messages
2,046
Reaction score
117
I've changed it on 192.168.1.100, but the client can't login, until I turn off the firewall for both computers, I still can't log in lol

Make sure your client port and the server are the same. If you playing from another PC which is LAN IP. You probably need to open port for it. To save your troubles just use a VPN such as Zerotier or Hamachi.
 
Junior Spellweaver
Joined
May 2, 2013
Messages
141
Reaction score
40
Make sure your client port and the server are the same. If you playing from another PC which is LAN IP. You probably need to open port for it. To save your troubles just use a VPN such as Zerotier or Hamachi.
Is there any other ip and port settings besides the default.go file?
 
Newbie Spellweaver
Joined
Aug 13, 2020
Messages
15
Reaction score
0
hello i have two different bugs.the automatic AID system doesn't stop, it only starts and I can only stop when I change server game!Another char creation system independent of the class nothing happens and it remains on the same screen when you put the name and click on complete the creation, but when I click on back the char is created.
 
Newbie Spellweaver
Joined
Aug 2, 2017
Messages
11
Reaction score
1
I downloaded and installed the files you shared, but I can't create characters, how can I fix this?
 
Initiate Mage
Joined
Sep 9, 2022
Messages
2
Reaction score
0
when i put username and pw, it freezes in the "Loggin In" msg. What im doing wrong?
 
Newbie Spellweaver
Joined
Mar 24, 2023
Messages
8
Reaction score
1
Hi,

First of all, thanks for sharing.

All the mobs drop discriminated items, how do I make the mobs drop non-discriminated items, please?
 
Newbie Spellweaver
Joined
Mar 24, 2023
Messages
8
Reaction score
1
Where in the client side can I find the order for the resp packets?

func (c *Character) SpawnCharacter() ([]byte, error) {
if c == nil {
return nil, nil
}
resp := CHARACTER_SPAWNED
resp.Insert(utils.IntToBytes(uint64(c.PseudoID), 2, true), 6) // character pseudo id
if c.IsActive {
resp[12] = 3
} else {
resp[12] = 4
}
/*
if c.DuelID > 0 {
resp.Overwrite(utils.IntToBytes(500, 2, true), 13) // duel state
}
*/
resp[17] = byte(len(c.Name)) // character name length
resp.Insert([]byte(c.Name), 18) // character name
index := len(c.Name) + 18 + 4
resp[index] = byte(c.Type) // character type
index += 1
index += 8
coordinate := ConvertPointToLocation(c.Coordinate)
resp.Insert(utils.FloatToBytes(coordinate.X, 4, true), index) // coordinate-x
index += 4
resp.Insert(utils.FloatToBytes(coordinate.Y, 4, true), index) // coordinate-y
index += 8
resp.Insert(utils.FloatToBytes(coordinate.X, 4, true), index) // coordinate-x
index += 4
resp.Insert(utils.FloatToBytes(coordinate.Y, 4, true), index) // coordinate-y
index += 4
index += 18
resp.Overwrite(utils.IntToBytes(uint64(c.Socket.Stats.HP), 4, true), index) // hp
index += 9
resp[index] = byte(c.WeaponSlot) // weapon slot
index += 16
resp.Insert(utils.IntToBytes(uint64(c.GuildID), 4, true), index) // guild id
index += 8
resp[index] = byte(c.Faction) // character faction
index += 10
items, err := c.ShowItems()
if err != nil {
return nil, err
}
itemsData := items[11 : len(items)-2]
sale := FindSale(c.PseudoID)
if sale != nil {
itemsData = []byte{0x05, 0xAA, 0x45, 0xF1, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x6C, 0xF1, 0x00, 0x01, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
}
resp.Insert(itemsData, index)
index += len(itemsData)
length := int16(len(itemsData) + len(c.Name) + 111)
if sale != nil {
resp.Insert([]byte{0x02}, index) // sale indicator
index++
resp.Insert([]byte{byte(len(sale.Name))}, index) // sale name length
index++
resp.Insert([]byte(sale.Name), index) // sale name
index += len(sale.Name)
resp.Insert([]byte{0x00}, index)
index++
length += int16(len(sale.Name) + 3)
}
resp.SetLength(length)
resp.Concat(items) // FIX => workaround for weapon slot
if c.GuildID > 0 {
guild, err := FindGuildByID(c.GuildID)
if err == nil && guild != nil {
resp.Concat(guild.GetInfo())
}
}
return resp, nil
}
 
Back
Top