Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Flyff
You last visited: Today at 03:21

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

Advertisement



FlyFF Addons/Interface Mods ->Fragen<-

Discussion on FlyFF Addons/Interface Mods ->Fragen<- within the Flyff forum part of the MMORPGs category.

Reply
 
Old   #1
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
FlyFF Addons/Interface Mods ->Fragen<-

Hallo E*pvps,
bin vor 2h auf eine doofe Idee gekommen: Flyff-Addons (im WoW-Style). Dies scheitert aber leider an mangelndem Wissen bzw Infos über die Flyffstruktur.
!Ich will nicht hören "flyff is net wow du spacko spiel wow haha suchti hihihi" oder "SuFu", die habe ich benutzt <.<!

So... also, meine Fragen wären:

1. die Skillbar (unten mit F-Tasten) ist, soweit ich das sehe, in den .res daten. stimmt das? (eine Interface-Frage x.x) ->Erledigt, gefunden
2. die Tastenbelegung ist zu 100% CL. Wo steht sie?
3. weiß wer, welche Sprache dafür am besten geeignet wäre?
4. wo steht, was beim Skillaufruf gemacht wird? (und wenns nur ein Befehl an den server ist, ich will eben jenen mitlesen).

danke schonmal, hoffe, der Treat ist verständlich
Reeek is offline  
Old 02/03/2010, 15:42   #2
 
elite*gold: 0
Join Date: Jan 2009
Posts: 111
Received Thanks: 91
c++ d3d hook send/ recv hook und tastatur hook mehr brauchste net

in wow ist das ganze ienfacher -> man kann lua benutzen und so einfach coden^^
Sir_Killer is offline  
Thanks
1 User
Old 02/03/2010, 17:02   #3
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
c++ is schonmal schön, kann ich x3
d3d würde ich als Direct 3D interpretieren, sicher, dass codes in einer solchen Datei stehen? ö.Ö
Punkt 4 war übrigens so gedacht:

eine Art RM-Addon: er bufft eine Person. Jetzt "erfasst" mein Addon zum einen den Buff, das Target und die Buffdauer. Jetzt werden in einem Addonfenster eben jene Daten angezeigt, um dem RM zu zeigen, wer wann buffs braucht... da ist ein tastaturhook dann relativ unnötig (und geht in FlyFF eh nicht, dirX game...)
Reeek is offline  
Old 02/03/2010, 17:06   #4
 
elite*gold: 0
Join Date: Jan 2009
Posts: 111
Received Thanks: 91
d3d ist direct 3D jop

du musst endscene hooken um auf flyff zu zeichen kann ich dir erklären wenn du wilst.
Man kann durch packete abfangen taget hp usw rausfinden deswegen send und recv funktionen hooken

Eigene Hp cordinaten mp fp exp usw kann man auch client side auslesen hier ma die offsets falls du das machen wilst brauchst du nicht alle suchen^^
#define XOFF 0x160
#define YOFF 0x164
#define ZOFF 0x168
#define DEXOFF 0x69C
#define HPOFF 0x6C8
#define MPOFF 0x6CC
#define FPOFF 0x6D0
#define LVLOFF 0x6A4
#define STROFF 0x6A0
#define STAOFF 0x698
#define INTOFF 0x694
#define EXPOFF 0x6B0
Sir_Killer is offline  
Thanks
1 User
Old 02/03/2010, 17:44   #5
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
die ersten 3 sind die position, oder? und kann man auch den Name auslesen?
Reeek is offline  
Old 02/03/2010, 18:11   #6
 
elite*gold: 0
Join Date: Jan 2009
Posts: 111
Received Thanks: 91
das sind nur die für dein eigenes zeugs also deine mp deine exp usw dazu brauchst du nur noch ein pointer man kann auch namen auslesen aber wieder nur seinen^^ für den den du im taget hast musst du wie gesagt packete auslesen und auswerten
Sir_Killer is offline  
Old 02/03/2010, 18:22   #7
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
hast du ein prog/SC zum send/recv hooken?
Reeek is offline  
Old 02/03/2010, 20:13   #8
 
elite*gold: 0
Join Date: Jan 2009
Posts: 111
Received Thanks: 91
Nur meine etwas verkrüppelte da hab ich sachen rum getestet^^
hab kb das jetzt raus zu machen man sieht aber wie man abfängt und bearbeitet^^
Quote:
#include "stdio.h"
#include "winsock2.h"
#include "windows.h"
#include <iostream>
#include "Detours.h"
#include "log.h"
#include <string>
#include <time.h>
#include "resource.h"
using namespace std;

#pragma comment(lib, "ws2_32.lib")
bool brecv,bsend;
typedef int (WINAPI* t_WSARecv)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,L PWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE) ;
typedef int (WINAPI* t_WSASend)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPW SAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE );

t_WSASend o_WSASend;
t_WSARecv o_WSARecv;

char Byte[300];

