Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Kal Online
You last visited: Today at 05:11

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

Advertisement



[Help] Bot programmiern

Discussion on [Help] Bot programmiern within the Kal Online forum part of the MMORPGs category.

Reply
 
Old   #1
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
[Help] Bot programmiern

jo moin ersma,
ich hatte vor als nächstes mich an einem bot zu versuchen.
das heißt ein packetbot.
---
ich hab mir das so vorgestellt:
wenn ein mob erscheint (0x33) dann soll er zum mob hinlaufen (0x14) beim mob anhalten (0x15) und das mob attacken (0x0f). wenn 0x0f reinkommt wird der attackhack "in kraft" gesetzt und er setzt stagger hinterher (0x10), mob down>behead (0x10), items>pick (0x20). so weit so gut.
in der theorie einfach. in der praxis "schwer"...wenn ich die packets für laufen sniffe bekomme ich immer so etwas raus wie
PHP Code:
PACKET TYPE0x14 FORMATbbb
2
0
3
13
4
:-
nur leider kann ich mit den zahlen nix anfangen. keine coordinaten etc.
ich weiß auch nicht ob das so in der praxis hinhaut. in der theorie klingt das ja eig. vernünftig oder? mob erscheint, laufen, stehen, attacken, beheaden, picken, nächstes mob. weiß einer von euch was die zahlen bei 0x14, 0x15 bedeuten? währen es coordinaten hätt ich das mit den coords von den mobs gemacht sprich sowas (0x14, "bbb", MobX, MobY, MobZ???). oder so ähnlich.
wie gesagt, wenn einer von euch weiß was die bytes bei 0x14, 0x15 bedeuten wäre ich überglücklich wenn mir das einer verraten würde :P.
MfG
Diamond
kalhacker9000 is offline  
Thanks
1 User
Old 03/23/2009, 19:57   #2
 
elite*gold: 0
Join Date: Oct 2007
Posts: 474
Received Thanks: 159
Quote:
Originally Posted by kalhacker9000 View Post
jo moin ersma,
ich hatte vor als nächstes mich an einem bot zu versuchen.
das heißt ein packetbot.
---
ich hab mir das so vorgestellt:
wenn ein mob erscheint (0x33) dann soll er zum mob hinlaufen (0x14) beim mob anhalten (0x15) und das mob attacken (0x0f). wenn 0x0f reinkommt wird der attackhack "in kraft" gesetzt und er setzt stagger hinterher (0x10), mob down>behead (0x10), items>pick (0x20). so weit so gut.
in der theorie einfach. in der praxis "schwer"...wenn ich die packets für laufen sniffe bekomme ich immer so etwas raus wie
PHP Code:
PACKET TYPE0x14 FORMATbbb
2
0
3
13
4
:-
nur leider kann ich mit den zahlen nix anfangen. keine coordinaten etc.
ich weiß auch nicht ob das so in der praxis hinhaut. in der theorie klingt das ja eig. vernünftig oder? mob erscheint, laufen, stehen, attacken, beheaden, picken, nächstes mob. weiß einer von euch was die zahlen bei 0x14, 0x15 bedeuten? währen es coordinaten hätt ich das mit den coords von den mobs gemacht sprich sowas (0x14, "bbb", MobX, MobY, MobZ???). oder so ähnlich.
wie gesagt, wenn einer von euch weiß was die bytes bei 0x14, 0x15 bedeuten wäre ich überglücklich wenn mir das einer verraten würde :P.
MfG
Diamond
du brauchst die mobid auch dazu sonst wird er nicht atken bzw weiss nicht was
hello123456 is offline  
Thanks
1 User
Old 03/23/2009, 20:10   #3
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
ja ich weiß das ich die mobID brauch :P das ist ja kein problem....
unter case 'd'
mobID = temp
mhmm...omg mir fällt nich ein was das sein könnte xD ... und das ist eig. das wichtigste/schwierigste...der rest ist ja nich wirklich schwer


edit:
ich werde das jetzt mal wie bei pick item versuchen mit X Coordinate/32 und Y Coordinate/32

edit2:
FAILED.....ka dann xD....

