Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2 > Diablo 2 Programming
You last visited: Today at 14:27

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

Advertisement



Release: Spontane sinnlose Idee! Randomized Teleport!

Discussion on Release: Spontane sinnlose Idee! Randomized Teleport! within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
njomnjomnjom's Avatar
 
elite*gold: 20
Join Date: Mar 2009
Posts: 1,356
Received Thanks: 736
Release: Spontane sinnlose Idee! Randomized Teleport!

Imitiert einen Spieler der mit einzelnen Klicks auf sein Ziel zuteleportiert anstatt im Bot-Style direckt drauf zuzuhechten.

Viel spaß beim ausprobieren und zuschauen.
(K.A. ob es auf 3.0 version läuft, sollte aber denke ich.)
Quote:
function NTM_TeleportTo(x, y)
{
var _destx, _desty;

_destx = x;
_desty = y;

for(var i = 0 ; i < 20 ; i++)
{

_destx = x + Random(-3, 3);
_desty = y + Random(-3, 3);


NTC_DoCast(54, NTC_HAND_RIGHT, _destx, _desty);


var _TeleX;
var _TeleY;
var _TeleZ;
_TeleX = Random(50, 100);
_TeleY = Random(101, 150);
_TeleZ = Random(_TeleX, _TeleY);

NTC_Delay(_TeleZ);

if(Math.abs(me.x-_destx) < 4 && Math.abs(me.y-_desty) < 4)
return true;
}

return false;
}

[AHH:]
Das 3.0 "MyCS_CatchShrine();" fehlt müsst ihr halt noch reinbasteln.

Retry ist auf 20 mal gesetzt. Beim 3.0er ist es auf 15, aber ich denke bei einer Zielortabweichung von 6 x/y ist 20 eher angemessen.
njomnjomnjom is offline  
Old 07/28/2010, 19:01   #2
 
sataan1337's Avatar
 
elite*gold: 0
Join Date: Dec 2008
Posts: 628
Received Thanks: 108
ich wage mich zu erinnern mal gehört zu haben das genau das die schwachstelle vom d2nt gegenüber dem kuk-bot gewesen wäre ^^ (fehlinformation vorbehalten ^^) - von daher vllt ja garnicht soo sinnlos

werds mir mal anschaun ^^
sataan1337 is offline  
Old 07/28/2010, 19:09   #3
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,654
Naja...

Ohne dir zu Nahe treten zu wollen: Ich finde zum einen das Gesamtkonzept sinnlos, zum anderen gefällt mir aber auch die Umsetzung nicht. Auf mich macht das einen etwas schlecht durchdachten Eindruck, wobei teilweise sogar klare Denkfehler drin sind.
Von dem Unding Quelltext als Zitat zu posten mal abgesehen...

Tut mir Leid für die herbe Kritik, dafür ist sie wenigstens ehrlich.

Lg
Muddy
Muddy Waters is offline  
Old 07/28/2010, 20:08   #4
 
njomnjomnjom's Avatar
 
elite*gold: 20
Join Date: Mar 2009
Posts: 1,356
Received Thanks: 736
Kein Stress Muddy, deswegen trägt der Thread ja auch den Titel "spontane sinnlose idee"


Das errechnen von 2 random Zahlen, aus deren Spannweite eine neue random Zahl entsteht anstatt einfach eine random zahl zu nehmen fand ich einfach witzig.

Es treten so vorallem Zahlen zwischen 75 und 125 auf.
Zahlen zwischen 50 und 75 sowie zwischen 125 und 150 sind jedoch ebenfalls möglich, jedoch seltener :P
[Edit:]
Moooment jetzt zweifle ich an mir selbst...
Das wäre nur der Fall wenn man die Summe der Randomzahlen nehmen würde.
Dann würden sich nach X Vorgängen die zahlen 75 und 125 klar abheben aber dadurch auch keine werte ausserhalb dieses bereiches zulassen.
Ach verflixt ich war noch nie gut in Mathe.
Kann mal einer mit Mathe-skillz bestätigen dass ich falsch liege?
Dann wäre bestätigt, dass meine "zufalls verzufallung" sinnlos wäre :P
(wobei ich mir jetzt recht sicher bin.)


