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) Full Database + Server Emulator

Inactive Account
Inactive Account
Joined
May 23, 2020
Messages
1
Reaction score
0
hello. how do i get a key i tried 256 and dont know what to put in output..
 
Custom Title Activated
Joined
Dec 20, 2005
Messages
2,032
Reaction score
115
hello. how do i get a key i tried 256 and dont know what to put in output..

Use the updated client from my mediafire shared links. If you can't get it from mega links which is not updated with the latest patch.
 
Inactive Account
Inactive Account
Joined
May 24, 2020
Messages
1
Reaction score
0
6. Launch your DB either via postgres' own GUI (search for pgadmin.exe) or use DBeaver as recommended by syntax). ?????????

6.1 Import the DB file uploaded by LordDan in this thread.????????

This depends on your client, but usually you can just right-click the DB called postgres>RESTORE (or Import in other clients).. in the file browser, ensure you have "All Files" selected so you can select the user. ?????????


friend there in part 6 what to do in dbeaver which folder or file should i open ????

thank for you help

- - - Updated - - -

6. Launch your DB either via postgres' own GUI (search for pgadmin.exe) or use DBeaver as recommended by syntax). ?????????

6.1 Import the DB file uploaded by LordDan in this thread.????????

This depends on your client, but usually you can just right-click the DB called postgres>RESTORE (or Import in other clients).. in the file browser, ensure you have "All Files" selected so you can select the user. ?????????


friend there in part 6 what to do in dbeaver which folder or file should i open ????


thank for you help
 
Joined
Jan 22, 2009
Messages
1,100
Reaction score
405
Client downloaded in mediafire it's crashing when I to select the character to play.
 
Inactive Account
Inactive Account
Joined
Dec 13, 2014
Messages
12
Reaction score
0
Client downloaded in mediafire it's crashing when I to select the character to play.

Need change ur configs ui. Past it on ur TDH_Launcher

[GRAPHIC]FIRST=0WINDOW=1EFFECT=1SCREEN_WIDTH=1024SCREEN_HEIGHT=768SIGHT=2SIGHTCHAR=2SHAPE=2TEXTURE=1GLASS=2MOTIONBLUR=2VOICEON=1SHOWNAME=1CHARSHADOW=1FILTERING=0BLOOD=1CAMERA=0THREADLOAD=0SIGHTMIN=128SIGHTMID=256SIGHTMAX=512SIGHTCHARMIN=64SIGHTCHARMID=128SIGHTCHARMAX=256SHAPEMIN=32SHAPEMID=64SHAPEMAX=128GRASSMIN=0GRASSMID=1GRASSMAX=2BLOOM=0CAMERASPEED=224[Hero Online]AUTO_START=0NOTICE=1USERDATA=1USERLNK=1[CHAT]FREEFONT=0HELP=0[SOUND]STEREO=2BIT=16RATE=22050LISTENER=0MASTERVOLUME=1.0SFXMINVOLDIST=6SFXMAXVOLDIST=32SFXVOLUME=0.000000BGMVOLUME=0.000000[EXTRA]TRADEPERMIT=1PVPPERMIT=1OMOCKPERMIT=0AUTOQUEST=1UIVALUEVIEW=1ADDSLOT=1[MOUSE]MOVE=1AUTOCAM=0[ITEM]ITEMVIEW=0SUMMONREFUSE=0[COLORCORRECT]BRIGHT_RED=0BRIGHT_GREEN=0BRIGHT_BLUE=0CONTRAST_RED=1.000000CONTRAST_GREEN=1.000000CONTRAST_BLUE=1.000000GAMMA_RED=1.000000GAMMA_GREEN=1.000000GAMMA_BLUE=1.000000[CLIENT]INTRO=0[NATION]LANGUAGE=0
 
Initiate Mage
Joined
May 20, 2020
Messages
5
Reaction score
2
Just as it says: use the file lorddan posted in this thread and RESTORE your DB with this file. When prompted for a file to restore from, use the file you just downloaded.... make sure the bottom right filter says "ALL FILES" not "sql" something else. It'll then restore from that file.
 
Joined
Jan 22, 2009
Messages
1,100
Reaction score
405
@Roodielle

Thanks, it worked!

@off
Does anyone know of tools that can extract Hero? (animations, mesh, terrain)
It is an old and simple mmorpg, it is a strong interesting mmorpg candidate to rewrite and test new technologies.
 
Dragonica Guy
[VIP] Member
Joined
May 4, 2014
Messages
202
Reaction score
92
Its nice to see that the game gets some recognition tho, i mean just the past 2 weeks we got the db, files, client and emulation.

It would be nice if we one day would have the ability to get the src too, but time will show!
 
Inactive Account
Inactive Account
Joined
May 31, 2020
Messages
2
Reaction score
0
Hello there,
Can you shoot a video for installation. Thanks for your help.
 
Inactive Account
Inactive Account
Joined
Nov 12, 2013
Messages
53
Reaction score
17
I dont get time i'm very very busy :/ i will make it later, i swear
 
Initiate Mage
Joined
Apr 19, 2004
Messages
12
Reaction score
2
Tbl-Editor Error

Korean, not English, is broken.
Can you support a language other than English?
 
Inactive Account
Inactive Account
Joined
Jun 20, 2020
Messages
1
Reaction score
0
Hello, anyone know the entire line of command to spawn a boss? I tried to use "/summon 41671" and nothing, 41671 is the code for Hohanma.
 
Inactive Account
Inactive Account
Joined
Jun 24, 2020
Messages
1
Reaction score
0
help :(:
L7TPNv



L7TPNv.jpg


- - - Updated - - -

At line:1 char:9+ $GOPATH/go.mod exists but should not+ ~You must provide a value expression following the '/' operator.At line:1 char:9+ $GOPATH/go.mod exists but should not+ ~~~~~~Unexpected token 'go.mod' in expression or statement. + CategoryInfo : ParserError: :)) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : ExpectedValueExpression
 
