[Source] Trade Block System
Blocks Member/Team/Admin Trade, have fun with it
Code:
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 && pUser->m_dwAuthorization <= AUTH_JOURNALIST || pTrader->m_dwAuthorization >= AUTH_GENERAL && 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 && pUser->m_dwAuthorization <= AUTH_OPERATOR || pTrader->m_dwAuthorization >= AUTH_HELPER && pTrader->m_dwAuthorization <= AUTH_OPERATOR)
{
pUser->AddText("Team Members 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
};
--- FuncTextCmd.cpp ---
#ifdef __NO_TRADE
BOOL TextCmd_NoMTrade( CScanner& scanner )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
const CHAR* szString;
if(g_eLocal.GetState(EVE_NO_MEMBER_TRADE))
{
g_eLocal.SetState( EVE_NO_MEMBER_TRADE, 0 );
pUser->AddText( "Trade enabled" );
szString = "Trade enabled";
}
else
{
g_eLocal.SetState( EVE_NO_MEMBER_TRADE, 1 );
szString = "Trade disabled";
pUser->AddText( "Trade disabled" );
}
g_DPCoreClient.SendSystem( szString );
scanner.GetLastFull();
#endif
return TRUE;
}
BOOL TextCmd_NoTTrade( CScanner& scanner )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
LPCSTR szString;
if(g_eLocal.GetState(EVE_NO_TEAM_TRADE))
{
g_eLocal.SetState( EVE_NO_TEAM_TRADE, 0 );
szString = "Team Trade enabled";
}
else
{
g_eLocal.SetState( EVE_NO_TEAM_TRADE, 1 );
szString = "Team Trade disabled";
}
pUser->AddText( szString );
#endif
return TRUE;
}
BOOL TextCmd_NoATrade( CScanner& scanner )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
LPCSTR szString;
if(g_eLocal.GetState(EVE_NO_ADMIN_TRADE))
{
g_eLocal.SetState( EVE_NO_ADMIN_TRADE, 0 );
szString = "Admin Trade enabled";
}
else
{
g_eLocal.SetState( EVE_NO_ADMIN_TRADE, 1 );
szString = "Admin Trade disabled";
}
pUser->AddText( szString );
#endif
return TRUE;
}
#endif // __NO_TRADE
#ifdef __NO_TRADE
ON_TEXTCMDFUNC( TextCmd_NoMTrade, "NoMemberTrade", "nmt", "ij¸¯ÅÍ»ý¼º", "ij»ý", TCM_BOTH, AUTH_SERVER, "ij¸¯ÅÍ»ý¼º" )
ON_TEXTCMDFUNC( TextCmd_NoTTrade, "NoTeamTrade", "ntt", "ij¸¯ÅÍ»ý¼º", "ij»ý", TCM_BOTH, AUTH_SERVER, "ij¸¯ÅÍ»ý¼º" )
ON_TEXTCMDFUNC( TextCmd_NoATrade, "NoAdminTrade", "nat", "ij¸¯ÅÍ»ý¼º", "ij»ý", TCM_BOTH, AUTH_SERVER, "ij¸¯ÅÍ»ý¼º" )
#endif //__NO_TRADE
Re: [Source] Trade Block System
Well thanks for this , I may not need it yet.
Re: [Source] Trade Block System
Could be useful.
Nice release ;)
Re: [Source] Trade Block System
thanks, i think it helps some servers ;)
Re: [Source] Trade Block System
Quote:
Originally Posted by
Thecoreman
thanks, i think it helps some servers ;)
Dupe wise , but there's always the mailbox.
Edit : Do these have a enable and disable feature? e.g NO_USER_TRADE = true;
Re: [Source] Trade Block System
Quote:
Originally Posted by
Military
Dupe wise , but there's always the mailbox.
Edit : Do these have a enable and disable feature? e.g NO_USER_TRADE = true;
--- WorldServer.ini ---
NO_MEMBER_TRADE
NO_TEAM_TRADE
NO_ADMIN_TRADE
^This =)
and we didn't wrote the Postbox because not everyone need all parts of a small system. Everyone who waants to block the postbox to have to do it by himself.
Re: [Source] Trade Block System
Quote:
Originally Posted by
Sedrika
--- WorldServer.ini ---
NO_MEMBER_TRADE
NO_TEAM_TRADE
NO_ADMIN_TRADE
^This =)
and we didn't wrote the Postbox because not everyone need all parts of a small system. Everyone who waants to block the postbox to have to do it by himself.
That sucks , I really wanted NO_ADMIN_TRADE etc = true/false;
Re: [Source] Trade Block System
Re: [Source] Trade Block System
Quote:
Originally Posted by
Military
That sucks , I really wanted NO_ADMIN_TRADE etc = true/false;
NO_ADMIN_TRADE <- Enabled
//NO_ADMIN_TRADE <- Disabled
Its very easy xD
Re: [Source] Trade Block System
@Sedrika
If there was an input, like he mentioned before, it could be used much easily with a config on the server-side, and/or a command from in-game.
Re: [Source] Trade Block System
Quote:
Originally Posted by
Phant0m
@Sedrika
If there was an input, like he mentioned before, it could be used much easily with a config on the server-side, and/or a command from in-game.
we maked an update, with better functions, cmd´s etc but we dont release it
Re: [Source] Trade Block System
I Maked a Update have fun :)
Re: [Source] Trade Block System
Kinda sad, even with the source, people still don't know how to do things properly. =[
Re: [Source] Trade Block System
If they dont now how to do they should delete the source from the HDD.
Re: [Source] Trade Block System
can teach me step by step how to put that on my server please? thx~!