Hallo Epvper's,
wie der Betreff schon sagt Release ich hier mal ein funktionerendes Buff Tool.
1. Was es Macht:
Es Bufft euren Char mit den von euch gewählten Buffs
[Only registered and activated users can see links. Click Here To Register...]
2.Code
für /buff braucht ihr nur User.h Ctrl.cpp/h und /buff aus 3.
für die Fensterversion bitte alles hier einfügen.
User.h
Code:
sucht nach public: virtual void Process(); und fürgt darüber ein DWORD m_dwBuffTick;
am Ende
Code:
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 = 3600000;
DoApplySkill( pTarget, pSkillProp, pAddSkillProp, 0, 0, FALSE, 0 );
#ifdef __WORLDSERVER
g_UserMng.AddDoApplySkill( this, pTarget->GetId(), dwSkill, nLevel );
#endif
}
Code:
sucht nach
D3DXMATRIX* GetInvTM() { return &m_mInvTM; }
und fügt darunter ein
void DoBuff( DWORD dwSkill, int nLevel, CCtrl *pTarget);
Am Ende über CDPClient g_DPlay;
Code:
void CDPClient::SendBuffRequest( u_long idPlayer )
{
BEFORESENDSOLE( ar, PACKETTYPE_BUFFREQUEST, DPID_UNKNOWN );
ar << idPlayer;
SEND( ar, this, DPID_SERVERPLAYER );
}
Code:
sucht nach //________________________________________________________________________________ // Operator commands und fügt [U]DARÜBER[/U] ein void SendBuffRequest( u_long idPlayer );
Code:
sucht nach
}
CDPSrvr::~CDPSrvr()
{
und fügt Darüber ein, bei den anderen ON_MSG(...
ON_MSG( PACKETTYPE_BUFFREQUEST, OnSendBuffRequest );
Code:
Am Ende von DPSrvr.cpp
void CDPSrvr::OnSendBuffRequest( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )
{
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
u_long idPlayer;
if( IsValidObj( pUser ) )
{
ar >> idPlayer;
if( idPlayer != pUser->m_idPlayer )
return;
if( pUser->m_dwBuffTick + 5000 > GetTickCount() )
{
pUser->AddText("Bitte Warte einen Moment!");
return;
}
else
{
pUser->DoBuff( SI_ASS_CHEER_HEAPUP, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_QUICKSTEP, 15, pUser);
pUser->DoBuff( SI_ASS_HEAL_PATIENCE, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_CATSREFLEX, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_CANNONBALL, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_MENTALSIGN, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_BEEFUP, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_ACCURACY, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_HASTE, 15, pUser);
pUser->AddText("Du hast Buffs Lvl 15 erhalten!");
pUser->m_dwBuffTick = GetTickCount();
}
}
}
BUFF_SKILL für Buff
SI_ASS_CHEER_HASTE euer Buff den der User bekommen soll
15 das Skill Level
3600000 Zeit in Millisecunden
DPSrvr.h
Code:
Am Ende über private: DPID m_dpidCache; // ij½¬¼*¹ö DPID }; #endif // __DPSRVR_H__ kommt void OnSendBuffRequest( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
Code:
#define PACKETTYPE_BUFFREQUEST (DWORD)0x88100265 sucht am bessten nach #define SNAPSHOTTYPE_ und fügt es über /*------------------------------------------------------------------------------------------------------------------------------------------------------------*/ ein
Man kann es so wie ich in eine ListBox packen oder über einen Button
machen das bleibt euch überlassen.
Wichtig ist nur das ihr bei OnChildNotify
Code:
g_DPlay.SendBuffRequest(g_pPlayer->m_idPlayer);
bei meiner ListBox sieht das dann so aus
Code:
case 6:
{
g_DPlay.SendBuffRequest(g_pPlayer->m_idPlayer);
break;
}
Code:
if( nID == WIDC_BUTTON1 )
{
g_DPlay.SendBuffRequest(g_pPlayer->m_idPlayer);
Destroy(); //Wenn das Fester sich schließen soll
}
Über den Befehl /buff
Wichtig denkt an User.h aus 2.
in der FuncTextCmd.cpp sucht ihr nach
BEGINE_TEXTCMDFUNC_MAP
Darüber addet ihr
Code:
BOOL TextCmd_Buff( CScanner& scanner )
{
#ifdef __WORLDSERVER
#include "defineSkill.h"
CUser* pUser = (CUser*)scanner.dwValue;
if( IsValidObj( pUser ) )
{
if( pUser->m_dwBuffTick + 5000 > GetTickCount() )
{
pUser->AddText("Bitte Warte einen Moment!");
return FALSE;
}
else
{
pUser->DoBuff( SI_ASS_CHEER_HEAPUP, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_QUICKSTEP, 15, pUser);
pUser->DoBuff( SI_ASS_HEAL_PATIENCE, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_CATSREFLEX, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_CANNONBALL, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_MENTALSIGN, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_BEEFUP, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_ACCURACY, 15, pUser);
pUser->DoBuff( SI_ASS_CHEER_HASTE, 15, pUser);
pUser->AddText("Du hast Buffs Lvl 15 erhalten!");
pUser->m_dwBuffTick = GetTickCount();
}
}
#endif //WORLDSERVER
return TRUE;
}
Code:
ON_TEXTCMDFUNC( TextCmd_Buff, "Buff", "buff", "", "", TCM_SERVER, AUTH_GENERAL , "" )