Egal es funzt jedenfalls für meine Zwecke ideal.
Soll der PC halt die 2 zusätzlichen rechenoperationen durchführen stört ihn ja eh ned.
njomnjomnjom is offline  
Old 07/28/2010, 20:46   #5
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,654
Ich neige nicht zu Stress.

Dass es von der Laufzeit unerheblich ist stimmt zwar, trotzdem sind sinnlose Anweisungen nicht im Sinne einer intelligenten Programmierung.

Um dir die letzte Unsicherheit zu nehmen: Eine Zufallszahl sollte nach Möglichkeit für jede mögliche Zahl Wahrscheinlichkeiten aufweisen, die gleich verteilt sind. Eventuell hattest du dabei irgendwie die berühmt berüchtigte Gausssche Glockenkurve im Hinterkopf, tatsächlich sollte die Wahrscheinlichkeitsverteilung aber idealisiert die Form einer waagerechten Gerade haben.

Im übrigen ist die Zufallszahl bei dieser Art des Aufrufes mit an Sicherheit grenzender Wahrscheinlichkeit immer dieselbe, was ganz einfach daran liegt, dass Zufallszahlen von der aktuellen Anzahl an CPU Ticks abgeleitet werden, wobei der Durchlauf der Funktion hier aber so schnell ist, dass die Zufallszahl quasi immer mit der gleichen Basiszahl gebildet wird. Darum sind es auch auch eigentlich nur Pseudo-Zufallszahlen.

Was mich eigentlich eher stört ist die Tatsache, dass der aktuelle Aufbau nicht überprüft, ob ein Zielpunkt eine gültige Position ist. Normalerweise werden der Funktion NTM_TeleportTo() ja nur gültige Positionen übergeben, welche typischerweise "Wegpunkte" von Pfaden sind, die mithilfe von der globalen Funktion GetPath() berechnet werden. Du rechnest einfach Offsets ein, obwohl nicht sicher ist, ob die Zielkoordinaten überhaupt erreicht werden können. Rein theoretisch könnte auch durch die Offsets ein Zielpunkt ausgewählt werden, der ausserhalb der Teleport Reichweite liegt, sodass die Funktion fehlschagen würde (wobei das eher unwahrscheinlich ist).

Nimm obiges als kleinen Denkanstoß am Rande, ich finde den Sinn und Zweck des ganzen immernoch hochgradig fragwürdig, aber das soll ja wohl so sein.

Lg
Muddy
Muddy Waters is offline  
Old 07/28/2010, 21:40   #6
 
njomnjomnjom's Avatar
 
elite*gold: 20
Join Date: Mar 2009
Posts: 1,356
Received Thanks: 736
Quote:
Was mich eigentlich eher stört ist die Tatsache, dass der aktuelle Aufbau nicht überprüft, ob ein Zielpunkt eine gültige Position ist.
Das ist weder in der 3.0 version der NTMove in der funktion "teleportto"
Noch in den älteren versionen der NTMove in der funktion "teleportto" der fall.

Das wird anscheinend irgendwo anders gemacht.

In der älteren versionen ist es so, dass falls der Zielpunkt der eigentlich als erreichbar definiert wurde;
dennoch nicht erreichbar ist auf eine position von -2 bis +2 des zielpunktes in x und y richtung gewechselt wird.

In meiner funktion wird der Zielpunkt der eigentlich erreichbar sein sollte ebenfalls erhalten, dann wird jedoch immer! Ein punkt anvisiert der -3 bis 3 abseits dieses punktes liegt. Es ist möglich, dass dabei durch zufall auch der vorgegebene punkt getroffen wird.Da es natürlich vorkommt, dass ein auf diese weise gewählte punkt nicht erreichbar ist wird der gesammte vorgang durch die Schleife wiederholt, diesmal mit einer neuen zufallsabweichung.
Erst wenn 20 mal hintereinander ein punkt gewählt wurde der nicht erreichbar ist schlägt der desammte moveto vorgang fehl.
Die warscheinlichkeit dazu ist so gering das es noch nie vorkam, allerdingsist es tatsächlich mglich dass ein derartiger Fall eintritt, da hast du recht.



