Jump to content

[40250] Reference Serverfile + Client + Src [15 Available Languages]


TMP4

Recommended Posts

  • Contributor
20 minutes ago, avertusss said:

@ TMP4 i bought vps on contabo as you told but i cannot run freebsd. When i installed by panel

eDSZIv7.png

Any ideas? 

This screen is before the FreeBSD would load.

So on vps control panel you choose your vps then click reinstall, choose FreeBSD, type a password, and click "Start installation".
If you did this and FreeBSD fails to start and you're stuck on this screen, then please open a support ticket because that is a bug and only the Contabo support can solve it for you.

By the way If they do not have the desired FreeBSD version, as I remember there were only 12.x when we did, just choose that and upgrade FreeBSD later, there are good tutorials on the internet like this.

On 4/11/2023 at 8:01 PM, Nuzzo said:

1.) tent_s_lamp.mse simply missing from the client. I did not remove it, original 40k client misses it. To solve it either get the file from somewhere (I don't have it) or remove it from where it loads it so it won't log that it's missing.

2.) You can solve the Cannot load data by DwRaceIndex if you add the portals to root/npclist.txt 

10801	warp
10802	warp
10803	warp
10804	warp
10805	warp
10806	warp
10807	warp
10808	warp
10809	warp
10810	warp
10811	warp
10812	warp
10813	warp
10814	warp
10815	warp
10816	warp
10817	warp
10818	warp
10819	warp
10820	warp
10821	warp
10822	warp
10823	warp
10824	warp
10825	warp
10826	warp
10827	warp
10828	warp
10829	warp
10830	warp
10831	warp
10832	warp
10833	warp
10834	warp
10835	warp

3.) The "LOAD MSMFILE[d:/ymir work/npc/flame_dungeon_npc/flame_npc.msm] ERROR. Will Find Another Path." is not an error but a log. By the ID it wanted to load from npc, but since it did not find there, the client will "Will Find Another Path" and it does find it. The "LoadScript(D:\Ymir Work\effect\monster2\yellowred1_big.mse) Error" does an error, same as the tent_s_lamp.mse...

Some bugs have been fixed, especially those that are exploits or affects the user experience, but such minor things that only logs into the syserr have probably not been fixed in this release.

  • Metin2 Dev 1
Link to comment
Share on other sites

3 hours ago, TMP4 said:

This screen is before the FreeBSD would load.

So on vps control panel you choose your vps then click reinstall, choose FreeBSD, type a password, and click "Start installation".
If you did this and FreeBSD fails to start and you're stuck on this screen, then please open a support ticket because that is a bug and only the Contabo support can solve it for you.

By the way If they do not have the desired FreeBSD version, as I remember there were only 12.x when we did, just choose that and upgrade FreeBSD later, there are good tutorials on the internet like this.

1.) tent_s_lamp.mse simply missing from the client. I did not remove it, original 40k client misses it. To solve it either get the file from somewhere (I don't have it) or remove it from where it loads it so it won't log that it's missing.

2.) You can solve the Cannot load data by DwRaceIndex if you add the portals to root/npclist.txt 

10801	warp
10802	warp
10803	warp
10804	warp
10805	warp
10806	warp
10807	warp
10808	warp
10809	warp
10810	warp
10811	warp
10812	warp
10813	warp
10814	warp
10815	warp
10816	warp
10817	warp
10818	warp
10819	warp
10820	warp
10821	warp
10822	warp
10823	warp
10824	warp
10825	warp
10826	warp
10827	warp
10828	warp
10829	warp
10830	warp
10831	warp
10832	warp
10833	warp
10834	warp
10835	warp

3.) The "LOAD MSMFILE[d:/ymir work/npc/flame_dungeon_npc/flame_npc.msm] ERROR. Will Find Another Path." is not an error but a log. By the ID it wanted to load from npc, but since it did not find there, the client will "Will Find Another Path" and it does find it. The "LoadScript(D:\Ymir Work\effect\monster2\yellowred1_big.mse) Error" does an error, same as the tent_s_lamp.mse...

Some bugs have been fixed, especially those that are exploits or affects the user experience, but such minor things that only logs into the syserr have probably not been fixed in this release.