edit3:
ich weiß der code funktioniert nicht, ist nur damit ihr ne bessere vorstellung von dem habt was ich meine:
PHP Code:
if ((buf2[2] == 0x33) && (bot == 1))
{
    
SendPacket(0x14,"bbb",0,Mob[MonsterI].X/32,Mob[MonsterI].Y/32);
    
printf("walk now...vllt...oder so xD\n");
    
SendPacket(0x15,"bbb",0,Mob[MonsterI].X/32,Mob[MonsterI].Y/32);
    
SendPacket(0x0f,"bdd",1,mobID,lastweapon);
    
autopick=1;
    
autobehead=1;
    if (
type == 0x0f)
    {
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
    else
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
    }
    

kalhacker9000 is offline  
Old 03/23/2009, 20:38   #4
 
BorSti's Avatar
 
elite*gold: 20
Join Date: Feb 2008
Posts: 993
Received Thanks: 173
<-- beste hilfe

ich hoffe mal du probierst es aufn p server und nicht wieder gleich auf int


btw in deiner source sehe ich nicht dass du die x bzw y coordinaten oder die id überhaupt ausliest

außerdem ist die if schleife so falsch ...... du hast wieder die klammern vergessen ... und welchen sinn die gerade hat sehe ich auch nicht wenn normal attack dann stagger wenn nicht stagger ?!
BorSti is offline  
Old 03/23/2009, 20:40   #5
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
ja das mit x und y ist dabei hab ich nur nicht hier mit eingefügt
die klammern okay xD habs in editor reingeschrieben und schnell hier eingefügt weil ich nich so zeit habe.
ich versuche es aufm pserver....und hoffe dann es irgendwann aufm int durchsetzen zu können :P
danke für deine antwort ^^
kalhacker9000 is offline  
Old 03/23/2009, 20:57   #6
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
das ist echt gut BorSti...danke ^^ :P
ich werd mir das mal angucken, und nochmal, und nochmal, und soviele nochmals bis ichs richtig verstanden habe. und dann umschreiben auf meine bedürfnisse...xD...ist zwar dann wieder copy+paste...aber naja so lernt man auch.
releasen werde ich denke ich mal den bot eh nicht. wenn dann nich hier im forum wo es jeder kriegen kann.
das ist jetzt eher nur zum lernen gedacht eig.
kalhacker9000 is offline  
Old 03/23/2009, 23:07   #7
 
Mahatma's Avatar
 
elite*gold: 281
Join Date: Oct 2007
Posts: 6,248
Received Thanks: 887
PHP Code:
PACKET TYPE0x14 FORMATbbb
2
0
3
13
4
:-
die 3 zahlen sind das wieviel du in x|y|z coords läuft
nehmen wir an du stehst @ coordinate 100|100|100
dann wird 0x15 0 13 -4 gesendet...
dann biste auf den coordinaten 100|113|96

ahja...@borsti
Quote:
außerdem ist die if schleife so falsch ......
das es ne if schleife gibt wär mir zumindest neu :P

aber den sinn seiner if anweisung versteh ich auch net ganz^^


Greeeeeetz
Mahatma
Mahatma is offline  
Old 03/23/2009, 23:25   #8
 
elite*gold: 0
Join Date: May 2008
Posts: 106
Received Thanks: 11
Quote:
Originally Posted by Mahatma View Post
PHP Code:
PACKET TYPE0x14 FORMATbbb
2
0
3
13
4
:-
die 3 zahlen sind das wieviel du in x|y|z coords läuft
nehmen wir an du stehst @ coordinate 100|100|100
dann wird 0x15 0 13 -4 gesendet...
dann biste auf den coordinaten 100|113|96

ahja...@borsti

das es ne if schleife gibt wär mir zumindest neu :P

aber den sinn seiner if anweisung versteh ich auch net ganz^^


Greeeeeetz
Mahatma
auch IF-verzweigung genannt .. aber if-schleife ... nenene ^^
Shalava is offline  
Old 03/23/2009, 23:56   #9
 
BorSti's Avatar
 
elite*gold: 20
Join Date: Feb 2008
Posts: 993
Received Thanks: 173
yayaya xD

if ist keine schleife? naja dann --- vergleicht mal ne normale schleife mit if hin oder her - bester vergleich ne do - while SCHLEIFE - name hin oder her :P funktion is die selbe

what ever - diamond neue fragen? immer her damit

BorSti is offline  
Old 03/24/2009, 13:39   #10
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
also ich find das ist verständlich xD ... erscheint ein mob (Type == 0x33) und der bot ist an (bot == 1) dann soll er erstmal laufen, behead an, pick an...das mob attacken. wenn er das mob normal attacked (0x0f) wird der attackhack angemacht xD ... ich mein das mit if kram hab ich nich so drauf wie gesagt war schnell einfachi n editor geschrieben aber eig. dürfte das doch verständlich sein....oder?
ich teste das jetzt alles mal aufm pserver...da sind so viele sachen drin die ich bis jetzt gesucht habe danke
kalhacker9000 is offline  
Old 03/24/2009, 14:40   #11
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
oder hätte das so aussehen müssen?
PHP Code:
if ((buf2[2] == 0x33) && (bot == 1))
{
    
SendPacket(0x14,"bbb",0,Mob[MonsterI].X/32,Mob[MonsterI].Y/32);
    
printf("walk now...vllt...oder so xD\n");
    
SendPacket(0x15,"bbb",0,Mob[MonsterI].X/32,Mob[MonsterI].Y/32);
    
SendPacket(0x0f,"bdd",1,mobID,lastweapon);
    
autopick=1;
    else if(
type == 0x0f)
    {
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
    else
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
        
SendPacket(0x10,"bdd",3,1,mobID);
    }
    

kalhacker9000 is offline  
Old 03/28/2009, 11:31   #12
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
bot "geht"
also ich hab bis jetzt nur wenig sachen zum laufen gebracht ich hab viel aus bakabugs kalhack11 genommen...denke mal das sollte kein problem sein da ich eh nicht vorhabe einen bot zu releasen...jedenfalls fürs erste
das ist nur zum üben um das iwann aufm int realisieren zu können...
er zeigt alles an die x coordinaten, die y coordinaten alles
das ja auch noch kein problem
gut wenn ich jetzt in chat /start eingebe dann gibt er aus "Sucht Mob..." ... sobald ein mob erscheint steht da "läuft zu mob..." und dann schließt sich kal automatisch....kocp ist r10....kocp ist aus, hs ist aus. einer ne idee woran das liegen könnte? den walk to mob code hab ich von bakabug rausgenommen....
PHP Code:
                if (botstate == 2)
                {
                    
//walk
                    
int difx=Player[0].X-Mob[target].X;
                    
int dify=Player[0].Y-Mob[target].Y;
                    
int difz=Player[0].Z-MyHeightDetour(Player[0].X,Player[0].Y);
                    
float range=(difx*difx+dify*dify)*1.0;
                    if (
sqrt(range) < 50.0)
                    {
                        
botstate=3//attack
                        
printf("attack the MOB..\n");
                        
lastattack=GetTickCount()-800;
                    }
                    else
                    {
                        
//move
                        
signed char tempx=-(difx/sqrt(range))*30;
                        
signed char tempy=-(dify/sqrt(range))*30;
                        
signed char tempz=-(difz/sqrt(range))*30;
                        if (
playerx 1)
                        {
                            if (
lastattack<GetTickCount()-200)
                            {
                                
SendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz);
                                
lastattack=GetTickCount();
                            }
                        }
                        else
                            
SendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz); 
                    }
                } 