Initiate Mage
Joined
Jan 23, 2020
Messages
14
Reaction score
1
is there a tutorial on how to put online? never saw the game wanted to learn how I leave online for testing
 
Custom Title Activated
Joined
Dec 20, 2005
Messages
2,032
Reaction score
115
is there a tutorial on how to put online? never saw the game wanted to learn how I leave online for testing

Easy to put online and receive DMCA from Mgame. You better not want to deal with them. Safe ways are use VPN, such as hamachi network, zerotier.
 
Initiate Mage
Joined
Jan 23, 2020
Messages
14
Reaction score
1
https://imgur.com/a/JKyvgR4

Error comp

EDT1:
package config
import (
"log"
"os"
"strconv"
)

var Default = &config{
Database: Database{
Driver: "postgres",
IP: os.Getenv("POSTGRES_HOST"),
Port: getPort(),
User: os.Getenv("POSTGRES_USER")
Password: os.Getenv("POSTGRES_PASSWORD"),
Name: os.Getenv("POSTGRES_DB"),
ConnMaxIdle: 96,
ConnMaxOpen: 144,
ConnMaxLifetime: 10,
Debug: false,
SSLMode: "disable",
},
Server: Server{
IP: "192.168.15.10", //os.Getenv("SERVER_IP),
Port: 4510,
},
}

func getPort() int {
sPort := 4510 ("POSTGRES_PORT")
port, err := strconv.ParseInt(sPort, 10, 32)
if err != nil {
log.Fatalln(err)
}

return int(port)
}


package main

import (
"fmt"
"log"
"net"
"os"
"sort"
"strconv"
"time"

"github.com/robfig/cron"
"github.com/syntaxgame/dragon-legend/ai"
_ "github.com/syntaxgame/dragon-legend/ai"
"github.com/syntaxgame/dragon-legend/api"
"github.com/syntaxgame/dragon-legend/config"
"github.com/syntaxgame/dragon-legend/database"
_ "github.com/syntaxgame/dragon-legend/factory"
"github.com/syntaxgame/dragon-legend/logging"
"github.com/syntaxgame/dragon-legend/nats"
"github.com/syntaxgame/dragon-legend/redis"
"github.com/thoas/go-funk"
)

var (
logger = logging.Logger
)

func initDatabase() {
for {
err := database.InitDB()
if err == nil {
log.Printf("Connected to database...")
return
}
log.Printf("Database connection error: %+v, waiting 30 sec...", err)
time.Sleep(time.Duration(30) * time.Second)
}
}

func initRedis() {
for {
err := redis.InitRedis()
if err != nil {
log.Printf("Redis connection error: %+v, waiting 30 sec...", err)
time.Sleep(time.Duration(30) * time.Second)
continue
}

if redisHost := os.Getenv("REDIS_HOST"); redisHost != "" {
log.Printf("Connected to redis...")
go logger.StartLogging()
}

return
}
}

func startServer() {
cfg := config.Default
port := cfg.Server.Port

listen, err := net.Listen("tcp4", ":"+strconv.Itoa(port))
defer listen.Close()
if err != nil {
log.Fatalf("Socket listen port %d failed,%s", port, err)
os.Exit(1)
}
log.Printf("Begin listen port: %d", port)

//connections = make(map[string]net.Conn)
//remoteAddrs = make(map[string]int)

for {
conn, err := listen.Accept()
if err != nil {
log.Fatalln(err)
continue
}

ws := database.Socket{Conn: conn}
//ws.SetPingDuration(time.Second * 2)
//ws.SetPingHandler(nil)
go ws.Read()
}
}

func cronHandler() {
c := cron.New()
c.AddFunc("0 0 0 * * *", func() {
database.RefreshAIDs()
})
c.Start()
}

func main() {

initRedis()
initDatabase()
cronHandler()

ai.Init()
go database.UnbanUsers()

s := nats.RunServer(nil)
defer s.Shutdown()

c, err := nats.ConnectSelf(nil)
defer c.Close()

if err != nil {
log.Fatalln(err)
}

go api.InitGRPC()

startServer()
}

func resolveOverlappingItems() { //67-306
ids := []string{}

for _, userid := range ids {
fmt.Println("user id:", userid)
bankSlots, _ := database.FindBankSlotsByUserID(userid)
freeSlots := make(map[int16]struct{})
for _, s := range bankSlots {
freeSlots[s.SlotID] = struct{}{}
}

findSlot := func() int16 {
for i := int16(67); i <= 306; i++ {
if _, ok := freeSlots; !ok {
return i
}
}
return -1
}

for i := 0; i < len(bankSlots)-1; i++ {
for j := i; true; j++ {
if len(bankSlots) == j+1 || bankSlots.SlotID != bankSlots[j+1].SlotID {
break
}

free := findSlot()
if free == -1 {
continue
}

fmt.Printf("%d => %d\n", bankSlots[j+1].SlotID, free)
freeSlots[free] = struct{}{}
bankSlots[j+1].SlotID = free
bankSlots[j+1].Update()
}
}
}
}

func createServerMobs(server int) {
aiSet := funk.Filter(funk.Values(database.AIs), func(ai *database.AI) bool {
return ai.Server == 1
}).([]*database.AI)

sort.Slice(aiSet, func(i, j int) bool {
return aiSet.ID < aiSet[j].ID
})

for _, ai := range aiSet {
newAI := *ai
newAI.ID = 0
newAI.Server = server
err := newAI.Create()
if err != nil {
log.Print(err)
}
}
}


 
Last edited:
Back
Top