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!

[Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2]

Newbie Spellweaver
Joined
Jul 13, 2019
Messages
87
Reaction score
37
fix display damage, hp, mp, sd, ag

nzes41 - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Jul 13, 2019
Messages
87
Reaction score
37
I damage in Rage Fighter?
Will you be overflowing with ignore, critical and double hit?
Or don't you enable RF at all?

I don't have RF enabled, but I'll try it now
 
Newbie Spellweaver
Joined
Jul 13, 2019
Messages
87
Reaction score
37
I found a bug, can't display item info in inventory, has anyone reviewed it yet

tf1BN2h - [Development] Source Mu Main 1.03.35 [Season 5.1 - Season 5.2] - RaGEZONE Forums

 

Attachments

You must be registered for see attachments list
Junior Spellweaver
Joined
Aug 1, 2011
Messages
126
Reaction score
90
No more inventory invisible items:

Find ( in ZzzInformation.cpp )

Code:
			BYTE *pSeek = Buffer;
			for(int i=0;i<MAX_ITEM;i++)
			{
				BuxConvert(pSeek,Size);
				memcpy(&ItemAttribute[i],pSeek,Size);
				pSeek += Size;
			}

Replace to:

Code:
			BYTE *pSeek = Buffer;
			for(int i=0;i<MAX_ITEM;i++)
			{
				BuxConvert(pSeek,Size);
				memcpy(&ItemAttribute[i],pSeek,Size);
				ItemAttribute[i].Width = MAX(1, ItemAttribute[i].Width);
				ItemAttribute[i].Height = MAX(1, ItemAttribute[i].Height);
				pSeek += Size;
			}

It makes broken items are still clickable in inventory.



No more quest window and talking with npc crashing game:

Find ( in QuestMng.cpp )

Code:
const char* CQuestMng::GetWords(int nWordsIndex)
{
	QuestWordsMap::const_iterator iter = m_mapQuestWords.find(nWordsIndex);
	if (iter == m_mapQuestWords.end())
		return NULL;

	return iter->second.c_str();
}

const char* CQuestMng::GetNPCDlgNPCWords(DWORD dwDlgState)
{
	if (0 == m_nNPCIndex)
		return NULL;

	DWORD dwNPCDlgIndex = (DWORD)m_nNPCIndex * 0x10000 + dwDlgState;

	NPCDialogueMap::const_iterator iter = m_mapNPCDialogue.find(dwNPCDlgIndex);
	if (iter == m_mapNPCDialogue.end())
		return NULL;

	return GetWords(iter->second.m_nNPCWords);
}

const char* CQuestMng::GetNPCDlgAnswer(DWORD dwDlgState, int nAnswer)
{
	if (0 == m_nNPCIndex)
		return NULL;

	_ASSERT(0 <= nAnswer || nAnswer < QM_MAX_ND_ANSWER);

	DWORD dwNPCDlgIndex = (DWORD)m_nNPCIndex * 0x10000 + dwDlgState;

	NPCDialogueMap::const_iterator iter = m_mapNPCDialogue.find(dwNPCDlgIndex);
	if (iter == m_mapNPCDialogue.end())
		return NULL;

	DWORD nNowAnswer = iter->second.m_anAnswer[nAnswer*2];
	if (0 == nNowAnswer)
		return NULL;

	return GetWords(nNowAnswer);
}

Replace with:

Code:
const char* CQuestMng::GetWords(int nWordsIndex)
{
	QuestWordsMap::const_iterator iter = m_mapQuestWords.find(nWordsIndex);
	if (iter == m_mapQuestWords.end())
		return "";

	return iter->second.c_str();
}

const char* CQuestMng::GetNPCDlgNPCWords(DWORD dwDlgState)
{
	if (0 == m_nNPCIndex)
		return "";

	DWORD dwNPCDlgIndex = (DWORD)m_nNPCIndex * 0x10000 + dwDlgState;

	NPCDialogueMap::const_iterator iter = m_mapNPCDialogue.find(dwNPCDlgIndex);
	if (iter == m_mapNPCDialogue.end())
		return "";

	return GetWords(iter->second.m_nNPCWords);
}

const char* CQuestMng::GetNPCDlgAnswer(DWORD dwDlgState, int nAnswer)
{
	if (0 == m_nNPCIndex)
		return "";

	_ASSERT(0 <= nAnswer || nAnswer < QM_MAX_ND_ANSWER);

	DWORD dwNPCDlgIndex = (DWORD)m_nNPCIndex * 0x10000 + dwDlgState;

	NPCDialogueMap::const_iterator iter = m_mapNPCDialogue.find(dwNPCDlgIndex);
	if (iter == m_mapNPCDialogue.end())
		return "";

	DWORD nNowAnswer = iter->second.m_anAnswer[nAnswer*2];
	if (0 == nNowAnswer)
		return "";

	return GetWords(nNowAnswer);
}