Thank you for your answers!

  • Lmao 1
  • Good 1
  • Love 2
Link to comment
Share on other sites

On 4/14/2023 at 8:49 PM, TMP4 said:

This screen is before the FreeBSD would load.

So on vps control panel you choose your vps then click reinstall, choose FreeBSD, type a password, and click "Start installation".
If you did this and FreeBSD fails to start and you're stuck on this screen, then please open a support ticket because that is a bug and only the Contabo support can solve it for you.

By the way If they do not have the desired FreeBSD version, as I remember there were only 12.x when we did, just choose that and upgrade FreeBSD later, there are good tutorials on the internet like this.

but they installed 12.3 64 bit not 32. I cannot compile src. Can i change it to 32 bit by myself?

Edited by avertusss
Link to comment
Share on other sites

  • Contributor
19 minutes ago, avertusss said:

but they installed 12.3 64 bit not 32. I cannot compile src. Can i change it to 32 bit by myself?

I think it is possible via custom images, but just don't. 32bit OS can only handle 4gb of ram, and you have 8 or more. But you can install a 32bit jail on your system. I cannot give you a tutorial, search it up on Google if you wanna do it. But most people does not compile & test on their live vps anyway.

Edited by TMP4
Link to comment
Share on other sites

  • Contributor
8 minutes ago, avertusss said:

I tried use jail as you have in faq but i cannot compile
 