Ja für gewöhnlich wünscht man gleichmäßige zufallzzahlen, ich wollte ungleichmäßige, so wie oben funktioniert es aber ja leider dochnicht. Sie sind so wie meine Funktion aufgebaut ist immernoch gleichmäßig verteilt. ^^
Es ist auch nicht immer die gleiche zahl, dass ist klar an den unterschiedlich langen pausen beim telen zu erkennen. Besonders wenn man die delays noch erhöht (Habe ich anfangs getan um sicherzugehen, dass die zahl definitiv jedesmal anders ist.)





Hier zum vergleich die 3.0 version der teleportto und eine ältere Version.

Version 3.0:
Code:
function NTM_TeleportTo(x, y)
{
   NTC_CastSkill(54, NTC_HAND_RIGHT, x, y);
   MyCS_CatchShrine();
   for(var i = 0 ; i < 15 ; i++)
   {
      if(Math.abs(me.x-x) < 4 && Math.abs(me.y-y) < 4)
         return true;

      NTC_Delay(NTC_DELAY_FRAME);
      
      //MyCS_CatchShrine();
   }

   return false;
}
Und hier die eine ältere version welche mir persönlich viel besser gefällt :P
Code:
function NTM_TeleportTo(x, y)
{
	var _destx, _desty;

	_destx = x;
	_desty = y;

	for(var i = 0 ; i < 20 ; i++)
	{
		if((i % 10) == 0)
		{
			if(i > 0)
			{
				_destx = x + Random(-2, 2);
				_desty = y + Random(-2, 2);
			}

			NTC_DoCast(54, NTC_HAND_RIGHT, _destx, _desty);
		}

		NTC_Delay(NTC_DELAY_FRAME);

		if(Math.abs(me.x-_destx) < 4 && Math.abs(me.y-_desty) < 4)
			return true;
	}

	return false;
}

Sowohl bei der neuen version der funktion als auch bei der alten findet keine verifizierung des Zielpunkts statt.
Die ältere version hat sogar eine ausweichstrategie, falls etwas schiefläuft!

Bei der neuen version des bots kommt dann einfach "NTMOVETO failed oder NTMOVETOOBJECT failed" und derbot verlässt dann das game.
njomnjomnjom is offline  
Old 07/29/2010, 15:00   #7
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,654
Quote:
Originally Posted by njomnjomnjom View Post
Das ist weder in der 3.0 version der NTMove in der funktion "teleportto"
Noch in den älteren versionen der NTMove in der funktion "teleportto" der fall.

Das wird anscheinend irgendwo anders gemacht.

In der älteren versionen ist es so, dass falls der Zielpunkt der eigentlich als erreichbar definiert wurde;
dennoch nicht erreichbar ist auf eine position von -2 bis +2 des zielpunktes in x und y richtung gewechselt wird.

In meiner funktion wird der Zielpunkt der eigentlich erreichbar sein sollte ebenfalls erhalten, dann wird jedoch immer! Ein punkt anvisiert der -3 bis 3 abseits dieses punktes liegt. Es ist möglich, dass dabei durch zufall auch der vorgegebene punkt getroffen wird.Da es natürlich vorkommt, dass ein auf diese weise gewählte punkt nicht erreichbar ist wird der gesammte vorgang durch die Schleife wiederholt, diesmal mit einer neuen zufallsabweichung.
Erst wenn 20 mal hintereinander ein punkt gewählt wurde der nicht erreichbar ist schlägt der desammte moveto vorgang fehl.
Die warscheinlichkeit dazu ist so gering das es noch nie vorkam, allerdingsist es tatsächlich mglich dass ein derartiger Fall eintritt, da hast du recht.



Ja für gewöhnlich wünscht man gleichmäßige zufallzzahlen, ich wollte ungleichmäßige, so wie oben funktioniert es aber ja leider dochnicht. Sie sind so wie meine Funktion aufgebaut ist immernoch gleichmäßig verteilt. ^^
Es ist auch nicht immer die gleiche zahl, dass ist klar an den unterschiedlich langen pausen beim telen zu erkennen. Besonders wenn man die delays noch erhöht (Habe ich anfangs getan um sicherzugehen, dass die zahl definitiv jedesmal anders ist.)





Hier zum vergleich die 3.0 version der teleportto und eine ältere Version.

