Wo liegt mein Fehler?
forward UpdateSpeed(playerid);
public UpdateSpeed(playerid)
{
new stringspeed[32];
format(stringspeed, sizeof(stringspeed), "Speed: %d KM/h", GetPlayerSpeed(playerid));
TextDrawSetString(Tacho9, stringspeed);
return 1;
}
Wo liegt mein Fehler?
forward UpdateSpeed(playerid);
public UpdateSpeed(playerid)
{
new stringspeed[32];
format(stringspeed, sizeof(stringspeed), "Speed: %d KM/h", GetPlayerSpeed(playerid));
TextDrawSetString(Tacho9, stringspeed);
return 1;
}
Hallo.
Ich wollte meinen /opark System entbuggen. Weil wenn ein Oamt einen Fahrzeug abschleppt und zu Base geht und /opark macht steht da "Du kannst dieses Fahrzeug nicht hier parken"
Ich würde gerne fragen ob man wenigstens die Abfrage weg machen kann wo es sagt das man das Fahrzeug hier nicht parken kann.
System:
if (strcmp("/opark", cmd, true, 10) == 0)
{
if(IsPlayerInAnyVehicle(playerid) && GetVehicleModel(GetPlayerVehicleID(playerid)) == 525 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(PlayerInfo[playerid][pMember] == 24||PlayerInfo[playerid][pLeader] == 24)
{
if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
{
SendClientMessage(playerid, COLOR_GREY, " An deinem Abschleppwagen ist kein Auto angehängt!");
return 1;
}
new trailercar = GetVehicleTrailer(GetPlayerVehicleID(playerid));
if(!IsADtCar(trailercar))
{
SendClientMessage(playerid, COLOR_GREY, " Dieses Auto kann hier nicht geparkt werden!!");
return 1;
}
new Float:X,Float:Y,Float:Z;
new Float:z_rot;
GetVehiclePos(trailercar, X,Y,Z);
GetVehicleZAngle(trailercar, z_rot);
new carowner = GetDtCarOwner(trailercar);
new slot = GetDtCarOwnerSlot(carowner,trailercar);
PlayerCar[carowner][slot][CarPos_x] = X;
PlayerCar[carowner][slot][CarPos_y] = Y;
PlayerCar[carowner][slot][CarPos_z] = Z;
PlayerCar[carowner][slot][CarRotate] = z_rot;
if(carowner != 555)
{
OnPlayerCarUpdate(carowner,false);
SendClientMessage(carowner, COLOR_WHITE, "[ORDNUNGSAMT] Ihr Fahrzeug wurde abgeschleppt, es steht im Hof des Ordnungsamtes!");
}
DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, COLOR_YELLOW, " Du hast das Fahrzeug erfolgreich abgeschleppt!");
return 1;
} else {
SendClientMessage(playerid, COLOR_GREY, " Du bist kein Mitglied des Ordnungsamtes!");
return 1;
}
}
else
{
SendClientMessage(playerid, COLOR_GREY, " Du musst einen Abschleppwagen fahren!");
return 1;
}
Sollte so gehen
Bei IsPlayerInRangeOfPoint musst du die Koordinaten ändern
Kann sich da mal jemand Melden: Tutorial Musik
Brauche da auch mal Hilfe ![]()
Wo liegt mein Fehler?
Welche Zeile ist die Zeile mit der Warnung?
Welche Zeile ist die Zeile mit der Warnung?
format(stringspeed, sizeof(stringspeed), "Speed: %s KM/H", GetPlayerSpeed(playerid));
Dann liegt es wohl an GetPlayerSpeed.
Versuche es so:
new Float:speed;
GetPlayerSpeed(playerid, speed);
format(stringspeed, sizeof(stringspeed), "Speed: %0.2f KM/H", speed);
forward UpdateSpeed(playerid);
public UpdateSpeed(playerid)
{
new stringspeed[32], Float:speed;
GetPlayerSpeed(playerid, speed);
format(stringspeed, sizeof(stringspeed), "Speed: %0.2f KM/H", speed);
TextDrawSetString(Tacho9, stringspeed);
return 1;
}
C:\Users\Marcel\Desktop\SAMP Projekt\Server\gamemodes\NLR.pwn(1355) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Warning.
in Zeile:
GetPlayerSpeed(playerid, speed);
Speed Funktion:
stock GetPlayerSpeed(playerid,bool:kmh)
{
new Float:bx,Float:by,Float:bz,Float:rtn;
if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),bx,by,bz); else GetPlayerVelocity(playerid,bx,by,bz);
rtn = floatsqroot(bx*bx+by*by+bz*bz);
return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 50);
}
Ahh, dann so:
forward UpdateSpeed(playerid);
public UpdateSpeed(playerid)
{
new stringspeed[32];
format(stringspeed, sizeof(stringspeed), "Speed: %d KM/H", GetPlayerSpeed(playerid, true));
TextDrawSetString(Tacho9, stringspeed);
return 1;
}
Warum explodiert das Fahrzeug schon bei 22%?
so zeig ich es an
forward UpdateZustand(playerid);
public UpdateZustand(playerid)
{
new Float:health, stringzs[32];
new cID = GetPlayerVehicleID(playerid);
GetVehicleHealth(cID, health);
format(stringzs, sizeof(stringzs), "Zustand: %.0f %%", (health / 10));
TextDrawSetString(Tacho10, stringzs);
return 1;
}
Das liegt daran, dass 249 Health in SA-MP heißt, es brennt.
Ändere es zu:
new Float:health = ((health - 250.0) / 750.0) * 100.0;
if(health < 0) health = 0.0;
format(stringzs, sizeof(stringzs), "Zustand: %.0f %%", health);
Müsste es bei der Berechnung so eigentlich sein.
Beispiel:
(1000 - 250) / 750 = 1 * 100 = 100%.
Es sieht jetzt so aus:
forward UpdateZustand(playerid);
public UpdateZustand(playerid)
{
new stringzs[32];
new cID = GetPlayerVehicleID(playerid);
new Float:health = ((health - 250.0) / 750.0) * 100.0;
GetVehicleHealth(cID, health);
if(health < 0) health = 0.0;
format(stringzs, sizeof(stringzs), "Zustand: %.0f %%", health);
TextDrawSetString(Tacho10, stringzs);
return 1;
}
Du solltest GetVehicleHealth und die Berechnung schon tauschen, damit "health" überhaupt ein Wert hat. ![]()
Sorry, das war ein Denkfehler von mir.
new Float:health;
GetVehicleHealth(cID, health);
health = ((health - 250.0) / 750.0) * 100.0;
So passt es.
if(Spieler[playerid][pLastLogin] < (gettime()-86400))
{
if(Spieler[playerid][pLastLogin] > 0)
{
SendClientMessage(playerid, COLOR_YELLOW, "Dir wurde "COLOR_HEX_DARKORANGE"1 Respektpunkt"COLOR_HEX_YELLOW" gutgeschrieben da du mindestens 1 Tag nicht online warst.");
Spieler[playerid][pExp]++;
}
}
Mir wird dauerhaft angezeigt, dass Ich 1 Tag nicht online war sobald ich mich einlogge.
Beim Speichern vom Spieler wird in die DB "gettime()" eingetragen, und beim Laden wird es ganz normal von der DB bezogen.
Nur die Abfrage spinnt irgendwie..
Cif(Spieler[playerid][pLastLogin] < (gettime()-86400)) { if(Spieler[playerid][pLastLogin] > 0) { SendClientMessage(playerid, COLOR_YELLOW, "Dir wurde "COLOR_HEX_DARKORANGE"1 Respektpunkt"COLOR_HEX_YELLOW" gutgeschrieben da du mindestens 1 Tag nicht online warst."); Spieler[playerid][pExp]++; } }Mir wird dauerhaft angezeigt, dass Ich 1 Tag nicht online war sobald ich mich einlogge.
Beim Speichern vom Spieler wird in die DB "gettime()" eingetragen, und beim Laden wird es ganz normal von der DB bezogen.
Nur die Abfrage spinnt irgendwie..
sollte so gehen
if(Spieler[playerid][pLastLogin] > 0 && Spieler[playerid][pLastLogin] < gettime()-86400)
{
SendClientMessage(playerid, COLOR_YELLOW, "Dir wurde "COLOR_HEX_DARKORANGE"1 Respektpunkt"COLOR_HEX_YELLOW" gutgeschrieben da du mindestens 1 Tag nicht online warst.");
Spieler[playerid][pExp]++;
}
Hey wollte mal fragen wie ich am besten eine If-Abfrage mache ob der Spieler in einer Menge verschiedenen Posis ist, statt da jetzt 300x IfIsPlayerInRange.. XYZ hinzuschreiben, würde ich mir vorstellen, dass es eine Funktion gibt wo man abfragt ob der Spieler in eigener Range ist die per rand (?) oder urand(?) oder so ähnlich eingetragen wurde, allerdings kenne ich mich damit nicht aus, wäre gut falls mir da jemand kurz hilft ^^.
Naja...am einfachsten wäre sowas:
stock const Float:somePos[][3] = {
{0.0, 0.0, 0.0},
{1.0, 1.0, 1.0},
{999.0, 999.0, 999.0}
};
//Zum Beispiel:
stock IsPlayerInRangeOfSomePos(playerid)
{
for(new i; i<sizeof(somePos); i++)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, somePos[i][0], somePos[i][1], somePos[i][2])) return 1;
}
return 0;
}
Alles anzeigen
Das wäre ein Beispiel...da kannst du dann einfach alle Positionen oben eintragen & fertig ![]()