linking ../db....
ld: error: ../../libthecore/lib/libthecore.a(socket.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(fdwatch.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(buffer.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(signal.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(log.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(utils.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(kstbl.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(hangul.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(heart.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(main.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(tea.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(des.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(gost.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libthecore/lib/libthecore.a(memcpy.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libsql/libsql.a(AsyncSQL.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libsql/libsql.a(Semaphore.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libsql/libsql.a(Tellwait.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libsql/libsql.a(Statement.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libpoly/libpoly.a(Base.o) is incompatible with /usr/lib/crt1.o
ld: error: ../../libpoly/libpoly.a(Poly.o) is incompatible with /usr/lib/crt1.o
ld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors)
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake: *** [Makefile:50: ../db] Error 1
[root@vmi1274726 /usr/metin2/src/server/db/src]#

any ideas? I don't know if i use jail or normal system. It's magic xD

You have to move the src folder to your jail's location, switch to your jail via "jexec 1 tcsh" (1 is the id of the jail), install the required stuff for compililing llvm-devel, mysql and recompile everything, not just the game & db. You may need to modifiy some makefile (game,db,libsql) since it reads the mysql includes and libs from /usr/xy and you need to edit it to your jail's location.

Link to comment
Share on other sites

24 minutes ago, TMP4 said:

You have to move the src folder to your jail's location, switch to your jail via "jexec 1 tcsh" (1 is the id of the jail), install the required stuff for compililing llvm-devel, mysql and recompile everything, not just the game & db. You may need to modifiy some makefile (game,db,libsql) since it reads the mysql includes and libs from /usr/xy and you need to edit it to your jail's location.

Yee, i compiled but i cannot run:

ld-elf32.so.1: Shared object "libm.so.5" not found, required by "db"

 

Link to comment
Share on other sites

  • Premium
25 minutes ago, TMP4 said:

You have to move the src folder to your jail's location, switch to your jail via "jexec 1 tcsh" (1 is the id of the jail), install the required stuff for compililing llvm-devel, mysql and recompile everything, not just the game & db. You may need to modifiy some makefile (game,db,libsql) since it reads the mysql includes and libs from /usr/xy and you need to edit it to your jail's location.

Little tutorial for jail.

This is the hidden content, please

  • Metin2 Dev 21
  • Eyes 1
  • Good 5
  • Love 9


 

Link to comment
Share on other sites

22 minutes ago, TAUMP said:

Little tutorial for jail.

This is the hidden content, please

Now i have 

ld-elf32.so.1: Shared object "libm.so.5" not found, required by "db"

with -static in makefile it works, but i guess it should work without it. 

Edited by avertusss
  • Metin2 Dev 5
Link to comment
Share on other sites

  • Contributor
49 minutes ago, avertusss said:

Now i have 

ld-elf32.so.1: Shared object "libm.so.5" not found, required by "db"

with -static in makefile it works, but i guess it should work without it. 

libm.so.5 located at /lib/libm.so.5. It is there? After a quick google search it is a default library in FreeBSD. Anyway linking it statically is fine.

Link to comment
Share on other sites

23 hours ago, БlyatMAN said:

when i upgrade something with magic stone (25041) it say like this .

This whill improve the change for upgrading,but if you fail the Item could be destroyed. /n Do you want to continue?

That /n supose to be there? i dont remember to be like that

and this is the syserr-DoRefineWithScroll: REFINE : Unknown refine scroll item. Value0: 1

29 minutes ago, БlyatMAN said:

and this is the syserr-DoRefineWithScroll: REFINE : Unknown refine scroll item. Value0: 1

in item proto client and sv have value 1

Link to comment
Share on other sites

Good evening everyone...

@ TMP4

I'm starting to work with Metin2, I'm still inexperienced, but I really want to learn...
I'm Brazilian and would like to know if it's possible to add the Brazilian Portuguese language, and if it's possible...
If possible, could you tell me if I need to make changes to source_game, etc...

Thank you in advance for your attention and thank you for your contribution to the metin2 public

Link to comment
Share on other sites

  • Contributor
On 4/20/2023 at 6:50 AM, БlyatMAN said:

and this is the syserr-DoRefineWithScroll: REFINE : Unknown refine scroll item. Value0: 1

in item proto client and sv have value 1

It's normal. Magic stone were unused on official servers therefore they didn't bother themself to exclude from log.

You can modify char_item.cpp as follows:

		else
		{
			sys_err("REFINE : Unknown refine scroll item. Value0: %d", pkItemScroll->GetValue(0));
		}

to

		else if (pkItemScroll->GetValue(0) != HYUNIRON_CHN)
		{
			sys_err("REFINE : Unknown refine scroll item. Value0: %d", pkItemScroll->GetValue(0));
		}

About the /n in locale_game.txt simply remove it it from the text. For example the hungarian locale doesn't even have /n there. If it's too long then rephrase the text.

On 4/20/2023 at 10:33 PM, Marcos17 said:

Good evening everyone...

@ TMP4

I'm starting to work with Metin2, I'm still inexperienced, but I really want to learn...
I'm Brazilian and would like to know if it's possible to add the Brazilian Portuguese language, and if it's possible...
If possible, could you tell me if I need to make changes to source_game, etc...

Thank you in advance for your attention and thank you for your contribution to the metin2 public

It is possible but I don't have Brazilian Portuguese language. On the video where I swich english to hungarian you will see every file what contains language specific things. I guess you don't want to translate the files yourself so where you can get Brasilian lang files is a good question, I suggest you to open a topic there: https://metin2.dev/forum/119-file-requests/

Edited by TMP4
  • Metin2 Dev 1
  • Scream 1
  • Love 1
Link to comment
Share on other sites

2 hours ago, TMP4 said:

It's normal. Magic stone were unused on official servers therefore they didn't bother themself to exclude from log.

You can modify char_item.cpp as follows:

		else
		{
			sys_err("REFINE : Unknown refine scroll item. Value0: %d", pkItemScroll->GetValue(0));
		}

to

		else if (pkItemScroll->GetValue(0) != HYUNIRON_CHN)
		{
			sys_err("REFINE : Unknown refine scroll item. Value0: %d", pkItemScroll->GetValue(0));
		}

About the /n in locale_game.txt simply remove it it from the text. For example the hungarian locale doesn't even have /n there. If it's too long then rephrase the text.

It is possible but I don't have Brazilian Portuguese language. On the video where I swich english to hungarian you will see every file what contains language specific things. I guess you don't want to translate the files yourself so where you can get Brasilian lang files is a good question, I suggest you to open a topic there: https://metin2.dev/forum/119-file-requests/

@ TMP4thx bro! you save us again.

  • Scream 1
Link to comment
Share on other sites

Again me 👋 devil tower have at 3th floor this error in sysser

SYSERR: Apr 27 02:08:55 :: GetUniqueHpPerc: Unknown Key : fake4
SYSERR: Apr 27 02:08:55 :: PurgeUnique: Unknown Key or Dead: fake4
SYSERR: Apr 27 02:09:35 :: GetUniqueHpPerc: Unknown Key : fake3
SYSERR: Apr 27 02:09:35 :: PurgeUnique: Unknown Key or Dead: fake3
SYSERR: Apr 27 02:10:05 :: IsUniqueDead: Unknown Key or Dead : real
 

Any fix f this? 

Its from quest ofc...but any fix?

Edited by БlyatMAN
Link to comment
Share on other sites

  • Contributor
7 hours ago, БlyatMAN said:

Again me 👋 devil tower have at 3th floor this error in sysser

SYSERR: Apr 27 02:08:55 :: GetUniqueHpPerc: Unknown Key : fake4
SYSERR: Apr 27 02:08:55 :: PurgeUnique: Unknown Key or Dead: fake4
SYSERR: Apr 27 02:09:35 :: GetUniqueHpPerc: Unknown Key : fake3
SYSERR: Apr 27 02:09:35 :: PurgeUnique: Unknown Key or Dead: fake3
SYSERR: Apr 27 02:10:05 :: IsUniqueDead: Unknown Key or Dead : real
 

Any fix f this? 

Its from quest ofc...but any fix?

It is coming from the 4th floor:

Spoiler
    when devil_stone4_update.server_timer begin
        if d.select(get_server_timer_arg()) then
            if not d.is_unique_dead("real") then
                for i = 1, 6 do
                    if d.getf("fakedead" .. i) == 0 then
                        if d.unique_get_hp_perc("fake" .. i) < 50 then
                            d.purge_unique("fake" .. i)
                            d.setf("fakedead" .. i, 1)
                            notice_multiline(gameforge.deviltower_zone._90_dNotice,d.notice)
                        end
                    end
                end
            else
                server_timer("devil_stone4_end", 5, get_server_timer_arg())
                --d.kill_all()
                d.purge()
                notice_multiline(gameforge.deviltower_zone._100_dNotice,d.notice)
                clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
                clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
                clear_server_timer('devil_stone4_fail', get_server_timer_arg())
            end
        else
            server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
        end
    end

So the important thing is that this is not a syserr-free server file. Every base file had and have this syserr. Despite that syserr, devil tower works fine.
I don't have a fix for that.

Edited by TMP4
Link to comment
Share on other sites

a few problems and sysser on debug mode

@ TMP4

Spoiler

1)Damage queue

2)CANNOT_FIND_PACK_FILE [locale/tr/atlasinfo.txt]
3)CANNOT_FIND_PACK_FILE [sound/effect/etc/dropitem/dropitem.mss]

4)skillGetAffect - Strange Formula (on too many skills)

5-6)0427 03:19:17721 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 20025
0427 03:19:17721 :: CPythonCharacterManager::CreateInstance VID[20025] Race[20025]

7)CRaceManager::RegisterRacePath : RACE[33009] LOAD MSMFILE[d:/ymir work/npc2/alchemist/alchemist.msm] ERROR. Will Find Another Path.

Link to comment
Share on other sites

  • Premium
On 4/27/2023 at 7:17 AM, TMP4 said:

It is coming from the 4th floor:

  Hide contents
    when devil_stone4_update.server_timer begin
        if d.select(get_server_timer_arg()) then
            if not d.is_unique_dead("real") then
                for i = 1, 6 do
                    if d.getf("fakedead" .. i) == 0 then
                        if d.unique_get_hp_perc("fake" .. i) < 50 then
                            d.purge_unique("fake" .. i)
                            d.setf("fakedead" .. i, 1)
                            notice_multiline(gameforge.deviltower_zone._90_dNotice,d.notice)
                        end
                    end
                end
            else
                server_timer("devil_stone4_end", 5, get_server_timer_arg())
                --d.kill_all()
                d.purge()
                notice_multiline(gameforge.deviltower_zone._100_dNotice,d.notice)
                clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
                clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
                clear_server_timer('devil_stone4_fail', get_server_timer_arg())
            end
        else
            server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
        end
    end

So the important thing is that this is not a syserr-free server file. Every base file had and have this syserr. Despite that syserr, devil tower works fine.
I don't have a fix for that.

if d.unique_get_hp_perc("fake" .. i) < 50 then
    d.purge_unique("fake" .. i)

change with:

if not d.is_unique_dead("fake" .. i) and d.unique_get_hp_perc("fake" .. i) < 50 then
    d.purge_unique("fake" .. i)

This way you check if the unique still exists before making operations and checks on it. Sadly the official quests are far from perfect. They work, but they lack safety checks like these.

Anyway, this is the right way to do stuff with uniques, but despite this fix you will still get an 'error' that looks like this:
 

IsUniqueDead: Unknown Key or Dead : fake3

Now this one actually makes no sense as an error, meaning it's not actually an error. I'll explain briefly:

This triggers, like I show in the snippet below, when an unique is not found in the unique map.

But that's exactly the point of the 'IsUniqueDead' function in the first place, to check if they're dead or not existing, so I suspect they just copypasted it from the other similiar methods and never doublechecked, but one thing for sure: this syserr definitely does not belong to this method and can safely be commented out, like this:

bool CDungeon::IsUniqueDead(const std::string& key)
{
	TUniqueMobMap::iterator it = m_map_UniqueMob.find(key);

	if (it == m_map_UniqueMob.end())
	{
		//sys_err("Unknown Key or Dead : %s", key.c_str());
		return true;
	}

	return it->second->IsDead();
}

And now not only the quest's code will behave properly, but your syserr will also be clean from errors like this, assuming you haven't got any other quest that makes unique calls without checking for IsUniqueDead, in which case you'll have to add the check in each one of their occurrences, too.

Edited by Syreldar
  • Love 3

 

"Nothing's free in this life.

Ignorant people have an obligation to make up for their ignorance by paying those who help them.

Either you got the brains or cash, if you lack both you're useless."

Syreldar

Link to comment
Share on other sites

21 hours ago, Syreldar said:
if d.unique_get_hp_perc("fake" .. i) < 50 then
    d.purge_unique("fake" .. i)

change with:

if not d.is_unique_dead("fake" .. i) and d.unique_get_hp_perc("fake" .. i) < 50 then
    d.purge_unique("fake" .. i)

This way you check if the unique still exists before making operations and checks on it. Sadly the official quests are far from perfect. They work, but they lack safety checks like these.

Anyway, this is the right way to do stuff with uniques, but despite this fix you will still get an 'error' that looks like this:
 

IsUniqueDead: Unknown Key or Dead : fake3

Now this one actually makes no sense as an error, meaning it's not actually an error. I'll explain briefly:

This triggers, like I show in the snippet below, when an unique is not found in the unique map.

But that's exactly the point of the 'IsUniqueDead' function in the first place, to check if they're dead or not existing, so I suspect they just copypasted it from the other similiar methods and never doublechecked, but one thing for sure: this syserr definitely does not belong to this method and can safely be commented out, like this:

bool CDungeon::IsUniqueDead(const std::string& key)
{
	TUniqueMobMap::iterator it = m_map_UniqueMob.find(key);

	if (it == m_map_UniqueMob.end())
	{
		//sys_err("Unknown Key or Dead : %s", key.c_str());
		return true;
	}

	return it->second->IsDead();
}

And now not only the quest's code will behave properly, but your syserr will also be clean from errors like this, assuming you haven't got any other quest that makes unique calls without checking for IsUniqueDead, in which case you'll have to add the check in each one of their occurrences, too.

where is the file to modify this 

bool CDungeon::IsUniqueDead(const std::string& key) { TUniqueMobMap::iterator it = m_map_UniqueMob.find(key); if (it == m_map_UniqueMob.end()) { //sys_err("Unknown Key or Dead : %s", key.c_str()); return true; } return it->second->IsDead(); }

dungeon.cpp?

Edited by БlyatMAN
Link to comment
Share on other sites

2 hours ago, БlyatMAN said:

where is the file to modify this 

bool CDungeon::IsUniqueDead(const std::string& key) { TUniqueMobMap::iterator it = m_map_UniqueMob.find(key); if (it == m_map_UniqueMob.end()) { //sys_err("Unknown Key or Dead : %s", key.c_str()); return true; } return it->second->IsDead(); }

dungeon.cpp?

yep is working thanks

  • Metin2 Dev 1
  • Confused 1
  • Love 1
Link to comment
Share on other sites

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.