KOSTENLOSE REGISTRIERUNG - FREE REGISTER
  • Willkommen, Gast!
  • Freitag, 19. April 2024, 16:40:52
Position: Home » Grand Theft Auto: San Andreas » Multiplayer » Scripte und kleine Codes » Distanz

Willkommen im GTAvision.com Forum

Du bist noch nicht bei uns angemeldet. Wenn das dein erster Besuch bei uns ist, so kannst du die wichtigsten Funktionen des Boards in der FAQ nachlesen. Um Beiträge zu schreiben oder neue Themen zu erstellen musst du in fast jedem Forum registriert und eingeloggt sein. Dies gilt nicht bei den Newskommentaren, dort können auch Gäste etwas schreiben ohne sich vorher registrieren zu müssen. Damit du Beiträge lesen kannst, musst du dir erst ein Forum aussuchen welches dich interessiert, z.B. GTA V - Allgemeines, dann klickst du auf ein Thema das dich interessiert z.B. "Allgemeine GTA V Plauderecke" und schon kannst du die Beiträge lesen. Um im genannten Thema zu antworten, musst du dich allerdings vorher eingeloggt haben. Viel Spaß in unserem Forum, wünscht das gesamte GTAvision.com Team.

Follow @GTAvision
Grand Theft Auto: San Andreas
Thema: Distanz [Seite 1 2 3 ]  

Kein neuer Beitrag 12.11.2009, 19:49
Beitrag #1   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

Hi

Ich wollte ma fragen wie ich die distanz zwichen 2 punkten auf der karte rausbekommen kann. Ich
hatte volgende theorie:

Pos 1 = X + Y + Z = XYZ

Pos 2 = X2 + Y2+ Z2 = XYZ2 oda so

Dann die größere von den beiden zusammengemixxten poshaufen minus die kleiner = distanz zwichen den
beiden punkten.
Das stimmt aber leider nit

Kann mir einer helfen wie ich das machen kann? in pawno

*edit: oda zumindestens sagen wie ich das am besten rechnen kann/muss, den rest kann ich dann
alleine.

MFG, RoB
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 12.11.2009, 22:56 von Robdeflop1.

Kein neuer Beitrag 13.11.2009, 12:52
Beitrag #2   

Nico
Vize-Boss
* * * * * * * * * O O
Registrierung: 12.04.2006, 10:44
Beiträge: 1334

d = SQRT((x2-x1)^2+(y2-y1)^2+(z2-z1)^2)

Gruß Nico

Kein neuer Beitrag 13.11.2009, 15:10
Beitrag #3   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

HI

Schonma danke^^
Wofür steht das SQRT?
Meinst du damit floatsqroot?

MFG, RoB
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 13.11.2009, 15:14 von Robdeflop1.

Kein neuer Beitrag 13.11.2009, 15:56
Beitrag #4   

Recycler
Vize-Boss
* * * * * * * * * O O
Registrierung: 29.12.2006, 11:54
User-Info: nicht mehr da
Beiträge: 2146

Ja, floatsqroot ist an dieser Stelle die richtige Funktion (Quadratwurzel), wenn auch langsam. Eine
mögliche Implementierung ohne floatpower (ebenfalls eine langsame Funktion) wäre zum Beispiel:

Code:
1
floatsqroot(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)) + ((z1 - z2) * (z1 - z2)));


Einfache Multiplikation der Faktoren.

MfG
Recycler
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 13.11.2009, 15:57 von Recycler.

Kein neuer Beitrag 13.11.2009, 16:45
Beitrag #5   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

Hi

Funzt das so recycler??
Ich dachte das muss mit wurzel gemacht werden, sonst bekommt man iwie probleme bei diagonalen
strecken.

Un da steht nirgendwo floatpower^^

MFG, RoB

Kein neuer Beitrag 13.11.2009, 17:17
Beitrag #6   

Recycler
Vize-Boss
* * * * * * * * * O O
Registrierung: 29.12.2006, 11:54
User-Info: nicht mehr da
Beiträge: 2146

