V21 WorldDialog doesn't contain the code for the NPC that teleports you into the Contamined Trails dungeon.
More infos about this dungeon and how to enter it .
Here's the fix for this! (Note that in the server source, the define for this is SCRIPT_ENTER_INSTANCEDUNGEON).
Hope this kind of release will encourage you to use V21Quote:
+ in WorldDialog/FunctionsInfo.h
Find
Add right afterCode:typedef int (WINAPI *PFAddGPPoint)( NPCDIALOG_INFO* pInfo , int nAddGPPoint );
FindCode:typedef int (WINAPI* PFEnterInstanceDungeon)(NPCDIALOG_INFO* pInfo, DWORD dwTeleWorld, int nX, int nY, int nZ); typedef int (WINAPI* PFChkPartyLowLevel)(NPCDIALOG_INFO* pInfo, int nLv);
Add right afterCode:PFAddGPPoint AddGPPoint;
+ in WorldDialog/NpcScript.cppCode:PFEnterInstanceDungeon EnterInstanceDungeon; PFChkPartyLowLevel ChkPartyLowLevel;
Find the g_nKeys array, go at the end, you should have something like this
Add right after 866,Code:42, 43, 865, 866, };
FindCode:1812,
Add right afterCode:if (::strcmp("AddGPPoint", szFunc) == 0) { /*kNPCScript.*/AddGPPoint(args.at(0)); return 0; }
+ in WorldDialog/NpcScript.hCode:if (::strcmp("EnterInstanceDungeon", szFunc) == 0) { return EnterInstanceDungeon(static_cast<DWORD>(args.at(0)), args.at(1), args.at(2), args.at(3)); } if (::strcmp("ChkPartyLowLevel", szFunc) == 0) { return ChkPartyLowLevel(args.at(0)); }
Find
Add right afterCode:void AddGPPoint( int nAddGPPoint );
+ in WorldDialog/NpcScriptHelper.cppCode:int EnterInstanceDungeon(DWORD dwTeleWorld, int nX, int nY, int nZ); int ChkPartyLowLevel(int nLvl);
Find
Add right afterCode:void CNpcScript::AddGPPoint( int nAddGPPoint ) { if( m_pInfo != NULL ) { Functions* pTable = m_pInfo->GetFunctions(); if( pTable != NULL ) { pTable->AddGPPoint( m_pInfo , nAddGPPoint ); } } }
Code:int CNpcScript::EnterInstanceDungeon(DWORD dwTeleWorld, int nX, int nY, int nZ) { if (m_pInfo != NULL) { Functions* pTable = m_pInfo->GetFunctions(); if (pTable != NULL) { return pTable->EnterInstanceDungeon(m_pInfo, dwTeleWorld, nX, nY, nZ); } } return 0; } int CNpcScript::ChkPartyLowLevel(int nLvl) { if (m_pInfo != NULL) { Functions* pTable = m_pInfo->GetFunctions(); if (pTable != NULL) { return pTable->ChkPartyLowLevel(m_pInfo, nLvl); } } return 0; }
Ssam.