Guten Abend. Ich habe eine kleine Frage: Ist es möglich die Wurzel zu ziehen, ohne floatsqroot zu benutzen?
Ich will in meinem Speedometer für die Geschwindigkeit keiten float...-Funktionen benutzen, weil mir gesagt wurde, dass diese laggen - was ich eigentlich auch bestätigen kann: MapIconStreamer laggt, wenn ich Distanzen mit float...-Funktionen berechne.
Wurzel ziehen ohne floatsqroot?
- Double-O-Seven
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Wurzel(4)=4^0,5=2
Wurzel ist das gleiche, wie hoch 0,5 -
x=(x+y) geteilt durch 2
y=Float_wert geteilt durch x -
Ich muss mal besser in mathe werden o.o ( und ich habe doch n 2 o.o )
naya cool wird mir auch helfen. -
Wurzel(4)=4^0,5=2
Wurzel ist das gleiche, wie hoch 0,5Das Hochzeichen habe ich schon versucht und dass ^0.5 die Wurzel ist, weiss ich auch.
Aber wenn ich new var=2^2; printf("%d",var); mache, printet der Server nur 0.
Das Problem hatte ich schon im englischen Forum gepostet, aber kam auf keine Lösung.---
#include <a_samp>
forward SpeedCheck();
forward PnP_OnGameModeInit();
forward PnP_OnPlayerStateChange(playerid,newstate,oldstate);#define MAX_CHECKS 3
new Float:LastPos[MAX_PLAYERS][3];
new PlayerSpeed[MAX_PLAYERS][MAX_CHECKS];
new PlayerTime[MAX_PLAYERS];
new Checks[MAX_PLAYERS];
new StateDriver[MAX_PLAYERS];public OnPlayerStateChange(playerid,newstate,oldstate)
{
StateDriver[playerid]=(newstate==PLAYER_STATE_DRIVER);
return PnP_OnPlayerStateChange(playerid,newstate,oldstate);
}public OnGameModeInit()
{
SetTimer("SpeedCheck",250,true);
return PnP_OnGameModeInit();
}public SpeedCheck()
{
new Float:pos[3];
for(new i=0;i<MAX_PLAYERS;i++)
{
if(GetPlayerPos(i,pos[0],pos[1],pos[2]))
{
if(StateDriver[i])
{
Checks[i]++;
if(Checks[i]==MAX_CHECKS)
Checks[i]=0;
PlayerSpeed[i][Checks[i]]=floatround(floatsqroot((LastPos[i][0]-pos[0])*(LastPos[i][0]-pos[0])+(LastPos[i][1]-pos[1])*(LastPos[i][1]-pos[1])+(LastPos[i][2]-pos[2])*(LastPos[i][2]-pos[2]))/float(GetTickCount()-PlayerTime[i])*3600);
}
else
{
for(new j=0;j<MAX_CHECKS;j++)
PlayerSpeed[i][j]=0;
Checks[i]=0;
}
PlayerTime[i]=GetTickCount();
LastPos[i]=pos;
}
}
return 1;
}stock GetPlayerSpeed(playerid,mph=false)
{
new v;
for(new i=0;i<MAX_CHECKS;i++)
v+=PlayerSpeed[playerid][i];
v/=MAX_CHECKS;
if(mph)
v=floatround(v/(1.61));
return v;
}#define OnGameModeInit PnP_OnGameModeInit
#define OnPlayerStateChange PnP_OnPlayerStateChange
Das ist der Code. Und deshalb laggt der Server ein wenig. Ich musst im SpeedCheck die float...-Funktionen loswerden. Diese führen zu den Laggs Dx -
heißt ^ hoch?
dann macht doch einfach 2*2 ? o.o oder 2*2*2 oderso o.o
-
Ich brauch aber die Wurzel und diese ist Zahl hoch 0.5. Deshalb brauche ich entweder eine andere Wurzelfunktion oder eine Hochfunktion.
-
breadfish.de
Hat das Thema geschlossen.