Das funktioniert wie in dem Beispiel. Und hier kommt die Quadratwurzel zum Einsatz, meinetwegen
auch die "normale" Wurzel als Umkehrung des Quadrats x².

floatpower benutze ich in dem Code nicht und das ist wie gesagt eine Verbesserung. Viele Scripte
benutzen diese Potenzfunktion und nehmen dann als Exponenten die 2. Equivalent habe ich den Faktor
mit sich selbst multipliziert. Das ist schneller als floatpower mit 2, jedenfalls in PAWN.

MfG
Recycler

Kein neuer Beitrag 14.11.2009, 16:45
Beitrag #7   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

Hi

Achsöö^^
Danköö, ich hätte in mathe besser aufpassen sollen :D
Vielleicht hab ich demnächst nochma ne frage zu dem thema, bin nämlich grad selber n km/h tacho am
machen, den ich nit soo einfach finde^^
Aber jetzt wo ich ja die formel hab sollte es eig kein prob sein.

MFG, RoB

Kein neuer Beitrag 14.11.2009, 18:07
Beitrag #8   

Recycler
Vize-Boss
* * * * * * * * * O O
Registrierung: 29.12.2006, 11:54
User-Info: nicht mehr da
Beiträge: 2146

Seit SA-MP 0.3 gibt es eine extra Funktion um die Geschwindigkeit des Spielers zu ermitteln. Der
Distanzalgorithmus ist nicht mehr nötig. So etwas sollte reichen:

Code:
1
speed = (X + Y + Z) * 100 * 1.61


(ungetestet)

Die Konstanten am Ende sind irgendwelche schlauen Werte die die GTA Einheit in eine halbwegs
realistische KM/H Einheit umrechnen. Ohne 1.61 hat man MPH. X, Y und Z sind die Werte aus
GetPlayerVelocity bzw. GetVehicleVelocity.

MfG
Recycler
Dieser Beitrag wurde insgesamt 3 mal editiert. Das letzte Mal 14.11.2009, 18:28 von Recycler.

Kein neuer Beitrag 14.11.2009, 18:36
Beitrag #9   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

achsoo :D

Wusste ich noch garnit.
Also rechnet der das schon mit wurzel usw automatisch oda was?

MFG, RoB

*EDIT:

Was is daran falsch?:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public TachoUpdate(playerid)
{
      for(new i = 0;i<MAX_PLAYERS;i++)
      {
         if(IsPlayerInAnyVehicle(playerid))
         {
             Tacho2 = TextDrawCreate(300, 200, "Km/h:---");
            TextDrawLetterSize(Tacho2, 0.4, 1.1);
            TextDrawFont(Tacho2, 1);
            TextDrawSetShadow(Tacho2, 2);
            TextDrawSetOutline(Tacho2,1);
            
            
            new vid = GetPlayerVehicleID(playerid);
             new Float:X,Float:Y,Float:Z;
             new Float:newX,Float:newY,Float:newZ;
            GetVehiclePos(vid, X, Y, Z);
            
         
             new Float:distance,geschwindigkeit;
            distance = floatsqroot(((lastX[playerid]-X) * (lastX[playerid]-X)) + ((lastY[playerid]-Y) * (lastY[playerid]-Y)) + ((lastZ[playerid]-Z) * (lastZ[playerid]-Z)));
         
            geschwindigkeit = floatround(distance * 22000);
         
            new TachoString2[100];

              format(TachoString2,sizeof(TachoString2),"Km/h: %d", floatround(geschwindigkeit / 64000));
              TextDrawSetString(Tacho2, TachoString2);
              TextDrawShowForPlayer(playerid, Tacho2);

            TachoTacho(playerid);

              GetVehiclePos(vid, newX, newY, newZ);
              lastX[playerid] = newX;
              lastY[playerid] = newY;
              lastZ[playerid] = newZ;
         }
      }
   return 1;
}


ich hatte es vorher auch iwie so, aber nie gehts nimmer. Hab iwas geändert, weiß aber nichmehr was.
Der Server schmiert ab wenn ich ig gehe un in ein car einsteige.

MFG, RoB
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 14.11.2009, 18:47 von Robdeflop1.

