Ich release jetzt das Premium System, nach langen Überlegungen ob ich es tuhe mache ich es, da es eh schon gefühlte 70 % der Server haben. Ich werde dies in einem kleinen Tutorial machen.
Dies ist das Premium System, es sollte funktionieren, wenn es Probleme gibt schreibt mir eine PN, ich bitte um KEIN geflame, nehmt es oder nicht.
Mover.cpp
Unter :
Das :
FuncTextCmd.cpp
Unter :
Das :
In :
Unter :
Das :
Unter :
Das :
ctrl.cpp
Ganz unten das einfügen :
ctrl.h
Unter :
Das :
MoverParam.cpp :
In :
Unter :
Das :
In :
Unter :
Das :
MoverRender.cpp
Unter :
Das :
Unter :
Das :
MoverSkill.cpp
Unter :
Das :
defineItem.h ( Source und Resource )
Das :
Spec_Item.txt :
propItem.txt :
Unter :
PHP Code:
#define COLOR_GAMEMASTER 0xffffffff
PHP Code:
#ifdef __PREMIUM
#define COLOR_PREMIUM 0xFFFFD700
#endif //__PREMIUM
Unter :
PHP Code:
#define BEGINE_TEXTCMDFUNC_MAP TextCmdFunc m_textCmdFunc[] = {
#define END_TEXTCMDFUNC_MAP 0, 0, 0, 0, 0, 0, AUTH_GENERAL, 0 };
#define ON_TEXTCMDFUNC( a, b, c, d, e, f, g, h ) a, b, c, d, e, f, g, h,
PHP Code:
#ifdef __PREMIUM
BOOL TextCmd_PremiumAwake( CScanner & s )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)s.dwValue;
CItemElem* pItemElem = pUser->m_Inventory.GetAt( 0 );
if( IsValidObj( pUser ) && pItemElem && pItemElem->GetProp() )
{
if( pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
{
if( pItemElem )
{
int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind( pItemElem );
if( nRandomOptionKind >= 0 )
{
if(pUser->HasActivatedSystemPet() && pItemElem->GetProp()->dwItemKind3 == IK3_EGG || pUser->HasActivatedEatPet() && pItemElem->GetProp()->dwItemKind3 == IK3_PET )
{
char chMessage[100];
sprintf( chMessage, "Hol dein Pet oder CS Pet rein! Sonst kannst du es nicht erwecken!" );
pUser->AddText( chMessage );
}
else
{
g_xRandomOptionProperty->InitializeRandomOption( pItemElem->GetRandomOptItemIdPtr() );
g_xRandomOptionProperty->GenRandomOption( pItemElem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItemElem->GetProp()->dwParts );
pUser->UpdateItemEx( (BYTE)( pItemElem->m_dwObjId ), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId() );
}
}
}
else
{
pUser->AddText( "Das zu erweckende Item muss im ersten Slot deines Inventars liegen!" );
}
}
else
{
pUser->AddText( "Du musst Premium Status haben um diesen Befehl zu benutzen!" );
}
}
else
{
pUser->AddText( "Item fehlt" );
}
#endif // __WORLDSERVER
return TRUE;
}
BOOL TextCmd_PremiumBuff( CScanner& scanner )
{
#ifdef __WORLDSERVER
#include "defineSkill.h"
CUser* pUser = (CUser*)scanner.dwValue;
if( IsValidObj( pUser ) )
{
if( pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
{
pUser->DoBuff(SI_ASS_CHEER_HEAPUP, 20, pUser);
pUser->DoBuff(SI_ASS_CHEER_QUICKSTEP, 20, pUser);
pUser->DoBuff(SI_ASS_HEAL_PATIENCE, 20, pUser);
pUser->DoBuff(SI_ASS_CHEER_CATSREFLEX, 20, pUser);
pUser->DoBuff(SI_ASS_CHEER_CANNONBALL, 20, pUser);
pUser->DoBuff(SI_ASS_CHEER_MENTALSIGN, 20, pUser);
pUser->DoBuff(SI_ASS_CHEER_BEEFUP, 20, pUser);
pUser->DoBuff(SI_ASS_CHEER_ACCURACY, 20, pUser);
pUser->DoBuff(SI_RIN_SUP_SPIRITUREFORTUNE, 10, pUser);
pUser->DoBuff(SI_ASS_CHEER_HASTE, 20, pUser);
pUser->DoBuff(SI_RIN_SUP_PROTECT, 10, pUser);
pUser->DoBuff(SI_RIN_SUP_HOLYGUARD, 10, pUser);
pUser->DoBuff(SI_RIN_SUP_SPIRITUREFORTUNE, 10, pUser);
}
else
{
pUser->AddText( "Du musst Premium Status haben um diesen Befehl zu benutzen!" );
}
}
else
{
pUser->AddText( "Irgentwas lief furchtbar schief!" );
}
#endif //WORLDSERVER
return TRUE;
}
BOOL TextCmd_PremiumItem( CScanner & s )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)s.dwValue;
CItemElem* pItemElem = pUser->m_Inventory.GetAt( 0 );
if( IsValidObj( pUser ) && pItemElem && pItemElem->GetProp() )
{
if( pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) ||
pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
{
ItemProp* pItemProp = pItemElem->GetProp();
switch( pItemProp->dwItemKind1 )
{
case IK1_WEAPON:
{
pUser->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_AO, 10 );
pUser->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_PIERCING_SIZE, MAX_PIERCING );
if( pItemProp->IsUltimate() )
pUser->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_ULTIMATE_PIERCING_SIZE, MAX_PIERCING_ULTIMATE );
} break;
case IK1_ARMOR:
{
pUser->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_AO, 10 );
if( pItemProp->dwItemKind3 == IK3_SUIT )
pUser->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_PIERCING_SIZE, 4 );
} break;
case IK3_EGG:
{} break;
default :
{
if( pItemElem->IsAccessory() )
pUser->UpdateItem( (BYTE)pItemElem->m_dwObjId, UI_AO, 20 );
}
}
}
else
{
pUser->AddText( "Du musst Premium Status haben um diesen Befehl zu benutzen!" );
}
}
else
{
pUser->AddText( "Item fehlt" );
}
#endif //WORLDSERVER
return TRUE;
}
#endif
PHP Code:
BOOL TextCmd_shout( CScanner& scanner )
PHP Code:
#if __VER >= 12 // __LORD
DWORD dwColor = 0xffff99cc;
if( pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_LS_SHOUT ) )
dwColor = 0xff00ff00;
PHP Code:
#ifdef __PREMIUM
if( pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) || pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) || pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) || pUser->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
dwColor = 0xff00ff00;
#endif
PHP Code:
BEGINE_TEXTCMDFUNC_MAP
PHP Code:
#ifdef __PREMIUM
ON_TEXTCMDFUNC( TextCmd_PremiumAwake, "PremiumAwake", "Awake", "°¢¼ºÃູ", "°¢Ãà", TCM_BOTH, AUTH_GENERAL, "" )
ON_TEXTCMDFUNC( TextCmd_PremiumBuff, "PremiumBuff", "Buff", "°¢¼ºÃູ", "°¢Ãà", TCM_BOTH, AUTH_GENERAL, "" )
ON_TEXTCMDFUNC( TextCmd_PremiumItem, "PremiumUpgrade", "Upgrade", "°¢¼ºÃູ", "°¢Ãà", TCM_BOTH, AUTH_GENERAL, "" )
#endif
Ganz unten das einfügen :
PHP Code:
#ifdef __PREMIUM
void CCtrl::DoBuff( DWORD dwSkill, int nLevel, CCtrl *pTarget)
{
ItemProp* pSkillProp;
AddSkillProp* pAddSkillProp;
GetSkillProp( &pSkillProp, &pAddSkillProp, dwSkill, nLevel, "DoActiveSkill" );
if( pAddSkillProp->dwSkillTime > 1000)
pAddSkillProp->dwSkillTime = 9999999;
DoApplySkill( pTarget, pSkillProp, pAddSkillProp, 0, 0, FALSE, 0 );
}
#endif
Unter :
PHP Code:
void DoActiveSkill( DWORD dwSkill, int nLevel, CCtrl *pTarget, bool bIgnoreProb = false ); // ActiveSkill¹ßµ¿
#endif // __VER >= 8 // __S8_PK
PHP Code:
#ifdef __PREMIUM
void DoBuff( DWORD dwSkill, int nLevel, CCtrl *pTarget);
#endif
In :
PHP Code:
float CMover::GetPieceItemDropRateFactor( CMover* pAttacker )
PHP Code:
#if __VER >= 14 // __PCBANG
if( pAttacker->IsPlayer() )
fFactor *= CPCBang::GetInstance()->GetPieceItemDropFactor( static_cast<CUser*>( pAttacker ) );
#endif // __PCBANG
PHP Code:
#ifdef __PREMIUM
if( pAttacker->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) ||
pAttacker->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) ||
pAttacker->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) ||
pAttacker->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
{
fFactor *= 1.5f;
}
#endif
PHP Code:
float CMover::GetExpFactor( void )
PHP Code:
#if __VER >= 12 // __LORD
ILordEvent* pEvent = CSLord::Instance()->GetEvent();
fFactor *= pEvent->GetEFactor();
if( HasBuff( BUFF_ITEM, II_SYS_SYS_LS_CHEERING ) )
fFactor *= 1.1F;
if( HasBuff( BUFF_ITEM, II_SYS_SYS_VOTE_THANKS ) )
fFactor *= 1.05F;
#endif // __LORD
PHP Code:
#ifdef __PREMIUM
if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
{
fFactor *= 1.5f;
}
#endif
Unter :
PHP Code:
else if( m_dwAuthorization == AUTH_GAMEMASTER )
dwColor = COLOR_GAMEMASTER;
PHP Code:
#ifdef __PREMIUM
else if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
{
dwColor = COLOR_PREMIUM;
}
#endif
PHP Code:
CString strFameName = GetTitle();
if( strFameName.IsEmpty() == FALSE )
{
CString strName;
strName = "[";
strName += strFameName;
strName += "] ";
strName += m_szName;
strcpy( szName, (LPCTSTR)strName );
}
PHP Code:
#ifdef __PREMIUM
if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) ||
HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ) )
{
CString strName;
strName = szName;
{
strName += " [Premium]";
}
strcpy( szName, (LPCTSTR)strName );
}
#endif
MoverSkill.cpp
Unter :
PHP Code:
case II_SYS_SYS_SCR_HOLY:
PHP Code:
#ifdef __PREMIUM
case II_SYS_SYS_SCR_PREMIUM:
case II_SYS_SYS_SCR_PREMIUM_2:
case II_SYS_SYS_SCR_PREMIUM_3:
case II_SYS_SYS_SCR_PREMIUM_4:
{
if( HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM ) || HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_2 ) || HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_3 ) || HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_PREMIUM_4 ))
{
( (CUser*)this)->AddText( "Du hast bereits Premium Status, benutze es erst wenn dein Premium Status abgelaufen ist!" );
nResult = 1;
}
else
{
DoApplySkill( (CCtrl*)this, pItemProp, NULL );
}
}
break;
#endif
Das :
PHP Code:
#define II_SYS_SYS_SCR_PREMIUM 55014
#define II_SYS_SYS_SCR_PREMIUM_2 55015
#define II_SYS_SYS_SCR_PREMIUM_3 55016
#define II_SYS_SYS_SCR_PREMIUM_4 55017
PHP Code:
11 II_SYS_SYS_SCR_PREMIUM "Premium Scroll (10 Sec)" 1 99 IK1_CHARGED IK2_SYSTEM IK3_SCROLL = = 1 = 0 = = = = = = = 0 = = 1 = = 1 1 = = = = _NONE 0 = = = = = = = = = = = = = = = = = = = DST_STAT_ALLUP = = 150 = = = = = II_SYS_SYS_SCR_PREMIUM = = = = = = = = = = = = = = = = = = XI_SYS_EXPAN01 = = = = 10000 = WUI_NOW = = = = = = = = = 0 0 0 0 0 1 = = = = = = = = = = = = = = = = """PremiumScroll.dds""" 0 """""" IDS_PROPITEM_TXT_PREMIUM_000001 1 250 0 0 1 0 0 0 0 0 2 = = = = = = = = = = 1 1 1 1 1 0
propItem.txt :
PHP Code:
11 II_SYS_SYS_SCR_PREMIUM "Premium Scroll (10 Sec)" 1 99 IK1_CHARGED IK2_SYSTEM IK3_SCROLL = = 1 = 0 = = = = = = = 0 = = 1 = = 1 1 = = = = _NONE 0 = = = = = = = = = = = = = = = = = = = DST_STAT_ALLUP = = 150 = = = = = II_SYS_SYS_SCR_PREMIUM = = = = = = = = = = = = = = = = = = XI_SYS_EXPAN01 = = = = 10000 = WUI_NOW = = = = = = = = = 0 0 0 0 0 1 = = = = = = = = = = = = = = = = """PremiumScroll.dds""" 0 """""" IDS_PROPITEM_TXT_PREMIUM_000001
Dies ist das Premium System, es sollte funktionieren, wenn es Probleme gibt schreibt mir eine PN, ich bitte um KEIN geflame, nehmt es oder nicht.
Mit freundlichen Grüßen
Selénc






