[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
  • Funktioniert soweit, danke dir! Gibt es eventuell eine Möglichkeit das noch zufälliger zu machen? Aktuell kommt es vor das ein Spieler 3-4 mal hintereinander das selbe Fahrzeug bekommt. @Jeffry

    Was für ein System soll das denn werden? Wenn es z.B. ein Derbysystem werden soll, kannst du natürlich einfach per random() eine zufällige modelid aus einem Array ziehen - dann wäre die "Zufälligkeit" höher.


    Also z.B.



    Code
    new modelids[] = {411, 412, 413, 414, 415};
    
    
    new modelID = modelids[random(sizeof(modelids))];

    Dann würde er dir zufällig ein Fahrzeug-Modell aus dem Array modelids geben.

  • Beitrag von Alva. ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Fahrzeuge werden komischerweise nicht gespeichert.

    public SavePlayerVehicles()
    {
    new query[1024], mainquery[1024], secondquery[1024];
    for(new i=0; i<MAX_VEHICLES; i++)
    {
    if(PlayerVehicle[i][cID] == i)
    {
    GetVehiclePos(PlayerVehicle[i][cID], PlayerVehicle[i][cPos_X], PlayerVehicle[i][cPos_Y], PlayerVehicle[i][cPos_Z]);
    GetVehicleZAngle(PlayerVehicle[i][cID], PlayerVehicle[i][cPos_R]);

    new Float:vHealth;
    GetVehicleHealth(PlayerVehicle[i][cID], vHealth);

    format(query, sizeof(query), "UPDATE server_playervehicles SET Besitzer = '%s', Key1 = '%s', Key2 = '%s', ModelID = '%d', Color1 = '%d', Color2 = '%d', Color2 = '%d', Pos_X = '%f' , Pos_Y = '%f', Pos_Z = '%f', Pos_R = '%f'",
    PlayerVehicle[i][cOwner], PlayerVehicle[i][cKey1], PlayerVehicle[i][cKey2], PlayerVehicle[i][cModel], PlayerVehicle[i][cColor1], PlayerVehicle[i][cColor2], PlayerVehicle[i][cPos_X], PlayerVehicle[i][cPos_Y], PlayerVehicle[i][cPos_Z], PlayerVehicle[i][cPos_R]);
    format(mainquery, sizeof(mainquery),"%s Fuel = '%f', DayKM = '%f', KM = '%f', Zustand = '%f', Crashed = '%d', NumberPlate = '%s', Preis = '%d', Paintjob = '%d', Spoiler = '%d', Hood = '%d', Roof = '%d'",
    query, PlayerVehicle[i][cFuel], PlayerVehicle[i][cDayKM], PlayerVehicle[i][cKM], PlayerVehicle[i][cZustand], PlayerVehicle[i][cCrash], PlayerVehicle[i][cNumberPlate], PlayerVehicle[i][cPreis], PlayerVehicle[i][cPaintjob], PlayerVehicle[i][cSpoiler], PlayerVehicle[i][cHood], PlayerVehicle[i][cRoof]);
    format(secondquery, sizeof(secondquery),"%s Lamps = '%d', Nitro = '%d' , Sideskirt = '%d', Exhausts = '%d', Wheels = '%d', Stereo = '%d', Hydraulics = '%d', FrontBumper = '%d', RearBumper = '%d', VentRight = '%d', VentLeft = '%d' WHERE ID = '%d'",
    mainquery, PlayerVehicle[i][cLamps], PlayerVehicle[i][cNitro], PlayerVehicle[i][cSideskirt], PlayerVehicle[i][cExhausts], PlayerVehicle[i][cWheels], PlayerVehicle[i][cStereo], PlayerVehicle[i][cHydraulics], PlayerVehicle[i][cFrontBumper], PlayerVehicle[i][cRearBumper], PlayerVehicle[i][cVentRight], PlayerVehicle[i][cVentLeft], i);
    mysql_tquery(MySQL, mainquery);
    }
    }
    return 1;
    }


    [code][00:27:07] [ERROR] mysql_tquery: invalid connection handle '1'
    [00:27:07] [ERROR] mysql_tquery: invalid connection handle '1'
    [00:27:07] [ERROR] mysql_tquery: invalid connection handle '1'[/code]


  • Beitrag von TheDivine ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • rand = random(SpielerInRunde - count);zu:
    rand = random(sizeof(RoundCars) - count);


    Ist halt nicht passend, wenn die Fahrzeuge hintereinander stehen. Falls wild durcheinander, dann geht das so und es ist viel zufälliger bei geringen Spielerzahlen.

    Okay danke dir @Jeffry :3
    Ein Problem habe ich noch... aktuell ist es ja so das maximal so viele Spieler wie Fahrzeuge existieren auf den Seat 0 gesetzt werden. Sprich, wenn mehr Spieler als Fahrzeuge existieren, würden diese die anderen Spieler aus dem Fahrzeug werfen. Wie kann ich es am besten machen das die Spieler die in die Fahrzeuge gesetzt werden wenn schon jemand anderes im Fahrzeug sitzt auf einen anderen Platz gesetzt werden?


  • C:\Users\Patri\Desktop\Reallife\gamemodes\LRS.pwn(8034) : error 008: must be a constant expression; assumed zero
    C:\Users\Patri\Desktop\Reallife\gamemodes\LRS.pwn(8034) : error 036: empty statement
    C:\Users\Patri\Desktop\Reallife\gamemodes\LRS.pwn(8035) : error 017: undefined symbol "driver"
    C:\Users\Patri\Desktop\Reallife\gamemodes\LRS.pwn(8035) : warning 215: expression has no effect
    C:\Users\Patri\Desktop\Reallife\gamemodes\LRS.pwn(8035) : error 001: expected token: ";", but found "]"
    C:\Users\Patri\Desktop\Reallife\gamemodes\LRS.pwn(8035) : error 029: invalid expression, assumed zero
    C:\Users\Patri\Desktop\Reallife\gamemodes\LRS.pwn(8035) : fatal error 107: too many error messages on one line




    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    new driver[] = Flastdriver[vehicleid]; //8034
    if(driver[0] == EOS) driver = "Niemand"; //8035
    return 1;
    }



    Warum meckert der da rum :o?

  • Sprich, wenn mehr Spieler als Fahrzeuge existieren, würden diese die anderen Spieler aus dem Fahrzeug werfen.

    Diese würden dann kein Fahrzeug bekommen, da used = true ist.



    Wie kann ich es am besten machen das die Spieler die in die Fahrzeuge gesetzt werden wenn schon jemand anderes im Fahrzeug sitzt auf einen anderen Platz gesetzt werden?

    Versuche es mal so:
    new string[128], count, rand, bool:used[sizeof(RoundCars)], placed, seat = 0;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(i,"JointInRunde") == 1 && IsPlayerConnected(i))
    {
    rand = random(sizeof(RoundCars) - count);
    for(new j = 0; j < sizeof(used); j++)
    {
    if(!used[j])
    {
    if(rand == 0)
    {
    if(seat == 0) RoundCars[j][carID] = CreateVehicle(RoundCars[j][carModel],RoundCars[j][X],RoundCars[j][Y],RoundCars[j][Z],RoundCars[j][R],RoundCars[j][color1],RoundCars[j][color2],0);
    PutPlayerInVehicle(i,RoundCars[j][carID],seat);
    format(string,sizeof(string),"[DEBUG] Fahrzeug: %i, PlayerID: %i, SpielerInRunde: %i, Seat: %i",j,i,SpielerInRunde, seat);
    SendClientMessageToAll(-1,string);
    used[j] = true;
    count++;
    placed++;
    if(placed >= sizeof(RoundCars))
    {
    placed = 0;
    seat++;
    for(new u = 0; u < sizeof(used); u++) used[u] = false;
    }
    break;
    }
    else
    {
    rand--;
    }
    }
    }
    }
    }
    Das heißt, sobald alle Fahrzeuge vergeben sind, zählt der Sitz-Zähler um eins hoch und setzt die restlichen Spieler random auf Sitz 1, solange bis alle Sitz 1 Plätze voll sind, das gleiche dann für Platz 2, etc.


    Und nochmal:
    Bitte keine Voll-Zitate von Posts, das macht doch keinen Sinn! Zumal der Post direkt drüber steht. Das macht das Lesen nur absolut unübersichtlich.

  • Die Spieler, die auf die anderen Sitze verteilt werden sollten, werden nicht in die Fahrzeuge gesetzt.

    Stimmt, der Wert von dem der Random-Wert genommen wird, läuft dann ins negative.
    Versuche es so:
    new string[128], count, rand, bool:used[sizeof(RoundCars)], seat = 0;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(i,"JointInRunde") == 1 && IsPlayerConnected(i))
    {
    rand = random(sizeof(RoundCars) - count);
    for(new j = 0; j < sizeof(used); j++)
    {
    if(!used[j])
    {
    if(rand == 0)
    {
    if(seat == 0) RoundCars[j][carID] = CreateVehicle(RoundCars[j][carModel],RoundCars[j][X],RoundCars[j][Y],RoundCars[j][Z],RoundCars[j][R],RoundCars[j][color1],RoundCars[j][color2],0);
    PutPlayerInVehicle(i,RoundCars[j][carID],seat);
    format(string,sizeof(string),"[DEBUG] Fahrzeug: %i, PlayerID: %i, SpielerInRunde: %i",j,i,SpielerInRunde);
    SendClientMessageToAll(-1,string);
    used[j] = true;
    count++;
    if(count >= sizeof(RoundCars))
    {
    count = 0;
    seat++;
    for(new u = 0; u < sizeof(used); u++) used[u] = false;
    }
    break;
    }
    else
    {
    rand--;
    }
    }
    }
    }
    }

  • Guten Abend, kleines Problem warum Zeigt er beim Skin eine Box an ???
    Habe im Editor keine Box ( Die Schwarze nur um den Skin )

  • Ne das habe ich schon Probiert aber ändert sich nichts

    Kannst es einfach so machen:


    C
    Persoskin[playerid] = CreatePlayerTextDraw(playerid, 147.999984, 137.303588, "LD_SPAC:white");
    PlayerTextDrawLetterSize(playerid, Persoskin[playerid], -0.184333, -8.885335);
    PlayerTextDrawTextSize(playerid, Persoskin[playerid], 100.000167, 172.977813);
    PlayerTextDrawBackgroundColor(playerid, Persoskin[playerid], 0x00000000);
    PlayerTextDrawFont(playerid, Persoskin[playerid], 5);
    PlayerTextDrawSetPreviewModel(playerid, Persoskin[playerid], 5);

    ast2ufdyxkb1.png


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

  • Guten Tag,


    Ich hab keine ahnung warum nur "Server: unknown command" kommt habe den Befehl schon mehrfach überprüft, entweder ich bin Total blind oder keine Ahnung ich hoffe ihr könnt mir weiter helfen.



    @Jeffry @Kaliber

  • Lade dir das Crashdetect Plugin herunter und füge es in deinen Server ein:
    http://forum.sa-mp.com/showthread.php?t=262796


    Erstelle zusätzlich im Ordner /pawno/ eine Datei "pawn.cfg" und schreibe dort "-d3" rein.
    Dann öffne die pawno.exe aus diesem Ordner heraus und kompiliere deinen Code erneut.


    Reproduziere dann den Fehler, dann sollte die Problemzeile im server.log ausgegeben werden.