edit:
ich glaub ich weiß warum....wenn das der fehler ist bestraf ich mich gleich selber für meine dummheit
da der server off ist kann ich das nich testen:
PHP Code:
 #include <math.h> 
ka ob das jetzt was damit zu tun hat math interpretier ich als "mathe" sprich wenn er playerx/mobx (etc) ausrechnet.
ka ob ich da jetzt richtig liege
kalhacker9000 is offline  
Old 03/28/2009, 13:05   #13
 
BorSti's Avatar
 
elite*gold: 20
Join Date: Feb 2008
Posts: 993
Received Thanks: 173
Quote:
Originally Posted by kalhacker9000 View Post
PHP Code:
                if (botstate == 2)
                {
                    
//walk
                    
int difx=Player[0].X-Mob[target].X;
                    
int dify=Player[0].Y-Mob[target].Y;
                    
int difz=Player[0].Z-MyHeightDetour(Player[0].X,Player[0].Y);
                    
float range=(difx*difx+dify*dify)*1.0;
                    if (
sqrt(range) < 50.0)
                    {
                        
botstate=3//attack
                        
printf("attack the MOB..\n");
                        
lastattack=GetTickCount()-800;
                    }
                    else
                    {
                        
//move
                        
signed char tempx=-(difx/sqrt(range))*30;
                        
signed char tempy=-(dify/sqrt(range))*30;
                        
signed char tempz=-(difz/sqrt(range))*30;
                        if (
playerx 1)
                        {
                            if (
lastattack<GetTickCount()-200)
                            {
                                
SendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz);
                                
lastattack=GetTickCount();
                            }
                        }
                        else
                            
SendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz); 
                    }
                } 
MyHeightDetour <--- die funktion hat mir immer nen close gebracht....frag mich aber nicht wie ich es gelöst habe zulange her





die beiden threads sind auch ganz hilfreich!

