[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Wo liegt mein Fehler?


  • 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;
    }


    • 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))
    • {
      if(!IsPlayerInRangeOfPoint(playerid, 4, 2117.5835,-1153.0809,24.2201))
    • 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

  • 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;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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. :D

  • C
    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..


    @Jeffry @Kaliber

  • C
    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..


    @Jeffry @Kaliber


    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 ^^.

    SA:MP in 2020?

  • Naja...am einfachsten wäre sowas:



    Das wäre ein Beispiel...da kannst du dann einfach alle Positionen oben eintragen & fertig ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen