Most visitors online was 12720 , on 2 May 2024
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature currently requires accessing the site using the built-in Safari browser.
I felt I should contribute at least once in this thread.
File: WndWorld.cpp in ...\_Interface\ folder
Subject: Fixed and updated to v15 standards (With Hero/Master) to see or not see someone's levels whom is 19 levels above you.
How: Highlight lines 2795 to 2820, or from #if __VER >= 8 // __CSC_VER8_1 to #endif //__CSC_VER8_1, then paste the following information.
Spoiler:
Code:
#if __VER >= 8 // __CSC_VER8_1
// 8Â÷ GMÀÏ °æ¿ì¸¦ Á¦¿ÜÇÏ°í »ó´ë¹æÀÇ ·¹º§À» º¼¼ö ¾øÀ½
if( g_pPlayer->IsAuthHigher( AUTH_GAMEMASTER ) == TRUE )
if( pMover->IsHero() )
sprintf( szText, "%s <Lvl %d-H>", pMover->GetName(), pMover->GetLevel() );
else if( pMover->IsMaster() )
sprintf( szText, "%s <Lvl %d-M>", pMover->GetName(), pMover->GetLevel() );
else
sprintf( szText, "%s <Lvl %d>", pMover->GetName(), pMover->GetLevel() );
else if( g_pPlayer->IsAuthHigher( AUTH_GAMEMASTER ) == FALSE && g_pPlayer->GetLevel() + 20 > pMover->GetLevel() )
if( pMover->IsHero() && g_pPlayer->GetLevel() + 20 > pMover->GetLevel())
sprintf( szText, "%s <Lvl %d-H>", pMover->GetName(), pMover->GetLevel() );
else if( pMover->IsMaster() && g_pPlayer->GetLevel() + 20 > pMover->GetLevel())
sprintf( szText, "%s <Lvl %d-M>", pMover->GetName(), pMover->GetLevel() );
else
sprintf( szText, "%s <Lvl %d>", pMover->GetName(), pMover->GetLevel() );
else
sprintf( szText, "%s <Lvl \?\?>", pMover->GetName() );
#endif //__CSC_VER8_1
Before someone starts flaming me on "If you uncomment ____ and change AUTH_GAMEMASTER to AUTH_GENERAL" Well if you just simply put AUTH_GENERAL then your gms won't know the levels of people. Also, Masters could view Hero levels, which would defeat the purpose. This is properly fixing it so everything is current and working.
#if __VER >= 8 // __CSC_VER8_1
// 8Â÷ GMÀÏ °æ¿ì¸¦ Á¦¿ÜÇÏ°í »ó´ë¹æÀÇ ·¹º§À» º¼¼ö ¾øÀ½
if( g_pPlayer->IsAuthHigher( AUTH_GAMEMASTER ) == TRUE )
if( pMover->IsHero() )
sprintf( szText, "%s <Lvl %d-H>", pMover->GetName(), pMover->GetLevel() );
else if( pMover->IsMaster() )
sprintf( szText, "%s <Lvl %d-M>", pMover->GetName(), pMover->GetLevel() );
else
sprintf( szText, "%s <Lvl %d>", pMover->GetName(), pMover->GetLevel() );
else if( g_pPlayer->IsAuthHigher( AUTH_GAMEMASTER ) == FALSE && g_pPlayer->GetLevel() + 20 > pMover->GetLevel() )
if( pMover->IsHero() && g_pPlayer->GetLevel() + 20 > pMover->GetLevel())
sprintf( szText, "%s <Lvl %d-H>", pMover->GetName(), pMover->GetLevel() );
else if( pMover->IsMaster() && g_pPlayer->GetLevel() + 20 > pMover->GetLevel())
sprintf( szText, "%s <Lvl %d-M>", pMover->GetName(), pMover->GetLevel() );
else
sprintf( szText, "%s <Lvl %d>", pMover->GetName(), pMover->GetLevel() );
else
sprintf( szText, "%s <Lvl \?\?>", pMover->GetName() );
#endif //__CSC_VER8_1
#else*/
// ¸Ê ÀÎÁõ ½ÇÆÐ Á¢¼ÓÀ» ²÷¾î¹ö·Á¾ß ÇÑ´Ù.
#if __VER >= 15
int x = int( pUser->GetPos().x ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU );
int z = int( pUser->GetPos().z ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU );
#else // __VER >= 15
int x = int( pUser->GetPos().x ) / ( MAP_SIZE * MPU );
int z = int( pUser->GetPos().z ) / ( MAP_SIZE * MPU );
#endif // __VER >= 15
char szLandFile[MAX_PATH] = {0,};
if( pUser->GetWorld() )
{
strncpy( szLandFile, pUser->GetWorld()->m_szFileName, strlen( pUser->GetWorld()->m_szFileName ) - 4 );
}
Error( "Invalid Map Key - [User : %s, %07d], [Land : %s%02d-%02d]", pUser->GetName(), pUser->m_idPlayer, szLandFile, x, z );
// mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´
if( ::GetLanguage() != LANG_GER )
{
g_DPSrvr.QueryDestroyPlayer( pUser->m_Snapshot.dpidCache, pUser->m_Snapshot.dpidUser, pUser->m_dwSerial, pUser->m_idPlayer );
}
// mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´
}
#endif // __WORLDSERVER
#endif // __MAP_SECURITY
#if __VER == 8
int x = int( pUser->GetPos().x ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU );
int z = int( pUser->GetPos().z ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU );
#else // __VER == 8
int x = int( pUser->GetPos().x ) / ( MAP_SIZE * MPU );
int z = int( pUser->GetPos().z ) / ( MAP_SIZE * MPU );
#endif // __VER == 8
char szLandFile[MAX_PATH] = {0,};
if( pUser->GetWorld() )
{
strncpy( szLandFile, pUser->GetWorld()->m_szFileName, strlen( pUser->GetWorld()->m_szFileName ) - 4 );
}
// mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´
if( ::GetLanguage() != LANG_GER )
{
}
// mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´
}
#endif // __WORLDSERVER
#endif // __MAP_SECURITY
Just as a tip to anyone that may run across the same problem as me, Once I compiled the source I could login on already higher level existing characters however for some odd reason after compiling the source the database wasn't entering a value for szPet in the BANK_EXT_TBL hence the default value for that table is set to 0.00, after changing the default value to $ it worked properly. This problem maed it so that when making a new character or trying to login to one with the value of 0.00 in that column, it would sit on the character selection screen the disconnect you and tell you it couldn't connect.
Disabling the Mapkey:
1) Open worldmng.cpp
2) Where it says:
and change it toCode:// ¸Ê ÀÎÁõ ½ÇÆÐ Á¢¼ÓÀ» ²÷¾î¹ö·Á¾ß ÇÑ´Ù. #if __VER >= 15 int x = int( pUser->GetPos().x ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU ); int z = int( pUser->GetPos().z ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU ); #else // __VER >= 15 int x = int( pUser->GetPos().x ) / ( MAP_SIZE * MPU ); int z = int( pUser->GetPos().z ) / ( MAP_SIZE * MPU ); #endif // __VER >= 15 char szLandFile[MAX_PATH] = {0,}; if( pUser->GetWorld() ) { strncpy( szLandFile, pUser->GetWorld()->m_szFileName, strlen( pUser->GetWorld()->m_szFileName ) - 4 ); } Error( "Invalid Map Key - [User : %s, %07d], [Land : %s%02d-%02d]", pUser->GetName(), pUser->m_idPlayer, szLandFile, x, z ); // mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´ if( ::GetLanguage() != LANG_GER ) { g_DPSrvr.QueryDestroyPlayer( pUser->m_Snapshot.dpidCache, pUser->m_Snapshot.dpidUser, pUser->m_dwSerial, pUser->m_idPlayer ); } // mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´ } #endif // __WORLDSERVER #endif // __MAP_SECURITY
Code:#if __VER == 8 int x = int( pUser->GetPos().x ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU ); int z = int( pUser->GetPos().z ) / ( MAP_SIZE * pUser->GetWorld()->m_iMPU ); #else // __VER == 8 int x = int( pUser->GetPos().x ) / ( MAP_SIZE * MPU ); int z = int( pUser->GetPos().z ) / ( MAP_SIZE * MPU ); #endif // __VER == 8 char szLandFile[MAX_PATH] = {0,}; if( pUser->GetWorld() ) { strncpy( szLandFile, pUser->GetWorld()->m_szFileName, strlen( pUser->GetWorld()->m_szFileName ) - 4 ); } // mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´ if( ::GetLanguage() != LANG_GER ) { } // mulcom BEGIN100330 ¸Êº¯Á¶ È®ÀÎ µ¶ÀÏÀº Á¦¿Ü ½ÃÅ´ } #endif // __WORLDSERVER #endif // __MAP_SECURITY
3) Compile
Yeah it most likely is out of date. I haven't really done anything to it in a while. I just started playing with the source.Your database may be out of date. The v15 one I've used(before source) had no issues(defaulted to $ probably). Also the map check is there for a reason. It would be a better idea to further secure the map rather than removing security features.
Your database may be out of date. The v15 one I've used(before source) had no issues(defaulted to $ probably). Also the map check is there for a reason. It would be a better idea to further secure the map rather than removing security features.
WORLD SERVER:
--- README ---
ITS NOT TESTED ! BUT IT MUST STILL WORK
(C) CoReX & Sedrika
NO_MEMBER_TRADE ---> No Users can Trade
NO_TEAM_TRADE ---> No Helper's GM's or Operator's can trade
NO_ADMIN_TRADE ---> No Admins can Trade
--- BUILD LOG ---
Build: 1 succeeded, 0 failed, 0 skipped
--- WorldServer.ini ---
NO_MEMBER_TRADE
NO_TEAM_TRADE
NO_ADMIN_TRADE
--- VersionCommon.h ---
#define __NO_TRADE
--- DpSrvr.cpp ---
void CDPSrvr::OnTrade( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
OBJID objidTrader;
ar >> objidTrader;
CWorld* pWorld;
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) && ( pWorld = pUser->GetWorld() ) && pUser->m_vtInfo.GetOther() == NULL )
{
CMover* pTrader = prj.GetMover( objidTrader );
if( IsValidObj( pTrader ) && pTrader->GetWorld() && pTrader->m_vtInfo.GetOther() == NULL )
{
if( pTrader->IsPlayer() ) // pc
{
#ifdef __NO_TRADE
if(g_eLocal.GetState(EVE_NO_MEMBER_TRADE))
{
if( pUser->m_dwAuthorization == AUTH_GENERAL || pTrader->m_dwAuthorization == AUTH_GENERAL)
{
pUser->AddText("Trade wurde abgeschaltet!");
return;
}
else if( pUser->m_dwAuthorization == AUTH_OBSERVER || pTrader->m_dwAuthorization == AUTH_OBSERVER)
{
pUser->AddText("Trade wurde abgeschaltet!");
return;
}
else if( pUser->m_dwAuthorization == AUTH_LOGCHATTING || pTrader->m_dwAuthorization == AUTH_LOGCHATTING)
{
pUser->AddText("Trade wurde abgeschaltet!");
return;
}
else if( pUser->m_dwAuthorization == AUTH_JOURNALIST || pTrader->m_dwAuthorization == AUTH_JOURNALIST)
{
pUser->AddText("Trade wurde abgeschaltet!");
return;
}
}
if(g_eLocal.GetState(EVE_NO_TEAM_TRADE))
{
if( pUser->m_dwAuthorization == AUTH_HELPER || pTrader->m_dwAuthorization == AUTH_HELPER)
{
pUser->AddText("Gamemasters or Administrators can't trade!");
return;
}
else if( pUser->m_dwAuthorization == AUTH_GAMEMASTER || pTrader->m_dwAuthorization == AUTH_GAMEMASTER)
{
pUser->AddText("Gamemasters or Administrators can't trade!");
return;
}
else if( pUser->m_dwAuthorization == AUTH_GAMEMASTER2 || pTrader->m_dwAuthorization == AUTH_GAMEMASTER2)
{
pUser->AddText("Gamemasters or Administrators can't trade!");
return;
}
else if( pUser->m_dwAuthorization == AUTH_GAMEMASTER3 || pTrader->m_dwAuthorization == AUTH_GAMEMASTER3)
{
pUser->AddText("Gamemasters or Administrators can't trade!");
return;
}
else if( pUser->m_dwAuthorization == AUTH_OPERATOR || pTrader->m_dwAuthorization == AUTH_OPERATOR)
{
pUser->AddText("Gamemasters or Administrators can't trade!");
return;
}
}
if(g_eLocal.GetState(EVE_NO_ADMIN_TRADE))
{
if( pUser->m_dwAuthorization == AUTH_ADMINISTRATOR || pTrader->m_dwAuthorization == AUTH_ADMINISTRATOR )
{
pUser->AddText("Administrators can't trade!");
return;
}
}
#endif
#if __VER >= 8 // 8Â÷ µà¾ó 061226 ma
if( 0 < pUser->m_nDuel || 0 < pTrader->m_nDuel )
{
return;
}
#endif // __VER >= 8 // 8Â÷ µà¾ó 061226 ma
//°³ÀλóÁ¡ Áß¿¡´Â °Å·¡ ºÒ°¡
if( pUser->m_vtInfo.VendorIsVendor() || pUser->m_vtInfo.IsVendorOpen() ||
pTrader->m_vtInfo.VendorIsVendor() || pTrader->m_vtInfo.IsVendorOpen() )
{
return; //
}
#ifdef __S_SERVER_UNIFY
if( pUser->m_bAllAction == FALSE || ((CUser*)pTrader)->m_bAllAction == FALSE )
return;
#endif // __S_SERVER_UNIFY
if( pUser->m_bBank || pTrader->m_bBank )
{
pUser->AddDefinedText( TID_GAME_TRADELIMITPC, "" );
return; //
}
if( pUser->m_bGuildBank || pTrader->m_bGuildBank )
{
pUser->AddDefinedText( TID_GAME_TRADELIMITPC, "" );
return; //
}
pUser->m_vtInfo.SetOther( pTrader );
pTrader->m_vtInfo.SetOther( pUser );
pUser->AddTrade( (CUser*)pTrader, pUser->m_idPlayer );
( (CUser*)pTrader )->AddTrade( pUser, pUser->m_idPlayer );
}
}
}
}
--- WorldServer.cpp ---
BOOL Script( LPCSTR lpszFileName )
{
g_eLocal.SetState( EVE_RESPAWN, 1 );
CScanner s;
if( s.Load( lpszFileName ) == FALSE)
{
Error("Fail to open file - %s", lpszFileName );
return FALSE;
}
s.GetToken();
while( s.tok != FINISHED )
{
if( s.Token == "ResourceFolder" )
{
s.GetToken();
if( !SetCurrentDirectory( s.Token ) )
{
Error( "Folder not found, %s", s.Token );
return FALSE;
}
}
else if( s.Token == "Key" )
{
g_uKey = (DWORD)s.GetNumber();
#ifdef __S8_SERVER_PORT
g_uIdofMulti = g_uKey % 100;
#else // __S8_SERVER_PORT
g_uIdofMulti = g_uKey / 100;
#endif // __S8_SERVER_PORT
}
else if( s.Token == "Core" )
{
s.GetToken();
strcpy( g_szCoreAddr, s.Token );
}
else if( s.Token == "DB" )
{
s.GetToken();
strcpy( g_szDBAddr, s.Token );
}
else if( s.Token == "Account" )
{
s.GetToken();
/*
#ifdef __GIFTBOX0213
lstrcpy( s_szAccountAddr, s.Token );
#endif // __GIFTBOX0213
*/
}
else if( s.Token == "Heartbeat" )
{
s.GetToken();
strcpy( g_sHeartbeat, s.Token );
}
else if( s.Token == "18" )
{
g_eLocal.SetState( EVE_18, 1 ); // 18¼¼ ¼¹ö
}
else if( s.Token == "PK" )
{
g_eLocal.SetState( EVE_PK, 1 );
}
else if( s.Token == "PKCOST" )
{
g_eLocal.SetState( EVE_PKCOST, 1 );
}
else if( s.Token == "STEAL" )
{
g_eLocal.SetState( EVE_STEAL, 1 );
}
else if (s.Token == "GUILDBANK")
{
g_eLocal.SetState( ENABLE_GUILD_INVENTORY, 1 );
}
else if( s.Token == "GUILDWAR" )
{
g_eLocal.SetState( EVE_GUILDWAR, 1 );
}
else if( s.Token == "DROPITEM_REMOVE" )
{
g_eLocal.SetState( EVE_DROPITEMREMOVE, 1 );
}
else if( s.Token == "SCHOOL" )
{
//g_eLocal.SetState( EVE_SCHOOL, 1 );
}
else if( s.Token == "GUILDCOMBAT")
{
g_eLocal.SetState( EVE_GUILDCOMBAT, 1 );
}
else if( s.Token == "WORMON" )
{
g_eLocal.SetState( EVE_WORMON, 1 );
}
else if( s.Token == "respawn" )
{
g_eLocal.SetState( EVE_RESPAWN, (BYTE)s.GetNumber() );
}
#ifdef __S_RECOMMEND_EVE
else if( s.Token == "RECOMMEND" )
{
g_eLocal.SetState( EVE_RECOMMEND, 1 );
}
#endif // __S_RECOMMEND_EVE
#if __VER >= 11 // __GUILD_COMBAT_1TO1
else if( s.Token == "GUILDCOMBAT1TO1" )
{
g_eLocal.SetState( EVE_GUILDCOMBAT1TO1, 1 );
}
#endif // __GUILD_COMBAT_1TO1
#ifdef __JEFF_11_4
else if( s.Token == "ARENA" )
{
g_eLocal.SetState( EVE_ARENA, 1 );
}
#endif // __JEFF_11_4
#if __VER >= 12 // __SECRET_ROOM
else if( s.Token == "SECRETROOM" )
{
g_eLocal.SetState( EVE_SECRETROOM, 1 );
}
#endif // __SECRET_ROOM
#if __VER >= 13 // __RAINBOW_RACE
else if( s.Token == "RAINBOWRACE" )
{
g_eLocal.SetState( EVE_RAINBOWRACE, 1 );
}
#endif // __RAINBOW_RACE
#ifdef __NO_TRADE
else if ( s.Token == "NO_MEMBER_TRADE")
{
g_eLocal.SetState( EVE_NO_MEMBER_TRADE, 1 );
}
else if ( s.Token == "NO_TEAM_TRADE")
{
g_eLocal.SetState( EVE_NO_TEAM_TRADE, 1 );
}
else if ( s.Token == "NO_ADMIN_TRADE")
{
g_eLocal.SetState( EVE_NO_ADMIN_TRADE, 1 );
}
#endif
s.GetToken();
}
return TRUE;
}
--- flyffevent.h ---
enum
{
EVE_0401A, EVE_18, ENABLE_GUILD_INVENTORY,
EVE_GUILDWAR,
EVE_SCHOOL, EVE_SCHOOL_BATTLE,
EVE_NOFLYMONSTER, // ºñÇà ¸ó½ºÅÍ Á¦°Å
EVE_NODARKON, // ´ÙÄÜ Á¦°Å
EVE_NOGUILD, // ±æµå Á¦°Å
EVE_WORMON,
EVE_RESPAWN,
EVE_PK,
EVE_PKCOST,
EVE_STEAL,
EVE_EVENT0913,
EVE_GUILDCOMBAT,
EVE_DROPITEMREMOVE,
EVE_EVENT1206,
EVE_EVENT1219,
EVE_EVENT0127,
EVE_EVENT0214,
#ifdef __S_RECOMMEND_EVE
EVE_RECOMMEND,
#endif // __S_RECOMMEND_EVE
#if __VER >= 11 // __GUILD_COMBAT_1TO1
EVE_GUILDCOMBAT1TO1,
#endif // __GUILD_COMBAT_1TO1
#ifdef __JEFF_11_4
EVE_ARENA,
#endif // __JEFF_11_4
EVE_SECRETROOM, // 12Â÷ ºñ¹ÐÀÇ ¹æ
EVE_RAINBOWRACE,
#ifdef __NO_TRADE
EVE_NO_MEMBER_TRADE,
EVE_NO_TEAM_TRADE,
EVE_NO_ADMIN_TRADE,
#endif
};
sorry 4 my bad english...
Change Bow DMG or put it in probjob.inc
open moverattack.cpp
and search for
then u see some of JOB_PROP..Code:CMover::GetJobPropFactor
then you have the red text to add
then search for:Code:case JOB_PROP_SWD: return pProperty->fMeleeSWD; case JOB_PROP_AXE: return pProperty->fMeleeAXE; case JOB_PROP_STAFF: return pProperty->fMeleeSTAFF; case JOB_PROP_STICK: return pProperty->fMeleeSTICK; case JOB_PROP_KNUCKLE: return pProperty->fMeleeKNUCKLE; case JOB_PROP_WAND: return pProperty->fMagicWAND; case JOB_PROP_YOYO: return pProperty->fMeleeYOYO; [COLOR="Red"] case JOB_PROP_BOW: return pProperty->fMeleeBOW;[/COLOR] case JOB_PROP_BLOCKING: return pProperty->fBlocking; case JOB_PROP_CRITICAL: return pProperty->fCritical;
Code:nATK = (int)( (((GetDex()-14)*4.0f + (GetLevel()*1.3f) + (GetStr()*0.2f)) * 0.7f) );
and u find:
Code:case WT_RANGE_BOW: nATK = (int)( (((GetDex()-14)*4.0f + (GetLevel()*1.3f) + (GetStr()*0.2f)) * 0.7f) ); break;
to push the bow dmg u only must change 0.7f..
to add the Bow dmg to propjob.inc u must change to this:
Code:case WT_RANGE_BOW: nATK = (int)( float(( GetDex() - 14 ) * GetJobPropFactor(JOB_PROP_BOW)) + (float(GetLevel() * 0.7f)) ); break;
then open ProjectCmn.h
and search for
u will find this:Code:enum JOB_PROP_TYPE
then you have the red text to addCode:// 직업에 따른 factor ENUM enum JOB_PROP_TYPE { JOB_PROP_SWD, JOB_PROP_AXE, JOB_PROP_STAFF, JOB_PROP_STICK, JOB_PROP_KNUCKLE, JOB_PROP_WAND, JOB_PROP_BLOCKING, [COLOR="Red"] JOB_PROP_BOW,[/COLOR] JOB_PROP_YOYO, JOB_PROP_CRITICAL, };
then search in ProjectCmn.h for
u will find this:Code:fMeleeYOYO;
then you have the red text to add....Code:// 직업에 따른 프로퍼티 ( propJob.inc에서 읽어들임 ) struct JobProp { float fAttackSpeed; //공속 float fFactorMaxHP; //최대 HP 계산에 사용되는 factor float fFactorMaxMP; //최대 MP 계산에 사용되는 factor float fFactorMaxFP; //최대 FP 계산에 사용되는 factor float fFactorDef; //물리 방어력 계산에 사용되는 factor float fFactorHPRecovery; //HP회복 factor float fFactorMPRecovery; //MP회복 factor float fFactorFPRecovery; //FP회복 factor float fMeleeSWD; //WT_MELEE_SWD의 ATK factor float fMeleeAXE; //WT_MELEE_AXE의 ATK factor float fMeleeSTAFF; //WT_MELEE_STAFF의 ATK factor float fMeleeSTICK; //WT_MELEE_STICK의 ATK factor float fMeleeKNUCKLE; //WT_MELEE_KNUCKLE의 ATK factor float fMagicWAND; //WT_MAGIC_WAND의 ATK factor float fBlocking; //블록킹 factor float fMeleeYOYO; //요요의 ATK factor float fCritical; //크리티컬 처리 [COLOR="Red"] float fMeleeBOW;[/COLOR] };
then open project.cpp
and search for
u will find this:Code:fMeleeYOYO
then you have the red text to add....Code:JobProp* pProperty = &m_aPropJob[nJob]; pProperty->fAttackSpeed = scanner.GetFloat(); pProperty->fFactorMaxHP = scanner.GetFloat(); pProperty->fFactorMaxMP = scanner.GetFloat(); pProperty->fFactorMaxFP = scanner.GetFloat(); pProperty->fFactorDef = scanner.GetFloat(); pProperty->fFactorHPRecovery = scanner.GetFloat(); pProperty->fFactorMPRecovery = scanner.GetFloat(); pProperty->fFactorFPRecovery = scanner.GetFloat(); pProperty->fMeleeSWD = scanner.GetFloat(); pProperty->fMeleeAXE = scanner.GetFloat(); pProperty->fMeleeSTAFF = scanner.GetFloat(); pProperty->fMeleeSTICK = scanner.GetFloat(); pProperty->fMeleeKNUCKLE = scanner.GetFloat(); pProperty->fMagicWAND = scanner.GetFloat(); pProperty->fBlocking = scanner.GetFloat(); pProperty->fMeleeYOYO = scanner.GetFloat(); pProperty->fCritical = scanner.GetFloat(); [COLOR="Red"]pProperty->fMeleeBOW = scanner.GetFloat();[/COLOR]
last part of this guide...
open propjob.inc
and add:
Code:BOW 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0
Cancel Awakening Window...
or if u wanna delete the cancel awakening window
open Dpsrvr.cpp (worldserver project)
and search for
u will find this here:Code:#endif //__PROTECT_AWAKE
if you want to delete the window and want text to appear then change to:Code:pUser->AddDiagText( prj.GetText( nOk ) );
Okay if u have problems pm meCode:pUser->AddText("Awakening removed");
//edit my postbox work now
// Á÷¾÷¿¡ µû¸¥ property¸¦ ¼³Á¤ÇÏ´Â ÆÄÀÏ
// °ø¼Ó MaxHP°ü·Ã MaxMP°ü·Ã MaxFP°ü·Ã ¹°¸®¹æ¾î·Â°ü·Ã hpȸº¹·ü°ü·Ã mpȸº¹·ü°ü·Ã fpȸº¹·ü°ü·Ã SWD AXE STAFF STICK KNUCKLE WAND BLOCKING YOYO CRITICAL BOW
JOB_VAGRANT 75.0 0.9 0.3 0.3 1.0 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0
JOB_MERCENARY 80.0 1.5 0.5 0.7 1.35 1.6 0.5 1.0 4.5 5.5 0.8 3.0 5.0 6.0 0.8 4.2 1.0 5.0
JOB_ACROBAT 75.0 1.4 0.5 0.5 1.4 1.7 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.5 4.2 1.0 5.0
JOB_ASSIST 70.0 1.4 1.3 0.6 1.2 1.6 0.5 1.0 4.5 5.5 0.8 3.0 5.0 6.0 0.5 4.2 1.0 5.0
JOB_MAGICIAN 65.0 1.4 1.7 0.3 1.2 1.5 1.75 0.6 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0
JOB_PUPPETEER 75.0 1.6 0.5 0.5 1.2 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0
JOB_KNIGHT 60.0 2.0 0.6 0.9 1.8 2.1 0.5 1.4 4.5 5.5 0.8 3.0 5.0 6.0 1.0 4.2 1.0 5.0
JOB_BLADE 90.0 1.6 0.6 0.8 1.5 1.7 0.5 1.2 4.5 5.5 0.8 3.0 5.0 6.0 1.5 4.2 1.0 5.0
JOB_JESTER 85.0 1.6 0.5 0.7 1.6 2.0 0.7 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 4.0 5.0
JOB_RANGER 75.0 1.6 0.5 0.6 1.5 1.8 1.3 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
JOB_RINGMASTER 70.0 1.6 1.8 0.4 1.2 2.3 1.9 1.1 4.5 5.5 0.8 3.0 5.0 6.0 0.6 4.2 1.0 5.0
JOB_BILLPOSTER 85.0 1.8 1.0 0.7 1.7 1.9 1.6 1.3 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 1.0 5.0
JOB_PSYCHIKEEPER 70.0 1.5 2.0 0.4 1.3 1.2 1.9 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
JOB_ELEMENTOR 70.0 1.5 2.0 0.4 1.3 1.2 2.0 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
JOB_GATEKEEPER 75.0 0.7 1.0 0.5 1.3 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0
JOB_DOPPLER 75.0 0.7 0.5 0.5 1.3 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0
JOB_KNIGHT_MASTER 60.0 2.0 0.6 0.9 1.8 2.1 0.5 1.4 4.5 5.5 0.8 3.0 5.0 6.0 1.0 4.2 1.0 5.0
JOB_BLADE_MASTER 90.0 1.6 0.6 0.8 1.5 1.7 0.5 1.2 4.5 5.5 0.8 3.0 5.0 6.0 1.5 4.2 1.0 5.0
JOB_JESTER_MASTER 85.0 1.6 0.5 0.7 1.6 2.0 0.7 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 4.0 5.0
JOB_RANGER_MASTER 75.0 1.6 0.5 0.6 1.5 1.8 1.3 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
JOB_RINGMASTER_MASTER 70.0 1.6 1.8 0.4 1.2 2.3 1.9 1.1 4.5 5.5 0.8 3.0 5.0 6.0 0.6 4.2 1.0 5.0
JOB_BILLPOSTER_MASTER 85.0 1.8 1.0 0.7 1.7 1.9 1.6 1.3 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 1.0 5.0
JOB_PSYCHIKEEPER_MASTER 70.0 1.5 2.0 0.4 1.3 1.2 1.9 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
JOB_ELEMENTOR_MASTER 70.0 1.5 2.0 0.4 1.3 1.2 2.0 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
JOB_KNIGHT_HERO 60.0 2.0 0.6 0.9 1.8 2.1 0.5 1.4 4.5 5.5 0.8 3.0 5.0 6.0 1.0 4.2 1.0 5.0
JOB_BLADE_HERO 90.0 1.6 0.6 0.8 1.5 1.7 0.5 1.2 4.5 5.5 0.8 3.0 5.0 6.0 1.5 4.2 1.0 5.0
JOB_JESTER_HERO 85.0 1.6 0.5 0.7 1.6 2.0 0.7 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 4.0 5.0
JOB_RANGER_HERO 75.0 1.6 0.5 0.6 1.5 1.8 1.3 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 9.9
JOB_RINGMASTER_HERO 70.0 1.6 1.8 0.4 1.2 2.3 1.9 1.1 4.5 5.5 0.8 3.0 5.0 6.0 0.6 4.2 1.0 5.0
JOB_BILLPOSTER_HERO 85.0 1.8 1.0 0.7 1.7 1.9 1.6 1.3 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 1.0 5.0
JOB_PSYCHIKEEPER_HERO 70.0 1.5 2.0 0.4 1.3 1.2 1.9 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
JOB_ELEMENTOR_HERO 70.0 1.5 2.0 0.4 1.3 1.2 2.0 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
guardiananqel; said:Someone Know how To work SFX Lua ...
it was Disabled in The Source ...
Now Its Enabled in My Source but Nothing Happens =X
I think the Function isnt fully builded in ...
Someone knows More ? ^^
Thank You ^^
When i added the thing with the bow its not working for me it's not scanning the right values from propJob.inc i think. Since i added this all my maxhp/maxfp/maxmp/crit/etc. is buggy and can't be read out anymore mymapfp and maxmp is 1 as example.
Here is my propJob.inc hope s.b. can help me to fix it :scared:
Code:// Á÷¾÷¿¡ µû¸¥ property¸¦ ¼³Á¤ÇÏ´Â ÆÄÀÏ // °ø¼Ó MaxHP°ü·Ã MaxMP°ü·Ã MaxFP°ü·Ã ¹°¸®¹æ¾î·Â°ü·Ã hpȸº¹·ü°ü·Ã mpȸº¹·ü°ü·Ã fpȸº¹·ü°ü·Ã SWD AXE STAFF STICK KNUCKLE WAND BLOCKING YOYO CRITICAL BOW JOB_VAGRANT 75.0 0.9 0.3 0.3 1.0 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0 JOB_MERCENARY 80.0 1.5 0.5 0.7 1.35 1.6 0.5 1.0 4.5 5.5 0.8 3.0 5.0 6.0 0.8 4.2 1.0 5.0 JOB_ACROBAT 75.0 1.4 0.5 0.5 1.4 1.7 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.5 4.2 1.0 5.0 JOB_ASSIST 70.0 1.4 1.3 0.6 1.2 1.6 0.5 1.0 4.5 5.5 0.8 3.0 5.0 6.0 0.5 4.2 1.0 5.0 JOB_MAGICIAN 65.0 1.4 1.7 0.3 1.2 1.5 1.75 0.6 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0 JOB_PUPPETEER 75.0 1.6 0.5 0.5 1.2 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0 JOB_KNIGHT 60.0 2.0 0.6 0.9 1.8 2.1 0.5 1.4 4.5 5.5 0.8 3.0 5.0 6.0 1.0 4.2 1.0 5.0 JOB_BLADE 90.0 1.6 0.6 0.8 1.5 1.7 0.5 1.2 4.5 5.5 0.8 3.0 5.0 6.0 1.5 4.2 1.0 5.0 JOB_JESTER 85.0 1.6 0.5 0.7 1.6 2.0 0.7 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 4.0 5.0 JOB_RANGER 75.0 1.6 0.5 0.6 1.5 1.8 1.3 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0 JOB_RINGMASTER 70.0 1.6 1.8 0.4 1.2 2.3 1.9 1.1 4.5 5.5 0.8 3.0 5.0 6.0 0.6 4.2 1.0 5.0 JOB_BILLPOSTER 85.0 1.8 1.0 0.7 1.7 1.9 1.6 1.3 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 1.0 5.0 JOB_PSYCHIKEEPER 70.0 1.5 2.0 0.4 1.3 1.2 1.9 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0 JOB_ELEMENTOR 70.0 1.5 2.0 0.4 1.3 1.2 2.0 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0 JOB_GATEKEEPER 75.0 0.7 1.0 0.5 1.3 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0 JOB_DOPPLER 75.0 0.7 0.5 0.5 1.3 1.2 0.5 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.2 4.2 1.0 5.0 JOB_KNIGHT_MASTER 60.0 2.0 0.6 0.9 1.8 2.1 0.5 1.4 4.5 5.5 0.8 3.0 5.0 6.0 1.0 4.2 1.0 5.0 JOB_BLADE_MASTER 90.0 1.6 0.6 0.8 1.5 1.7 0.5 1.2 4.5 5.5 0.8 3.0 5.0 6.0 1.5 4.2 1.0 5.0 JOB_JESTER_MASTER 85.0 1.6 0.5 0.7 1.6 2.0 0.7 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 4.0 5.0 JOB_RANGER_MASTER 75.0 1.6 0.5 0.6 1.5 1.8 1.3 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0 JOB_RINGMASTER_MASTER 70.0 1.6 1.8 0.4 1.2 2.3 1.9 1.1 4.5 5.5 0.8 3.0 5.0 6.0 0.6 4.2 1.0 5.0 JOB_BILLPOSTER_MASTER 85.0 1.8 1.0 0.7 1.7 1.9 1.6 1.3 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 1.0 5.0 JOB_PSYCHIKEEPER_MASTER 70.0 1.5 2.0 0.4 1.3 1.2 1.9 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0 JOB_ELEMENTOR_MASTER 70.0 1.5 2.0 0.4 1.3 1.2 2.0 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0 JOB_KNIGHT_HERO 60.0 2.0 0.6 0.9 1.8 2.1 0.5 1.4 4.5 5.5 0.8 3.0 5.0 6.0 1.0 4.2 1.0 5.0 JOB_BLADE_HERO 90.0 1.6 0.6 0.8 1.5 1.7 0.5 1.2 4.5 5.5 0.8 3.0 5.0 6.0 1.5 4.2 1.0 5.0 JOB_JESTER_HERO 85.0 1.6 0.5 0.7 1.6 2.0 0.7 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 4.0 5.0 JOB_RANGER_HERO 75.0 1.6 0.5 0.6 1.5 1.8 1.3 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 9.9 JOB_RINGMASTER_HERO 70.0 1.6 1.8 0.4 1.2 2.3 1.9 1.1 4.5 5.5 0.8 3.0 5.0 6.0 0.6 4.2 1.0 5.0 JOB_BILLPOSTER_HERO 85.0 1.8 1.0 0.7 1.7 1.9 1.6 1.3 4.5 5.5 0.8 3.0 5.0 6.0 0.7 4.2 1.0 5.0 JOB_PSYCHIKEEPER_HERO 70.0 1.5 2.0 0.4 1.3 1.2 1.9 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0 JOB_ELEMENTOR_HERO 70.0 1.5 2.0 0.4 1.3 1.2 2.0 0.5 4.5 5.5 0.8 3.0 5.0 6.0 0.3 4.2 1.0 5.0
PS: Sorry 4 bad English
When you help me with my post i'll say you how to do it [/spoiler]
First i got this error too
But ...
It works for me ...
So uhm .. .Where are you From ?
Im German ...
so if youre German you could chat with me in german ...
If not ... in English ...
Add me in ICQ
My ICQNumber : 463-750-778
If You can help me with SFX Lua sure i will help you with this ...
So we will chat and i will help You to build in the Bow