achja und öhm nimm mal bei "Ubbb" das U weg

also die z coordinate muss sich ändern - temp und masken haben schon nen gewissen höhen unterschied
BorSti is offline  
Old 03/28/2009, 13:18   #14
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342
also erst wurde MyHeightDetour immer als Fehler angezeigt:
Funktion nimmt keine 2 Argumente oder sowas in der Art...dann hab ich
PHP Code:
int Naked MyHeightDetour(DWORD x,DWORD y)

{

        
__asm

        
{

          
push    ebp

      mov     ebp
esp

      sub     esp
94h

        
}

        
//show info

        //printf("Height 0x%08x 0x%08x %f\n ",x,y);

        
__asm

        
{

          
jmp     MyHeightBack //back to original

        
}


hinzugefügt und dann kam keine Fehlermeldung mehr....vllt hast du recht und es closed sich deswegen....ich guck ma ein wenig weiter...aber jetzt ersma bett bin total auf schmerzmittel gestern operiert worden xD....
danke für deine antwort ^^

edit:
mir ist aufgefallen das die Z: coordinate sich bei mir nie ändert...das heißt wenn erst 19630 für temp da steht und ich zu den masken laufe steht immer noch 19630 da
PlayerZ-MyHeightDetour(blablabla) dürfte dann ja fürn arsch sein oder?
allgemein iwi versteh ich den sinn nicht ganz...ich werde mir den code wohl ncoh ein paar mal durchlesen müssen ...
-->bett
kalhacker9000 is offline  
Old 03/29/2009, 13:21   #15
 
kalhacker9000's Avatar
 
elite*gold: 0
Join Date: Dec 2006
Posts: 648
Received Thanks: 342

laufen tut er mittlerweile....bloß so schnell das ich innerhalb von 3 sekunden über ganz kal laufe
aber sehen tu ich das nich
hab anstatt Player[0].Z-MyHeightDetour(blabla) einfach nur Player[0].Z-(blabla) genommen. jetzt ist aber das problem das sich die Z. Koordinate nie verändert. Wenn ich in temp stehe und mich nach naroot teleportiere steht immer noch 19630 da....auch bei /test
PHP Code:
                  if ((i==1)&&((type==0x14)||(type==0x15)))

                          
Player[0].X+=(signed char)va_argargsDWORD);

                  if ((
i==2)&&((type==0x14)||(type==0x15)))

                          
Player[0].Y+=(signed char)va_argargsDWORD);

                  if ((
i==3)&&((type==0x14)||(type==0x15)))

                          
Player[0].Z+=(signed char)va_argargsDWORD); 
bitte bitte bitte helft mir ;D

PHP Code:
                    printf("Search MOB..\n");
                    
//SEARCH NEARES MOB !
                    
int nearest=65530000;
                    
int id=-1;
                    
int i;
                    for (
i=0;i<5;i++)
                        if (
Mob[i].!= 0)
                        {
                            
//MOB HERE CALC NEAR !
                            
int difx=start_x-Mob[i].X;
                            
int dify=start_y-Mob[i].Y;
                            
//
                            
int first=difx*difx;
                            
int second=dify*dify;
                            
int range=first+second;
                            if (
nearest range)
                            {
                                
id=i;
                                
nearest range;
                            }
                        }

                    if (
id!=i)
                    {
                        
//MOB FOUND
                        
target=id;
                        
botstate=2//walk to it !
                        
printf("Walk to MOB..\n");
                    }
                }
 
                if (
botstate == 2)
                {
                    
//WALK TO SELECTED MOB !!
                    
int difx=Player[0].X-Mob[target].X;
                    
int dify=Player[0].Y-Mob[target].Y;
                    
int difz=Player[0].Z-(Player[0].X,Player[0].Y);
                    
float range=(difx*difx+dify*dify)*1.0;
                    if (
sqrt(range) < 50.0)
                    {
                        
botstate=3
                        
printf("attack the MOB..\n");
                        
lastattack=GetTickCount()-800;
                    }
                    else
                    {
                        
                        
signed char tempx=-(difx/sqrt(range))*30;
                        
signed char tempy=-(dify/sqrt(range))*30;
                        
signed char tempz=-(difz/sqrt(range))*30;
                        if (
playerx 1)
                        {
                            if (
lastattack<GetTickCount()-200)
                            {
                                
SendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz);
                                
lastattack=GetTickCount();
                            }
                        }
                        else
                            
SendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz);
                    }
                } 
kalhacker9000 is offline  
Reply




All times are GMT +1. The time now is 05:13.


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.