Version 3.0:
Code:
function NTM_TeleportTo(x, y)
{
   NTC_CastSkill(54, NTC_HAND_RIGHT, x, y);
   MyCS_CatchShrine();
   for(var i = 0 ; i < 15 ; i++)
   {
      if(Math.abs(me.x-x) < 4 && Math.abs(me.y-y) < 4)
         return true;

      NTC_Delay(NTC_DELAY_FRAME);
      
      //MyCS_CatchShrine();
   }

   return false;
}
Und hier die eine ältere version welche mir persönlich viel besser gefällt :P
Code:
function NTM_TeleportTo(x, y)
{
    var _destx, _desty;

    _destx = x;
    _desty = y;

    for(var i = 0 ; i < 20 ; i++)
    {
        if((i % 10) == 0)
        {
            if(i > 0)
            {
                _destx = x + Random(-2, 2);
                _desty = y + Random(-2, 2);
            }

            NTC_DoCast(54, NTC_HAND_RIGHT, _destx, _desty);
        }

        NTC_Delay(NTC_DELAY_FRAME);

        if(Math.abs(me.x-_destx) < 4 && Math.abs(me.y-_desty) < 4)
            return true;
    }

    return false;
}
Sowohl bei der neuen version der funktion als auch bei der alten findet keine verifizierung des Zielpunkts statt.
Die ältere version hat sogar eine ausweichstrategie, falls etwas schiefläuft!

Bei der neuen version des bots kommt dann einfach "NTMOVETO failed oder NTMOVETOOBJECT failed" und derbot verlässt dann das game.
Wie gesagt, die Pfadberechnung findet in der globalen Funktion GetPath() statt, welche ein zweidimensionales Array aus Koordinatenpaaren zurückliefert. Alle diese Koordinaten sind auch erreichbar.

Dadurch ist auch in der aktuellen Version alles in Butter, weil von vornherein sichergestellt ist, dass ein Ziel erreichbar ist.

Kannst dir ja mal anschauen, wie die Funktion NTM_TeleportTo() in der Funktion NTM_MoveTo() aufgerufen wird, ich denke das wird vom Verständnis her schon weiterhelfen.

Übrigens reicht für eine neue Zufallszahl ein Delay von einer Millisekunde.

Lg
Muddy
Muddy Waters is offline  
Reply


Similar Threads Similar Threads
Sinnlose Quest
06/19/2010 - Metin2 Private Server - 1 Replies
Hi,ich habe einen kleinen Hamachi p server und es gibt unzählige Quest die einfach Sinnlos sind. Kann man die vieleicht Abschalten.Und wie überstzt man die,die man braucht. Wäre nett wen einer weiter weiß MfG Konst:confused:
Spontane Spiele....
04/28/2010 - S4 League - 30 Replies
Hey.., Ich hab das schon in anderen Sections gesehen also wieso nicht auch hier? Jeder der Lust auf ein : 1on1 2on2 3on3 .. Hatt soll sich hier melden : D
Idee Release :D
12/27/2009 - S4 League - 34 Replies
Also ich release mal meine Idee/Vorschlag. Wenn jemand etwas releast, und nicht möchte das es in hände von noobs gelangt, schlage ich vor eine noobprotection einzubauen. z.B. indem man das Passwort 2-3fach cryptet beispielsweise Base64/Hex: NDc2Y2ZjNjM2Yjc3NzU2ZTczNjM2OA== Wer es entschlüsselt hat es verdient das tool etc. zu benutzen, wer nicht sollte es lieber lassen. Mann sollte immer die cryptart posten egal in welcher reihenfolge, da leute mit bisschen grips solches mit den...
Teleport hack *idee*
07/25/2008 - Metin2 - 11 Replies
also hallo elitepvpers :) neulich war ich im blauen reich aufm markt map1. als ich mich einloggen wollte ging das nich (immer kick auf jedem ch !!) dann GM gerufen und der hat mich von map 1 blaues reich ins eisland teleportet. so bisher konnte man ja mit den hacks nur innerhalb einer map teleporten. könnte man nicht wieder sich von einem GM wegteleportieren lassen. und dann die daten irgentwie auffangen so das man sich dann von überall ins eisland teleportieren kann ? wenn man das...



All times are GMT +1. The time now is 14:30.


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