Jump to content

Special Item Group Error


Recommended Posts

I'm trying to launch files by Fliege with vanilla core (latest). When I'm launching, I'm getting the following error:

LoadGroup: CTextFileLoader::LoadGroup : must have a value (filename: locale/germany/special_item_group.txt line: 781 key: 1)
ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 경험치 : node oberork
Boot: cannot load SpecialItemGroup: locale/germany/special_item_group.txt

The point is that:

  • line 781 of special_item_group.txt is fine (tabs and values etc...)
  • 경험치 == EXP from the chest - what's wrong with that???

Is there any part of the code I have to edit to make it compatible? (specify file please) Or is it something else?

Link to comment
Share on other sites

30 minutes ago, WeedHex said:

Check the  TAB/SPACE  syntax 

I did it's all correct. I also did some digging. Seems like there was a group at the end of the file without closing bracket (deleted). The line error dissapeared. The only error left is:

ReadSpecialDropItemFile: ReadSpecialDropItemFile : there is no item 경험치 : node oberork

The chinese characters mean Yang or EXP (sometimes it's the one, sometimes the other). This one is the EXP.

Node oberork is:

Group	Oberork
{
	Vnum	50070
	1	3140	1	30	30
	2	3141	1	16	30
	3	1110	1	30	30
	4	1111	1	16	30
	5	2130	1	30	30
	6	2131	1	16	30
	7	7140	1	30	30
	8	7141	1	16	30
	9	5100	1	30	30
	10	5101	1	16	30
	11	160	1	30	30
	12	161	1	16	30
	13	240	1	30	30
	14	241	1	16	30
	15	11671	1	30	30
	16	11672	1	5	30
	17	11271	1	30	30
	18	11272	1	5	30
	19	11471	1	30	30
	20	11472	1	5	30
	21	11871	1	30	30
	22	11872	1	5	30
	23	16161	1	30	30
	24	16162	1	16	30
	25	16163	1	7	30
	26	17161	1	30	30
	27	17162	1	16	30
	28	17163	1	7	30
	29	14161	1	30	30
	30	14162	1	16	30
	31	14163	1	7	30
	32	70012	1	25
	33	70038	1	25
	34	25040	1	30
	35	70048	1	25
	36	70037	1	30
	37	70014	1	30
	38	70043	1	25
	39	70005	1	25
	40	70006	1	25
	41	돈꾸러미	50000	20
	42	돈꾸러미	100000	70
	43	돈꾸러미	200000	9
	44	27112	10	30
	45	경험치	100000	10
}

I also tried different encodings (UTF-8, EUC-KR, 1253) no difference.

Link to comment
Share on other sites

18 hours ago, Sonitex said:

Replace those Chinese characters with 'exp'.


						if (name == "경험치" || name == "exp")
						{
							dwVnum = CSpecialItemGroup::EXP;
						}

 

Thanks it worked :)

I'm getting this at DB now:

QueryLocaleSet: cannot set locale latin1 by 'mysql_set_character_set', errno 2019 Can't initialize character set utf8 (path: compiled_in)

QueryLocaleSet: cannot set locale latin1 by 'mysql_set_character_set', errno 2019 Can't initialize character set utf8 (path: compiled_in)

NOTE: I use MariaDB 10.3

Link to comment
Share on other sites

I am having this issue with the other line now (Yang). I searched in the source and the only thing I can link the characters is with

case ITEM_ELK_VNUM: // 돈꾸러미
{
	int iGold = item->GetSocket(0);
	ITEM_MANAGER::instance().RemoveItem(item);
	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("돈 %d 냥을 획득했습니다."), iGold);
	PointChange(POINT_GOLD, iGold);
}
break;

in char_item.cpp. But replacing with ITEM_ELK_VNUM doesn't seem right. Any ideas?

Link to comment
Share on other sites

  • Premium

In item_manager_read_tables.cpp search for:

bool ITEM_MANAGER::ReadSpecialDropItemFile(const char * c_pszFileName)

Inside find this, it may not be same as yours:

		else
		{
			CSpecialItemGroup * pkGroup = M2_NEW CSpecialItemGroup(iVnum, type);
			for (int k = 1; k < 256; ++k)
			{
				char buf[4];
				snprintf(buf, sizeof(buf), "%d", k);

				if (loader.GetTokenVector(buf, &pTok))
				{
					const std::string& name = pTok->at(0);
					DWORD dwVnum = 0;

					if (!GetVnumByOriginalName(name.c_str(), dwVnum))
					{
						if (name == "exp")
						{
							dwVnum = CSpecialItemGroup::EXP;
						}
						else if (name == "mob")
						{
							dwVnum = CSpecialItemGroup::MOB;
						}
						else if (name == "slow")
						{
							dwVnum = CSpecialItemGroup::SLOW;
						}
						else if (name == "drain_hp")
						{
							dwVnum = CSpecialItemGroup::DRAIN_HP;
						}
						else if (name == "poison")
						{
							dwVnum = CSpecialItemGroup::POISON;
						}
						else if (name == "bleed")
						{
							dwVnum = CSpecialItemGroup::BLEED;
						}
						else if (name == "group")
						{
							dwVnum = CSpecialItemGroup::MOB_GROUP;
						}
						else
						{
							str_to_number(dwVnum, name.c_str());
							if (!ITEM_MANAGER::instance().GetTable(dwVnum))
							{
								sys_err("ReadSpecialDropItemFile : there is no item %s : node %s", name.c_str(), stName.c_str());
								M2_DELETE(pkGroup);

								return false;
							}
						}
					}

And add this below <if (name == "exp")>

						else if (name == "yang")
						{
							dwVnum = CSpecialItemGroup::GOLD;
						}

I just tested it so it should work fine :=) 

  • Love 1
Link to comment
Share on other sites

So something else came up. After special_item_group.txt gets fixed, I get this:

ReadMonsterDropItemGroup: ReadMonsterDropItemGroup : there is no item 진구미호의상자 : node  : vnum 0
Boot: cannot load MOBDropItemFile: locale/germany/mob_drop_item.txt

I have no idea what item this is all I know is that it's some kind of chest. The block is this:

Group	진구미호				
{					
	type	kill			
	mob	1902			
	kill_drop	1			
	1	진구미호의상자	2	100	0
	2	50006	15	30	0
	3	50007	20	40	0
	4	50012	10	15	0
	5	50013	15	20	0
	6	50011	5	5	0
}					

I tried removing it but I had the second line of my error. I compared with other files from other SF, same thing but only now I'm having the issue.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

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.