+ FIX (in NewUINPCDialogue.cpp)

Code:
		if (NULL == pszAnswer)
			break;

Replace with:

Code:
		if (NULL == pszAnswer || "" == pszAnswer)
			break;



Fix NPC Names (in ZzzInformation.cpp):

Code:
char*   getMonsterName ( int type )
{
    for ( int i=0; i<MAX_MONSTER; ++i )
    {
        if ( MonsterScript[i].Type==type )
        {
            return MonsterScript[i].Name;
        }
    }
    return "Unknown";
}

+ Fix in ZzzCharacter.cpp in Setting_Monster

Code:
	if(c != NULL)
	{

Replace with:

Code:
	if(c != NULL)
	{
		strcpy(c->ID, ::getMonsterName(Type));

Find Data/Local/Eng/Npcname(eng).txt and rename it to Npcname_eng.txt

U can use file formatted by me:

Code:
0	1	"Bull Fighter"
1	1	"Hound"
2	1	"Budge Dragon"
3	1	"Spider"
4	1	"Elite Bull Fighter"
5	1	"Hell Hound"
6	1	"LIch"
7	1	"Giant"
8	1	"Poison Bull Fighter"
9	1	"Thunder Lich"
10	1	"Dark Knight"
11	1	"Ghost"
12	1	"Larva"
13	1	"Hell Spider"
14	1	"Skeleton"
15	1	"Skeleton Archer"
16	1	"Chief Skeleton Warrior"
17	1	"Cyclops"
18	1	"Gorgon"
19	1	"Yeti"
20	1	"Elite Yeti"
21	1	"Assassin"
22	1	"Ice Monster"
23	1	"Hommerd"
24	1	"Worm"
25	1	"Ice Queen"
26	1	"Goblin"
27	1	"Chain Scorpion"
28	1	"Beetle Monster"
29	1	"Hunter"
30	1	"Forest Monster"
31	1	"Agon"
32	1	"Stone Golem"
33	1	"Elite Goblin"
34	1	"Cursed Wizard"
35	1	"Death Gorgon"
36	1	"Shadow"
37	1	"Devil"
38	1	"Balrog"
39	1	"Poison Shadow"
40	1	"Death Knight"
41	1	"Death Cow"
43	1	"Golden Budge Dragon"
44	1	"Dragon"
45	1	"Bahamut"
46	1	"Vepar"
47	1	"Valkyrie"
48	1	"Lizard King"
49	1	"Hydra"
50	1	"Sea Worm"
51	1	"Great Bahamut"
52	1	"Silver Valkyrie"
53	1	"Golden Titan"
54	1	"Golden Soldier"
55	1	"Death King"
56	1	"Death Bone"
57	1	"Iron Wheel"
58	1	"Tantalos"
59	1	"Zaikan"
60	1	"Bloody wolf"
61	1	"Beam Knight"
62	1	"Mutant"
63	1	"Death Beam Knight"
64	1	"Ogre archer"
65	1	"Elite Ogre"
66	1	"Cursed king"
67	1	"Metal Balrog"
68	1	"Molt"
69	1	"Alquamos"
70	1	"Queen Rainier"
71	1	"Mega Crust"
72	1	"Phantom Knight"
73	1	"Drakan"
74	1	"Alpha Crust"
75	1	"Great Drakan"
76	1	"Phoenix Darkness shield"
77	1	"Phoenix of Darkness"
78	1	"Golden Goblin"
79	1	"Golden Derkon"
80	1	"Golden Lizard King"
81	1	"Golden Vepar"
82	1	"Golden Tantalos"
83	1	"Golden Wheel"
84	1	"Chief Skeleton Warrior"
85	1	"Chief Skeleton Archer"
86	1	"Dark Skull Soldier"
87	1	"Giant Ogre"
88	1	"Red Skeleton Knight"
89	1	"Magic Skeleton"
90	1	"Chief Skeleton Warrior"
91	1	"Chief Skeleton Archer"
92	1	"Dark Skull Soldier"
93	1	"Giant Ogre"
94	1	"Red Skeleton Knight"
95	1	"Magic Skeleton"
96	1	"Chief Skeleton Warrior"
97	1	"Chief Skeleton Archer"
98	1	"Dark Skull Soldier"
99	1	"Giant Ogre"
100	1	"Lance"
101	1	"Iron Stick"
102	1	"Fire"
103	1	"Meteorite"
104	1	"Trap"
105	1	"Canon Trap"
106	1	"Laser Trap"
111	1	"Red Skeleton Knight"
112	1	"Magic Skeleton"
113	1	"Chief Skeleton Warrior"
114	1	"Chief Skeleton Archer"
115	1	"Dark Skull Soldier"
116	1	"Giant Ogre"
117	1	"Red Skeleton Knight"
118	1	"Magic Skeleton"
119	1	"Chief Skeleton Warrior"
120	1	"Chief Skeleton Archer"
121	1	"Dark Skull Soldier"
122	1	"Giant Ogre"
123	1	"Red Skeleton Knight"
124	1	"Magic Skeleton"
125	1	"Chief Skeleton Warrior"
126	1	"Chief Skeleton Archer"
127	1	"Dark Skull Soldier"
128	1	"Giant Ogre"
129	1	"Red Skeleton Knight"
130	1	"Magic Skeleton"
131	1	"Castle Gate"
132	1	"Statue of Saint"
133	1	"Statue of Saint"
134	1	"Statue of Saint"
135	1	"White wizard"
136	1	"Destructive ogre soldier"
137	1	"Destructive ogre archer"
138	1	"Chief Skeleton Warrior"
139	1	"Chief Skeleton Archer"
140	1	"Dark Skull Soldier"
141	1	"Giant Ogre"
142	1	"Red Skeleton Knight"
143	1	"Magic Skeleton"
144	1	"Death Angel"
145	1	"Death Centurion"
146	1	"Blood Soldier"
147	1	"Aegis"
148	1	"Rogue Centurion"
149	1	"Necron"
150	1	"Bali"
151	1	"Soldier"
152	1	"Magic stone of %s "
153	1	"Magic stone of %s "
154	1	"Magic stone of %s "
155	1	"Magic stone of %s "
156	1	"Magic stone of %s "
157	1	"Magic stone of %s "
158	1	"Magic stone of %s "
160	1	"Schriker"
161	1	"Illusion of Kundun"
162	1	"Chaos Castle 1"
163	1	"Chaos Castle 2"
164	1	"Chaos Castle 3"
165	1	"Chaos Castle 4"
166	1	"Chaos Castle 5"
167	1	"Chaos Castle 6"
168	1	"Chaos Castle 7"
169	1	"Chaos Castle 8"
170	1	"Chaos Castle 9"
171	1	"Chaos Castle 10"
172	1	"Chaos Castle 11"
173	1	"Chaos Castle 12"
174	1	"Death Angel"
175	1	"Death Centurion"
176	1	"Blood Soldier"
177	1	"Aegis"
178	1	"Rogue Centurion"
179	1	"Necron"
180	1	"Schriker"
181	1	"Illusion of Kundun"
182	1	"Death Angel"
183	1	"Death Centurion"
184	1	"Blood Soldier"
185	1	"Aegis"
186	1	"Rogue Centurion"
187	1	"Necron"
188	1	"Schriker"
189	1	"Illusion of Kundun"
190	1	"Death Angel"
191	1	"Death Centurion"
192	1	"Blood Soldier"
193	1	"Aegis"
194	1	"Rogue Centurion"
195	1	"Necron"
196	1	"Schriker"
197	1	"Illusion of Kundun"
200	1	"Soccer Ball"
204	1	"Wolf Status"
205	1	"Wolf Altar1"
206	1	"Wolf Altar2"
207	1	"Wolf Altar3"
208	1	"Wolf Altar4"
209	1	"Wolf Altar5"
215	1	"Shield"
216	1	"Crown"
217	1	"Crown Switch2"
218	1	"Crown Switch1"
219	1	"Castle Gate Switch"
220	1	"Gatekeeper"
221	1	"Slingshot attack"
222	1	"Slingshot defense"
223	1	"Senior"
224	1	"Guardsman"
226	1	"Trainer"
229	1	"Marlon"
230	1	"Wandering Merchant Alex"
231	1	"Thompson Kenel"
232	1	"Archangel"
233	1	"Messenger of Archangel"
234	1	"Pet Trainer"
235	1	"Sebina the Priest"
236	1	"Golden Archer"
237	1	"Charon"
238	1	"Chaos Goblin"
239	1	"Arena Guard"
240	1	"Safety Guardian"
241	1	"Royal Guard Captain Lorence"
242	1	"Elf Lala"
243	1	"Eo the Craftsman"
244	1	"Caren the Barmaid"
245	1	"Wizard Izabel"
246	1	"Weapons Merchant Zienna"
247	1	"Guard"
248	1	"Wandering Merchant Martin"
249	1	"Guard"
250	1	"Wandering Merchant"
251	1	"Hanzo the Blacksmith"
252	1	""
253	1	"Potion Girl Amy"
254	1	"Pasi the Mage"
255	1	"Lumen the Barmaid"
256	1	"Lahap"
257	1	"Shadow Phantom Soldier"
258	1	"Luke the Helper"
259	1	"Oracle Layla"
260	1	"Death Angel"
261	1	"Death Centurion"
262	1	"Blood Soldier"
263	1	"Aegis"
264	1	"Rogue Centurion"
265	1	"Necron"
266	1	"Schriker"
267	1	"Illusion of Kundun"
268	1	"Death Angel"
269	1	"Death Centurion"
270	1	"Blood Soldier"
271	1	"Aegis"
272	1	"Rogue Centurion"
273	1	"Necron"
274	1	"Schriker"
275	1	"Kundun"
277	1	"Castle Gate"
278	1	"Life Stone"
283	1	"Guardian Statue"
285	1	"Guardian"
286	1	"Archer"
287	1	"Spearman"
288	1	"Canon Tower"
290	1	"Lizard Warrior"
291	1	"Fire Golem"
292	1	"Queen Bee"
293	1	"Poison Golem"
294	1	"Ax Warrior"
295	1	"Erohim"
296	1	"Monster7"
300	1	"Hero Mutant"
301	1	"Omega Wing"
302	1	"Axl Hero"
303	1	"Gigas Golem"
304	1	"Witch Queen"
305	1	"Blue Golem"
306	1	"Death Rider"
307	1	"Forest Orc"
308	1	"Death Tree"
309	1	"Hell Maine"
310	1	"Hammer Scout"
311	1	"Lance Scout"
312	1	"Bow Scout"
313	1	"Werewolf"
314	1	"Scout(Hero)"
315	1	"Werewolf(Hero)"
316	1	"Balram"
317	1	"Soram"
331	1	"Aegis"
332	1	"Rogue Centurion"
333	1	"Blood Soldier"
334	1	"Death Angel"
335	1	"Necron"
336	1	"Death Centurion"
337	1	"Schriker"
338	1	"Illusion of Kundun"
340	1	"Dark Elf"
341	1	"Soram"
344	1	"Balram"
345	1	"Death spirit"
348	1	"Tanker"
349	1	"Balgass"
350	1	"Berserker"
351	1	"Splinter Wolf"
352	1	"Iron Rider"
353	1	"Satyros"
354	1	"Blade Hunter"
355	1	"Kentauros"
356	1	"Gigantis"
357	1	"Genocider"
358	1	"Persona"
359	1	"Twin Tale"
360	1	"Dreadfear"
361	1	"Nightmare"
362	1	"Maya Hand"
363	1	"Maya Hand"
364	1	"Maya"
365	1	"Pouch of Blessing"
367	1	"Gateway Machine"
368	1	"Elpis"
369	1	"Osbourne"
370	1	"Jerridon"
371	1	"Leo the Helper"
372	1	"Elite Skull Soldier"
373	1	"Jack Olantern"
374	1	"Santa"
375	1	"Chaos Card Master"
376	1	"Pamela the Supplier"
377	1	"Angela the Supplier"
378	1	"GameMaster"
379	1	"Natasha the Firecracker Merchant"
380	1	"Stone Statue"
381	1	"MU Allies General"
382	1	"Illusion Sorcerer Elder"
383	1	"Alliance Sacred Item Storage"
384	1	"Illusion Castle Sacred Item Storage"
385	1	"Mirage"
386	1	"Illusion Sorcerer Spirit"
387	1	"Illusion Sorcerer Spirit"
388	1	"Illusion Sorcerer Spirit"
389	1	"Illusion Sorcerer Spirit"
390	1	"Illusion Sorcerer Spirit"
391	1	"Illusion Sorcerer Spirit"
392	1	"Illusion Sorcerer Spirit"
393	1	"Illusion Sorcerer Spirit"
394	1	"Illusion Sorcerer Spirit"
395	1	"Illusion Sorcerer Spirit"
396	1	"Illusion Sorcerer Spirit"
397	1	"Illusion Sorcerer Spirit"
398	1	"Illusion Sorcerer Spirit"
399	1	"Illusion Sorcerer Spirit"
400	1	"Illusion Sorcerer Spirit"
401	1	"Illusion Sorcerer Spirit"
402	1	"Illusion Sorcerer Spirit"
403	1	"Illusion Sorcerer Spirit"
404	1	"MU Allies"
405	1	"Illusion Sorcerer"
406	1	"Apostle Devin"
407	1	"Werewolf Quarel"
408	1	"Gatekeeper"
409	1	"Balram (Trainee Soldier)"
410	1	"Death Spirit (Trainee Soldier)"
411	1	"Soram (Trainee Soldier)"
412	1	"Dark Elf (Trainee Soldier)"
413	1	"Lunar Rabbit"
414	1	"Helper Ellen"
415	1	"Silvia"
416	1	"Rhea"
417	1	"Marce"
418	1	"Strange Rabbit"
419	1	"Hideous Rabbit"
420	1	"Werewolf"
421	1	"Polluted Butterfly"
422	1	"Cursed Lich"
423	1	"Totem Golem"
424	1	"Grizzly"
425	1	"Captain Grizzly"
426	1	"Chaos Castle13"
427	1	"Chaos Castle14"
428	1	"Chief Skeleton Warrior"
429	1	"Chief Skeleton Archer"
430	1	"Dark Skull Soldier"
431	1	"Giant Ogre"
432	1	"Red Skeleton Knight"
433	1	"Magic Skeleton"
434	1	"Gigantis"
435	1	"Berserker"
436	1	"Balram (Trainee Soldier)"
437	1	"Soram (Trainee Soldier)"
438	1	"Persona"
439	1	"Dreadfear"
440	1	"Dark Elf"
441	1	"Sapi-Unus"
442	1	"Sapi-Duo"
443	1	"Sapi-Tres"
444	1	"Shadow Pawn"
445	1	"Shadow Knight"
446	1	"Shadow Look"
447	1	"Thunder Napin"
448	1	"Ghost Napin"
449	1	"Blaze Napin"	 
450	1	"Cherry Blossom Spirit"
451	1	"Cherry Blossom Tree"
452	1	"Seed Master"
453	1	"Seed Researcher"
454	1	"Ice Walker"
455	1	"Giant Mammoth"
456	1	"Ice Giant"
457	1	"Coolutin"
458	1	"Iron Knight"
459	1	"Selupan"
460	1	"Spider Eggs"
461	1	"Spider Eggs"
462	1	"Spider Eggs"
463	1	"Fire Flame Ghost"
465	1	"Santa Claus"
466	1	"Cursed Goblin"
467	1	"Snowman"
468	1	"Dasher"
469	1	"Kermit"
470	1	"Little Santa"
471	1	"Cupid"
472	1	"Prancer"
473	1	"Donner"
474	1	"Vixen"
475	1	"Blitzen"
476	1	"Cursed Santa"
477	1	"Transformed Snowman"
478	1	"Delgado"
479	1	"Doorkeeper Titus"
480	1	"Zombie Fighter"
481	1	"Zombie Fighter"
482	1	"Resurrected Gladiator"
483	1	"Resurrected Gladiator"
484	1	"Ash Slaughterer"
485	1	"Ash Slaughterer"
486	1	"Blood Assassin"
487	1	"Cruel Blood Assassin"
488	1	"Cruel Blood Assassin"
489	1	"Burning Lava Giant"
490	1	"Ruthless Lava Giant"
491	1	"Ruthless Lava Giant"
492	1	"Moss"
493	1	"Golden Dark Knight"
494	1	"Golden Devil"
495	1	"Golden Stone Golem"
496	1	"Golden Crust"
497	1	"Golden Satyros"
498	1	"Golden Twin Tail"
499	1	"Golden Iron Knight"
500	1	"Golden Napin"
501	1	"Great Golden Dragon"
502	1	"Golden Rabbit"
503	1	"Transformed Panda"
504	1	"Gaion Kharein"
505	1	"Jerint"
506	1	"Raymond"
507	1	"Erkanne"
508	1	"Destler"
509	1	"Vermont"
510	1	"Kato"
511	1	"Galia"
512	1	"Quartermaster"
513	1	"Combat Instructor"
514	1	"Knight Commander"
515	1	"Grand Wizard"
516	1	"Master Assassin"
517	1	"Cavalry Captain"
518	1	"Shield Bearer"
519	1	"Medic"
520	1	"Knights"
521	1	"Bodyguard"
522	1	"Jerint the Assistant"
523	1	"Trap"
524	1	"Castle Gate 1"
525	1	"Castle Gate 2"
526	1	"Stone Statue 1"
527	1	"Castle Gate 3"
528	1	"Castle Gate 4"
529	1	"Furious Slaughterer"
530	1	"Slaughterer"
531	1	"Ice Walker"
532	1	"Larva"
533	1	"Doppelganger"
534	1	"Doppelganger Elf"
535	1	"Doppelganger Knight"
536	1	"Doppelganger Wizard"
537	1	"Doppelganger Magic Gladiator"
538	1	"Doppelganger Dark Lord"
539	1	"Doppelganger Summoner"
540	1	"Lugard"
541	1	"Interim Reward Chest"
542	1	"Final Reward Chest"
543	1	"Gens Duprian Steward"
544	1	"Gens Vanert Steward"
545	1	"Christine the General Goods Merchant"
546	1	"Jeweler Raul"
547	1	"Market Union Member Julia"
548	1	"Transformed Skeleton"
549	1	"Bloody Orc"
550	1	"Bloody Death Rider"
551	1	"Bloody Golem"
552	1	"Bloody Witch Queen"
553	1	"Berserker Warrior"
554	1	"Kentauros Warrior"
555	1	"Gigantis Warrior"
556	1	"Genocider Warrior"
557	1	"Sapi Queen"
558	1	"Ice Napin"
559	1	"Shadow Master"
560	1	"Sapi Queen"
561	1	"Medusa"
562	1	"Dark Mammoth"
563	1	"Dark Giant"
564	1	"Dark Coolutin"
565	1	"Dark Iron Knight"
566	1	"Mercenary Guild Manager Tercia"
567	1	"Priestess Veina"
568	1	"Wandering Merchant Zyro"
569	1	"Venomous Chain Scorpion"
570	1	"Bone Scorpion"
571	1	"Orcus"
572	1	"Gollock"
573	1	"Crypta"
574	1	"Crypos"
575	1	"Condra"
576	1	"Narcondra"
577	1	"Leina the General Goods Merchant"
578	1	"Weapons Merchant Bolo"
579	1	"David"
end

Everything should works!



No more map like Chaos Castle, Blood Castle loading fail:

You should correct your MapManager to be like mine:

Code:
bool CMapManager::InChaosCastle()
{
	if((this->WorldActive >= WD_18CHAOS_CASTLE && this->WorldActive <= WD_18CHAOS_CASTLE_END)|| this->WorldActive == WD_53CAOSCASTLE_MASTER_LEVEL)
	{
		return true;
	}

	return false; 
}

bool CMapManager::InBloodCastle()
{
	if((this->WorldActive >= WD_11BLOODCASTLE1 && this->WorldActive <= WD_11BLOODCASTLE_END)|| this->WorldActive == WD_52BLOODCASTLE_MASTER_LEVEL)
	{
		return true;
	}

	return false;
}

bool CMapManager::InDevilSquare()
{
	return WD_9DEVILSQUARE == this->WorldActive ? true : false;
}

bool CMapManager::InKalima() 
{ 
	return ((this->WorldActive>=WD_24KALIMA && this->WorldActive<=WD_24KALIMA_END) || (this->WorldActive==WD_24HELLAS_7)); 
}

bool CMapManager::InHiddenHellas() 
{ 

	return this->WorldActive == WD_24HELLAS_7 ? true : false; 
}

bool CMapManager::IsPKField()
{
	return (this->WorldActive == WD_63PK_FIELD) ? true : false;
}

bool CMapManager::IsCursedTemple()
{
	return ( this->WorldActive >= WD_45CURSEDTEMPLE_LV1 && this->WorldActive <= WD_45CURSEDTEMPLE_LV6) ? true : false;
}

bool CMapManager::IsEmpireGuardian1()
{
	return (this->WorldActive==WD_69EMPIREGUARDIAN1) ? true : false;
}

bool CMapManager::IsEmpireGuardian2()
{
	return (this->WorldActive==WD_70EMPIREGUARDIAN2) ? true : false;
}

bool CMapManager::IsEmpireGuardian3()
{
	return (this->WorldActive==WD_71EMPIREGUARDIAN3) ? true : false;
}

bool CMapManager::IsEmpireGuardian4()
{
	if(this->WorldActive == WD_72EMPIREGUARDIAN4 || this->WorldActive == WD_73NEW_LOGIN_SCENE || this->WorldActive == WD_74NEW_CHARACTER_SCENE )
	{
		return true;
	}
	return false;
}

bool CMapManager::IsEmpireGuardian()
{
	if(	this->IsEmpireGuardian1() == false &&
		this->IsEmpireGuardian2() == false && 
		this->IsEmpireGuardian3() == false &&
		this->IsEmpireGuardian4() == false )
	{
		return false;
	}

	return true;
}

bool CMapManager::InBattleCastle () 
{ 
	return this->WorldActive == WD_30BATTLECASTLE ? true : false;
}


const char* CMapManager::GetMapName( int iMap)
{

	if(iMap == WD_34CRYWOLF_1ST)
	{
		return( GlobalText[1851]);
	}
	else if( iMap == WD_33AIDA )
	{
		return( GlobalText[1850]);
	}
	else if( iMap == WD_37KANTURU_1ST )
	{
		return( GlobalText[2177]);
	}
	else if( iMap == WD_38KANTURU_2ND )
	{
		return( GlobalText[2178]);
	}
	else if( iMap == WD_39KANTURU_3RD )
	{
		return( GlobalText[2179]);
	}
	else if( iMap == WD_40AREA_FOR_GM)
	{
		return( GlobalText[2324]);
	}
	else if( iMap == WD_51HOME_6TH_CHAR)
	{
		return( GlobalText[1853]);
	}
	else if(iMap == WD_57ICECITY)
	{
		return( GlobalText[1855]);
	}
	else if(iMap == WD_58ICECITY_BOSS)
	{
		return( GlobalText[1856]);
	}
	
    if (iMap == WD_30BATTLECASTLE)
    {
        return ( GlobalText[669] );
    }
    if ( iMap == WD_31HUNTING_GROUND )
    {
        return ( GlobalText[59] );
    }
    if ((iMap >= WD_18CHAOS_CASTLE && iMap <= WD_18CHAOS_CASTLE_END) || iMap == WD_53CAOSCASTLE_MASTER_LEVEL)
    {
        return ( GlobalText[57] );
    }
    if ((iMap >= WD_24KALIMA && iMap <= WD_24KALIMA_END) || (iMap == WD_24HELLAS_7))
    {
		if (iMap == WD_24HELLAS_7)
			return ( GlobalText[1852] );
        return ( GlobalText[58] );
    }
	if ((iMap >= WD_11BLOODCASTLE1 && iMap <= WD_11BLOODCASTLE_END) || iMap == WD_52BLOODCASTLE_MASTER_LEVEL)
	{
		return ( GlobalText[56] );
	}
	if ( iMap==WD_10HEAVEN )
	{
		return ( GlobalText[55+iMap-WD_10HEAVEN]);
	}
	if ( iMap==32 )
	{
		return ( GlobalText[39]);
	}
	if (SEASON3A::CGM3rdChangeUp::Instance().IsBalgasBarrackMap())
		return GlobalText[1678];
	else if (SEASON3A::CGM3rdChangeUp::Instance().IsBalgasRefugeMap())
		return GlobalText[1679];
	if( this->IsCursedTemple() )
	{
		return ( GlobalText[2369] );
	}
	if( iMap == WD_51HOME_6TH_CHAR )
	{
		return ( GlobalText[1853] );
	}
	if( iMap == WD_56MAP_SWAMP_OF_QUIET )
	{
		return ( GlobalText[1854] );
	}
	if( iMap == WD_62SANTA_TOWN )
	{
		return ( GlobalText[2611] );
	}
	if( iMap == WD_64DUELARENA)
	{
		return ( GlobalText[2703] );
	}
	if( iMap == WD_63PK_FIELD)
	{
		return (GlobalText[2686]);
	}
	if( iMap == WD_65DOPPLEGANGER1)
	{
		return (GlobalText[3057]);
	}
	if( iMap == WD_66DOPPLEGANGER2)
	{
		return (GlobalText[3057]);
	}
	if( iMap == WD_67DOPPLEGANGER3)
	{
		return (GlobalText[3057]);
	}
	if( iMap == WD_68DOPPLEGANGER4)
	{
		return (GlobalText[3057]);
	}
	if( iMap == WD_69EMPIREGUARDIAN1)
	{
		return (GlobalText[2806]);
	}
	if( iMap == WD_70EMPIREGUARDIAN2)
	{
		return (GlobalText[2806]);
	}
	if( iMap == WD_71EMPIREGUARDIAN3)
	{
		return (GlobalText[2806]);
	}
	if( iMap == WD_72EMPIREGUARDIAN4)
	{
		return (GlobalText[2806]);
	}
	if( iMap == WD_79UNITEDMARKETPLACE )
	{
		return (GlobalText[3017]);
	}
	if (iMap == WD_80KARUTAN1 || iMap == WD_81KARUTAN2)
	{
		return (GlobalText[3285]);
	}
	return ( GlobalText[30+iMap] );
}

Fix your header and other source files to this by removing parameters. Have fun!



No more socket bit operation problem

Just find Defined_Global.h and paste:
Code:
#define KJW_FIX_SOCKET_BONUS_BIT_OPERATION



No more EXP crash problem

Open WSClient.cpp, find
Code:
WORD iExp = CharacterAttribute->NextExperince - CharacterAttribute->Experience;

Replace with:

Code:
[B]D[/B]WORD iExp = CharacterAttribute->NextExperince - CharacterAttribute->Experience;



Fix loading item.bmd after enabling ragefighter:

Find (in ITEM_ATTRIBUTE, _struct.h):

Code:
BYTE RequireClass[MAX_CLASS+1];

Replace with:

Code:
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
	BYTE RequireClass[MAX_CLASS];
#else //PBG_ADD_NEWCHAR_MONK_SKILL
	BYTE RequireClass[MAX_CLASS+1];
#endif //PBG_ADD_NEWCHAR_MONK_SKILL

Find (in ITEM_SET_OPTION, _struct.h):

Code:
	BYTE	byRequireClass[MAX_CLASS];

Replace with:

Code:
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
	BYTE byRequireClass[MAX_CLASS];
#else //PBG_ADD_NEWCHAR_MONK_SKILL
	BYTE byRequireClass[MAX_CLASS + 1];
#endif //PBG_ADD_NEWCHAR_MONK_SKILL




No more merchant ragefighter items crash:

In tagITEM, _struct.h:

Code:
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
	WORD  Special     [MAX_ITEM_SPECIAL];
#else //PBG_ADD_NEWCHAR_MONK_SKILL
	BYTE  Special     [MAX_ITEM_SPECIAL];
#endif //PBG_ADD_NEWCHAR_MONK_SKILL

Replace with:

Code:
	WORD  Special     [MAX_ITEM_SPECIAL];

In ZzzInventory.cpp:

Code:
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
void GetSpecialOptionText ( int Type, char* Text, WORD Option, BYTE Value, int iMana )
#else //PBG_ADD_NEWCHAR_MONK_SKILL
void GetSpecialOptionText ( int Type, char* Text, WORD Option, BYTE Value, int iMana )
#endif //PBG_ADD_NEWCHAR_MONK_SKILL

Replace with

Code:
void GetSpecialOptionText ( int Type, char* Text, WORD Option, BYTE Value, int iMana )

In ZzzInventory.h

Code:
#ifdef PBG_ADD_NEWCHAR_MONK_SKILL
void GetSpecialOptionText ( int Type, char* Text, WORD Option, BYTE Value, int iMana );
#else //PBG_ADD_NEWCHAR_MONK_SKILL
void GetSpecialOptionText ( int Type, char* Text, BYTE Option, BYTE Value, int iMana );
#endif //PBG_ADD_NEWCHAR_MONK_SKILL

Replace with:

Code:
void GetSpecialOptionText ( int Type, char* Text, WORD Option, BYTE Value, int iMana );



Fix for close button / disconnect:

Code:
void CMsgWin::ManageOKClick()
{
	CUIMng& rUIMng = CUIMng::Instance();
	rUIMng.HideWin(this);

	switch (m_nMsgCode)
	{
	case MESSAGE_SERVER_LOST:
	case MESSAGE_VERSION:
	case RECEIVE_LOG_IN_FAIL_ERROR:
	case RECEIVE_LOG_IN_FAIL_VERSION:

Replace with:

Code:
void CMsgWin::ManageOKClick()
{
	CUIMng& rUIMng = CUIMng::Instance();
	rUIMng.HideWin(this);

	switch (m_nMsgCode)
	{
	case MESSAGE_SERVER_LOST:
	case MESSAGE_VERSION:
	case RECEIVE_LOG_IN_FAIL_ERROR:
	case RECEIVE_LOG_IN_FAIL_VERSION:
		::PostMessage(g_hWnd, WM_CLOSE, 0, 0);
		break;



Known bugs:

- Item names disapears in merchant window
- Cashshop not working for me

- I cant open personal store
void OpenPersonalShop(int iType); have no sourcecode

Fun fact:
- Louis emulator using my custom - https://forum.ragezone.com/f197/release-x-team-muemu-custom-1125847/
 
Last edited:
Newbie Spellweaver
Joined
Apr 24, 2015
Messages
31
Reaction score
7
Thx For your Fixes.

void OpenPersonalShop(int iType); // Is useless

Fix Personal Shop

Update Inventory Size and all will be fine
#define MAX_INVENTORY (COLUMN_INVENTORY*ROW_INVENTORY)+((COLUMN_INVENTORY*2)*ROW_INVENTORY)
 
Junior Spellweaver
Joined
Aug 1, 2011
Messages
126
Reaction score
90
#define MAX_INVENTORY (COLUMN_INVENTORY*ROW_INVENTORY)+((COLUMN_INVENTORY*2)*ROW_INVENTORY)

Not working. I cant even put item into personal shop. Inventory is 8*8. You trying tell me that should be increased of personal shop size? + (4*8)? I dont think it will work.

SendRequestCreatePersonalShop(name) is probably sending right packet

Code:
struct PMSG_PSHOP_OPEN_RECV
{
	PSBMSG_HEAD header; // C1:3F:02
	char text[36];
};

I dont know.
 
Last edited:
Newbie Spellweaver
Joined
Jul 13, 2019
Messages
87
Reaction score
37
I tried the original source, but it still has the item options display error and the personal store opening error :(
 
Skilled Illusionist
Joined
Jun 22, 2017
Messages
363
Reaction score
561
Not working. I cant even put item into personal shop. Inventory is 8*8. You trying tell me that should be increased of personal shop size? + (4*8)? I dont think it will work.

SendRequestCreatePersonalShop(name) is probably sending right packet

Code:
struct PMSG_PSHOP_OPEN_RECV
{
    PSBMSG_HEAD header; // C1:3F:02
    char text[36];
};

I dont know.

max_inventory = inv_col*inv_row+expanded_inv_col*expanded_inv_row*max_expanded_inv(4)
pshop start = max_equipment+max_inventory
 
Joined
Jul 31, 2012
Messages
490
Reaction score
93
The camera works fine, but I can't find the monster display.
Monsters will show a maximum of 15 forward and backward coordinates.
 
Back
Top