|
You last visited: Today at 00:22
Advertisement
[Release] Funktionierendes Buff Tool
Discussion on [Release] Funktionierendes Buff Tool within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.
02/11/2013, 15:49
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 62
Received Thanks: 37
|
[Release] Funktionierendes Buff Tool
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
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;
Ctrl.cpp
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
}
Ctrl.h
Code:
sucht nach
D3DXMATRIX* GetInvTM() { return &m_mInvTM; }
und fügt darunter ein
void DoBuff( DWORD dwSkill, int nLevel, CCtrl *pTarget);
DPClient.cpp
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 );
}
DPClient.h
Code:
sucht nach
//________________________________________________________________________________
// Operator commands
und fügt [U]DARÜBER[/U] ein
void SendBuffRequest( u_long idPlayer );
DPSrvr.cpp
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();
}
}
}
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_HASTE, 15, 3600000);
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 );
MsgHdr.h
Code:
#define PACKETTYPE_BUFFREQUEST (DWORD)0x88100265
sucht am bessten nach #define SNAPSHOTTYPE_ und fügt es über
/*------------------------------------------------------------------------------------------------------------------------------------------------------------*/
ein
3.Möglicher Aufruf
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);
die Stelle einfügt
bei meiner ListBox sieht das dann so aus
Code:
case 6:
{
g_DPlay.SendBuffRequest(g_pPlayer->m_idPlayer);
break;
}
für einen Button wäre es
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;
}
und darunter bei den Spielern
Code:
ON_TEXTCMDFUNC( TextCmd_Buff, "Buff", "buff", "", "", TCM_SERVER, AUTH_GENERAL , "" )
|
|
|
02/11/2013, 15:51
|
#2
|
elite*gold: 59
Join Date: Aug 2009
Posts: 1,595
Received Thanks: 490
|
Fenster wäre nice wenn man jeden BUff einzeln auswählen könnte ^^ So is das nur umständliche Klickarbeit, darum lieber '/buff' ^^
|
|
|
02/11/2013, 16:04
|
#3
|
elite*gold: 0
Join Date: Mar 2010
Posts: 62
Received Thanks: 37
|
gut /buff wär auch ne möglichkeit das aufzurufen werd ich vllt noch hinzugügen und jeden buff einzeln wählen find ich jetzt persönlich zuviel klickarbeit wär aber auch möglich wären nur kleine änderungen am Code
|
|
|
02/11/2013, 16:22
|
#4
|
elite*gold: 4
Join Date: Mar 2010
Posts: 3,148
Received Thanks: 1,535
|
eine abfrage ob der user bereits denn buff hat / fast abgelaufen ist wäre gut, da man sonst dauern buffen könnte und alles anfängt zu laggen.
|
|
|
02/11/2013, 17:00
|
#5
|
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
|
Tu doch 5 Sek Timer rein. Dann laggt es gar nicht.
|
|
|
02/11/2013, 17:40
|
#6
|
elite*gold: 0
Join Date: Mar 2010
Posts: 62
Received Thanks: 37
|
habs mal edited ist jetzt der 5 sec Timer drin und der /buff
|
|
|
02/11/2013, 18:37
|
#7
|
elite*gold: 0
Join Date: May 2011
Posts: 302
Received Thanks: 83
|
Hallo,
habe das versucht bei mir einzubauen, mit dem /buff den rest hab ich mal gelassen also hab ich nur änderungen in der FuncTextCmd.cpp vorgenommen.
Dort hab ich die Funktion reingebaut das man gebufft werden kann und das der Befehl ausgeführt werden kann, beim Compilen des World Servers un der Neuz kam der Error das m_dwBuffTick oder so kein Member von pUser ist, dann hab ich die Abfrage der 5 Sekunden rausgenommen. Jetzt hat er richtig compiled, allerdings hats ingame nich gefunzt, aber er hat auch nich /buff in den chat geschrieben, also nimmt er den command ja an, nur gebufft werd ich nicht, villeicht solle ich dazu schreiben das ich v15 clean source benutze und wenn ich pUser-> eingebe kommt ja intellisence, da steht AddBuff auch garnit drin, also gibts das ja garnicht... könnt ihr mir helfen?
Edit: Meine Bearbeitete Funktion sah danach so aus:
Code:
BOOL TextCmd_Buff( CScanner& scanner )
{
#ifdef __WORLDSERVER
#include "defineSkill.h"
CUser* pUser = (CUser*)scanner.dwValue;
if( IsValidObj( pUser ) )
{
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_HEAPUP, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_QUICKSTEP, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_HEAL_PATIENCE, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_CATSREFLEX, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_CANNONBALL, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_MENTALSIGN, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_BEEFUP, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_ACCURACY, 15, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_HASTE, 15, 3600000);
pUser->AddText("Du hast Buffs erhalten!");
}
#endif //WORLDSERVER
return TRUE;
}
Also nur drie Abfrage mit den 5 Sekunden rausgeholt.
|
|
|
02/11/2013, 18:48
|
#8
|
elite*gold: 0
Join Date: Mar 2010
Posts: 62
Received Thanks: 37
|
ich habs sowohl mit RoC als auch offiV15 selber versucht
wegen m_dwBuffTick schau mal unter 2. da steht für /buff nur den eintrag User.h machen rest kannst du auslassen
was genau hast du da rausgelöscht?
|
|
|
02/11/2013, 18:57
|
#9
|
elite*gold: 0
Join Date: May 2011
Posts: 302
Received Thanks: 83
|
Ich hab das rausgelöscht:
Code:
if( pUser->m_dwBuffTick + 5000 > GetTickCount() )
{
pUser->AddText("Bitte Warte einen Moment!");
return FALSE;
}
else
{
WAS HIER STAND HAB ICH STEHGELASSEN ALSO DAS BUFFEN
} //UND DAS CLOSE Tag "}" HAB ICH AUCH WEG GEMACHT.
Edit: Kannst du mir mal deine V15 Offi FuncTextCmd.cpp hochladen?
Edit²: Danke sehr, compile gerade...
Edit³: Danke sehr, funktioniert jetzt super.
|
|
|
02/12/2013, 15:59
|
#10
|
elite*gold: 0
Join Date: Feb 2012
Posts: 90
Received Thanks: 16
|
Möchte gerne so haben das /buff Geld kostet reicht es wenn ich in der Funktion der Functextcmd.cpp int nCost = 450000; hintuhe?
|
|
|
02/12/2013, 16:36
|
#11
|
elite*gold: 0
Join Date: Mar 2010
Posts: 62
Received Thanks: 37
|
versuchs mal mit
pUser->AddGold( -450000 );
einfach unter
pUser->AddText("Bitte Warte einen Moment!");
oder drüber einfügen
du solltest aber nen check einbauen ob der User soviel geld hat
|
|
|
02/12/2013, 19:13
|
#12
|
elite*gold: 0
Join Date: May 2011
Posts: 302
Received Thanks: 83
|
Diese /buff Funktion (ob die andere auch, weiß ich nicht) ist jedenfalls verbuggt, habe ich eben leider erfahren müssen, ich war in der PVP Arena, bin gestorben, habe /buff gemacht, buffs bekommen, bin gestorben, wollte meine stats editieren und mir ist aufgefallen das alle bis auf dex (ich hab dex geskillt) auf 1 waren und rot gefärbt waren, und jedesmal wenn ich /buff mache und danach sterbe und wieder /buff mache, passiert das ganze...
Edit: Die Idee mit dem Geld bezahlen fand ich auch nice, hab ich direkt umgesetzt:
Code:
BOOL TextCmd_Buff( CScanner& scanner )
{
#ifdef __WORLDSERVER
#include "defineSkill.h"
CUser* pUser = (CUser*)scanner.dwValue;
if( IsValidObj( pUser ) )
{
int iBuffCost = 5000000; //Das sind die Kosten zum Buffen.
if (pUser->GetGold() >= iBuffCost)
{
pUser->AddGold( -iBuffCost );
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_HEAPUP, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_QUICKSTEP, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_HEAL_PATIENCE, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_CATSREFLEX, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_CANNONBALL, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_MENTALSIGN, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_BEEFUP, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_ACCURACY, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_ASS_CHEER_HASTE, 20, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_RIN_SUP_SPIRITUREFORTUNE, 10, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_RIN_SUP_HOLYGUARD, 10, 3600000);
pUser->AddBuff(BUFF_SKILL, SI_RIN_SUP_PROTECT, 10, 3600000);
pUser->AddText("Du hast dich erfolgreich gebufft.");
} else {
pUser->AddText("Du hast nicht genügend Penya.");
}
}
#endif //WORLDSERVER
return TRUE;
}
Viel Spaß damit 
PS: Bei mir funktioniert es so einwandfrei...
|
|
|
02/12/2013, 22:08
|
#13
|
elite*gold: 0
Join Date: Mar 2010
Posts: 62
Received Thanks: 37
|
hab mir das mal genauer angesehn und etwas umgeschrieben werd gleich editieren
so also habs bei mir schon getestet problem beim alten war er hat zwar die skills angezeigt aber die stats erst nach relog angenommen mit dem neuen befehl nimmt er die jetzt sofort
|
|
|
02/12/2013, 22:29
|
#14
|
elite*gold: 0
Join Date: May 2011
Posts: 302
Received Thanks: 83
|
Also nur die Ctrl.cpp und Ctrl.h jetzt umschreiben und statt AddBuff DoBuff?
Gut werde ich morgen mal probieren.
|
|
|
Similar Threads
|
Funktionierendes Ftool/ ähnliches Tool
03/21/2011 - Flyff - 1 Replies
Guten Tag die Herren
Ich suche ein Buffprogramm das Ftasten emulieren kann wie das im Titel besagte Ftool.
Das Ftool war einfach nur genial um sich selbst mit eigenem RM zu buffen.
Gibt es ein ähnliches (funktionierendes!) Programm? Buffpang will bei mir nicht..
Wenn jemand eins hat, das er nicht pub sehen will, keine Angst ich werds für mich behalten ^^
Greetz,
Jonny
|
[Tool] Auto Pot-Buff-Res tool 5000
05/16/2008 - SRO Hacks, Bots, Cheats & Exploits - 4 Replies
Auto Pot-Buff-Res Tool 5000 overview:
A Silkroad Online multi-tool.
** This program is still in beta stages, you should expect errors. **
Quick List of Features:
Pot Tab:
Auto Potting (HP/MP).
|
All times are GMT +1. The time now is 00:23.
|
|