void *DetourFunction(BYTE *src, const BYTE *dst, const int len) // credits to gamedeception
{
BYTE *jmp = (BYTE*)malloc(len+5);
DWORD dwback;
VirtualProtect(src, len, PAGE_READWRITE, &dwback);
memcpy(jmp, src, len); jmp += len;
jmp[0] = 0xE9;
*(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;
src[0] = 0xE9;
*(DWORD*)(src+1) = (DWORD)(dst - src) - 5;
VirtualProtect(src, len, dwback, &dwback);
return (jmp-len);
}

DWORD dwPtr[12];
int WINAPI hook_WSARecv(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesRecvd,LPDWORD lpFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{


dwPtr[0] = lpBuffers->buf[0];
dwPtr[1] = lpBuffers->buf[1];
dwPtr[2] = lpBuffers->buf[2];
dwPtr[3] = lpBuffers->buf[3];
dwPtr[4] = lpBuffers->buf[4];
dwPtr[5] = lpBuffers->buf[5];
dwPtr[6] = lpBuffers->buf[6];
dwPtr[7] = lpBuffers->buf[7];
dwPtr[8] = lpBuffers->buf[8];
dwPtr[9] = lpBuffers->buf[9];
dwPtr[10] = lpBuffers->buf[10];
dwPtr[11] = lpBuffers->buf[11];
dwPtr[12] = lpBuffers->buf[12];

if(dwPtr[0] == 0x5e && dwPtr[1] == 0x08 && dwPtr[2] == 0x00 && dwPtr[3] == 0x00 &&dwPtr[4] == 0x00 &&dwPtr[5] == 0x00 &&dwPtr[6] == 0x00 &&dwPtr[7] == 0x00)
{
cout<<"Session ID gefunden!!!"<<endl;
cout<<hex<<dwPtr[9]<<dwPtr[10]<<dwPtr[11]<<dwPtr[12]<<endl;
}


return o_WSARecv(s,lpBuffers,dwBufferCount,lpNumberOfByte sRecvd,lpFlags,lpOverlapped,lpCompletionRoutine);
}

int WINAPI hook_WSASend(SOCKET s,LPWSABUF lpBuffers,DWORD dwBufferCount,LPDWORD lpNumberOfBytesSent,DWORD dwFlags,LPWSAOVERLAPPED lpOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{


for(size_t x = 0; x < lpBuffers->len;++x)
{
if(lpBuffers->buf[x]!=NULL)
{
sprintf(Byte,"%x",lpBuffers->buf[x]);
cout<<Byte<<" ";
}}
cout<<endl;

return o_WSASend(s,lpBuffers,dwBufferCount,lpNumberOfByte sSent,dwFlags,lpOverlapped,lpCompletionRoutine);
}


BOOL APIENTRY DllMain(HMODULE hModule, DWORD Ergebnis, LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(lpReserved);
switch(Ergebnis)
{
case DLL_PROCESS_ATTACH:
MessageBox(0,"Injection erfolgreich","bla",MB_OK);

AllocConsole();
freopen("conin$", "r", stdin);
freopen("conout$", "w", stdout);
freopen("conout$", "w", stderr);

//o_WSASend = (t_WSASend)DetourFunction((PBYTE)GetProcAddress(Ge tModuleHandle("ws2_32.dll"), "WSASend"), (PBYTE)hook_WSASend,5);
o_WSARecv = (t_WSARecv)DetourFunction((PBYTE)GetProcAddress(Ge tModuleHandle("ws2_32.dll"), "WSARecv"), (PBYTE)hook_WSARecv,5);

break;
}
return true;
}
Ein programm dazu wäre dazu wireshark gibts bei google umsonst
Sir_Killer is offline  
Thanks
1 User
Old 02/04/2010, 15:17   #9
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
uiuiui, ich sehe schon, mein c++ können ist offentsichtlich stark begrenzt... hab' mich bisher nur in vb mit apis beschäftigt. Ich testes mal, danke schonmal

EDIT: sooo, wireshark funktioniert klasse... bekomme ca 100 Pakete pro Sekunde.. xD
habe bisher als Filter nur die IP vom Pserver eingestellt. Kannst du mir noch paar Tipps geben?
Reeek is offline  
Old 02/04/2010, 16:18   #10
 
elite*gold: 0
Join Date: Jan 2009
Posts: 111
Received Thanks: 91
(tcp.port == 23000 || tcp.port == 28000 || tcp.port == 15400)

was für tipps?^^
Sir_Killer is offline  
Old 02/04/2010, 16:35   #11
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
(tcp.port == 23000 || tcp.port == 28000 || tcp.port == 15400) , verstehe ich net xD
also, ich bin bei wireshark jetzt so weit: ich hab' die IP von flyff, hab only diese ip sniffen. jetzt logg' ich mich ein: ca 500 pakete gesnifft... caste den Skill... weitere 50... also ich will die Zahl begrenzen...
Reeek is offline  
Old 02/04/2010, 17:35   #12
 
elite*gold: 0
Join Date: Jan 2009
Posts: 111
Received Thanks: 91
trag das in die filter ein bzw trag nur tcp.port==15400 ein
Sir_Killer is offline  
Old 02/04/2010, 18:06   #13
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
so... wenn ich tcp == 15400 eingebe, findest es zuviele, wenn ich tcp.port==15400 eingebe garkeine mehr q.q
Reeek is offline  
Old 02/04/2010, 19:57   #14
 
elite*gold: 0
Join Date: Jan 2009
Posts: 111
Received Thanks: 91
Es sind viele :P es werden mindestens 10 pro sekunde sein^^
Sir_Killer is offline  
Old 02/05/2010, 14:51   #15
 
Reeek's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 1,304
Received Thanks: 485
argh... okay, das erklärt einiges xD
wenn ich es jetzt schaffe, die Adresse des Skills beim senden an den Server zu sniffen, wie kann ich das in ein Script einbauen?
Reeek is offline  
Reply


Similar Threads Similar Threads
Interface Mods
05/10/2008 - Conquer Online 2 - 5 Replies
Okey, i know it can be done i've seen it. How do you edit the conquer online interface? I've looked through the data file and found a few files; but none of the ones i'm looking for. I want to chance the spell icons, the action icons aswell as the rest of the in-game interface. Any modders know where these are located?



All times are GMT +2. The time now is 03:21.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.