Kein neuer Beitrag 14.11.2009, 18:49
Beitrag #10   

Recycler
Vize-Boss
* * * * * * * * * O O
Registrierung: 29.12.2006, 11:54
User-Info: nicht mehr da
Beiträge: 2146

Lass doch diese alte Berechnung weg und mach es wie ich es vorgeschlagen habe. Das ist um einiges
schneller und einfacher!

MfG
Recycler

Kein neuer Beitrag 14.11.2009, 18:55
Beitrag #11   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

ok

Muss ich das dann auch mit nem timer usw machen?

MFG, RoB

Kein neuer Beitrag 14.11.2009, 18:58
Beitrag #12   

Recycler
Vize-Boss
* * * * * * * * * O O
Registrierung: 29.12.2006, 11:54
User-Info: nicht mehr da
Beiträge: 2146

Ja, das musst du dann wohl auch mit einem Timer machen. Nur die Berechnung ist einfacher geworden.

MfG
Recycler

Kein neuer Beitrag 14.11.2009, 18:58
Beitrag #13   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

ok thx, ich werds dann so machen :)

MFG, RoB

Kein neuer Beitrag 14.11.2009, 19:16
Beitrag #14   

Robdeflop1
Obergangster
* * * * * * O O O O O
Registrierung: 13.07.2009, 17:51
Script Editor: Pawno
Beiträge: 197

HI

Nu hab ich das raus:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public TachoUpdate(playerid)
{
      for(new i = 0;i<MAX_PLAYERS;i++)
      {
         if(IsPlayerInAnyVehicle(playerid))
         {
             new TachoString2[256];
             new Float:X, Float:Y, Float:Z;
             GetVehicleVelocity(GetPlayerVehicleID(playerid), X, Y, Z);
            new Float:geschwindigkeit = (X + Y + Z) * 100 * 1.61;
            format(TachoString2,sizeof(TachoString2),"Km/h: %d", floatround(geschwindigkeit));
            TextDrawSetString(Tacho2, TachoString2);
                TextDrawShowForPlayer(playerid, Tacho2);
         }
      }
   return 1;
}


Aber das funzt net ganz^^
Da steht jenachdem in welche richtung man fährt n minus vor der geschwindigkeit.
Der timer is 0,5 sekunden.

*EDIT: Un bei diagonaler fahrrichtung gibts auch probleme, da zeigt der an dass man langsamer
fährt, manchmal sogar 0.


MFG, RoB
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 14.11.2009, 19:31 von Robdeflop1.

Kein neuer Beitrag 14.11.2009, 21:08
Beitrag #15   

Recycler
Vize-Boss
* * * * * * * * * O O
Registrierung: 29.12.2006, 11:54
User-Info: nicht mehr da
Beiträge: 2146

Scheint doch nicht so zu funktionieren wie ich das dachte. Hier ist die richtige Formel zur
Berechnung der Geschwindigkeit:

Code:
1
speed = floatsqroot(X*X + Y*Y + Z*Z) * 100 * 1.61


Passiert mir immer wieder und ist wohl der schlimmste Fehler den man machen kann -> das Quadrat
einer Summe ist nicht gleich der Summe der Quadrate :shock:

MfG
Recycler
Dieser Beitrag wurde insgesamt 1 mal editiert. Das letzte Mal 14.11.2009, 21:15 von Recycler.

Druckansicht

n/a n/a 1 2 3     (Anzeige: 1 – 15; Insgesamt: 33) Weiter Letzte Seite
Toggle Ähnliche Themen zu „Distanz“
  Antworten Aufrufe Themeneröffnung Letzter Beitrag
Es wurden keine Themen gefunden.
  • 0.039857 Sek., 25 DB-Zugriffe, 2.177 MiB
  • Powered by Boardsolution v1.45
GTAvision.com :: Forumregeln :: FAQ :: Impressum :: Kontakt :: RDRvision.com :: LANOIREvision.com :: MaxPayneVision.com
NetVisionWork.NET
.: © 2006-2014 by GTAvision.com :.

Rockstar GamesTake-Two Interactive Deutschland

Free Grand Theft Auto Downloads