Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff > Flyff Private Server > Flyff PServer Guides & Releases
You last visited: Today at 00:22

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #1
 
Sabage's Avatar
 
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      , "" )
Sabage is offline  
Thanks
4 Users
Old 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' ^^
.Tear is offline  
Old 02/11/2013, 16:04   #3
 
Sabage's Avatar
 
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
Sabage is offline  
Old 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.
Jopsi332 is offline  
Old 02/11/2013, 17:00   #5
 
TrøublêMakêr's Avatar
 
elite*gold: 51
Join Date: Sep 2012
Posts: 1,141
Received Thanks: 575
Tu doch 5 Sek Timer rein. Dann laggt es gar nicht.
TrøublêMakêr is offline  
Thanks
1 User
Old 02/11/2013, 17:40   #6
 
Sabage's Avatar
 
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
Sabage is offline  
Old 02/11/2013, 18:37   #7
 
Cartmanforlife's Avatar
 
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.
Cartmanforlife is offline  
Old 02/11/2013, 18:48   #8
 
Sabage's Avatar
 
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?
Sabage is offline  
Old 02/11/2013, 18:57   #9
 
Cartmanforlife's Avatar
 
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.
Cartmanforlife is offline  
Old 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?
MilKa* is offline  
Old 02/12/2013, 16:36   #11
 
Sabage's Avatar
 
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
Sabage is offline  
Old 02/12/2013, 19:13   #12
 
Cartmanforlife's Avatar
 
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...
Cartmanforlife is offline  
Old 02/12/2013, 22:08   #13
 
Sabage's Avatar
 
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
Sabage is offline  
Old 02/12/2013, 22:29   #14
 
Cartmanforlife's Avatar
 
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.
Cartmanforlife is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.