[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
  • Habe das so..


    Code
    speed = ErmittleGeschwindigkeit(playerid,true);
     						if(speed > Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) {
    	 					    strafe = (speed*2) - Blitzer[BlitzerObj][BlitzerGeschwindigkeit];



    Code
    stock ErmittleGeschwindigkeit(playerid,bool:kmh) {
        new Float:x,Float:y,Float:z,Float:rtn;
        if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); else GetPlayerVelocity(playerid,x,y,z);
        rtn = floatsqroot(x*x+y*y+z*z);
        return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
    }


    Aber irgednwie haut das nicht ganz hin Pro km/h zu schnell 400$

  • Habe das so..


    Code
    speed = ErmittleGeschwindigkeit(playerid,true);
     						if(speed > Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) {
    	 					    strafe = (speed*2) - Blitzer[BlitzerObj][BlitzerGeschwindigkeit];



    Code
    stock ErmittleGeschwindigkeit(playerid,bool:kmh) {
        new Float:x,Float:y,Float:z,Float:rtn;
        if(IsPlayerInAnyVehicle(playerid)) GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z); else GetPlayerVelocity(playerid,x,y,z);
        rtn = floatsqroot(x*x+y*y+z*z);
        return kmh?floatround(rtn * 100 * 1.61):floatround(rtn * 100);
    }

    Aber irgednwie haut das nicht ganz hin Pro km/h zu schnell 400$

    Dann solltest Du die Systeme wenigstens mal verstehen, und nicht nur straight drauf los Copy & Pasten.



    Code
    speed = ErmittleGeschwindigkeit(playerid,true);
    
    
    if(speed > Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) {
           strafe = (speed - Blitzer[BlitzerObj][BlitzerGeschwindigkeit]) * 400;
  • Das ist kein C&P das ist das erste Blitzer System was ich versuche zu bauen mit strafe und Punkte.


    Das was fehlt ist nur das mit den Punkten ab 6 km/h zu schnell das habe ich jetzt auch schon raus gefunden wie das funktioniert @Janes

    Wäre ja eig nur



    C
    new punkte = floatround((speed - Blitzer[BlitzerObj][BlitzerGeschwindigkeit])/6), floatround_ceil);

    Wenn ich mich nicht täusche


    Bzw du wendest floatround_floor an, dann kriegt er auch nur Punkte wenn er bspw. 56km/h fährt, anstatt 54 oderso.
    Obwohl ich dir sowieso raten würde, eine Art "Toleranz" einzufügen von 3-5km/h.

  • Hab ein kleines Problem mit meinem Würfeltisch..



    CMD:wurfeltisch(playerid, params[])
    {
    if(IsPlayerConnected(playerid) && IsPlayerInRangeOfPoint(playerid, 2, 1670.2463,-1234.6539,15.1847))
    {
    new zahl,einsatz;
    if(sscanf(params,"ud",zahl,einsatz)) return SendCommandParams(playerid, "/wurfeltisch [Zahl] [Einsatz]");
    if(GetPlayerMoney(playerid) >= einsatz)
    {
    new dice = random(6);
    if(zahl > 1 && zahl < 6)
    {
    SendClientMessage(playerid, COLOR_RED, "Die geschätzte Zahl muss unter 1-6 liegen.");
    return 1;
    }
    if(einsatz < 5000 || einsatz > 99999)
    {
    SendClientMessage(playerid, COLOR_RED, "Der Einsatz muss zwischen $5000 und $99999 liegen.");
    return 1;
    }
    if(zahl == dice)
    {
    new string[258];
    format(string,sizeof(string), "Du hast auf die %d getippt und gewonnen. Dein Einsatz verdreifacht sich.",zahl);
    SendClientMessage(playerid,COLOR_GREEN,string);
    GivePlayerMoney(playerid, einsatz+einsatz+einsatz);
    }
    else
    {
    new string[258];
    format(string,sizeof(string), "Du hast auf die %d getippt, doch die richtige lautete %d. Dein Einsatz hat sich in Luft aufgelöst.", zahl,dice);
    GivePlayerMoney(playerid,-einsatz);
    SendClientMessage(playerid,COLOR_RED,string);
    }
    }
    else
    {
    new string[128];
    format(string,sizeof(string),"Du benötigst mehr Geld für deinen Einsatz (%d) oder Du setzt einen niedrigeren ein.",einsatz);
    SendClientMessage(playerid,COLOR_RED,string);
    }
    }
    return 1;
    }


    Ich Würfel zwar aber nicht meine Zahl..
    Du hast auf die 65535 getippt, doch die richtige lautete 2. Dein Einsatz hat sich in Luft aufgelöst.


    Das kommt dann raus :/

  • In sscanf ist dein erster Parameter der Parameter (z.B. "dd" oder "ud", du weißt was ich ich meine) der Parameter u. U steht für einen Spieler, und weil es den Spieler nicht gibt den du angibst ist der Wert INVALID_PLAYER_ID (65535).
    Ändere es zu "dd" und es sollte klappen.

  • In sscanf ist dein erster Parameter der Parameter (z.B. "dd" oder "ud", du weißt was ich ich meine) der Parameter u. U steht für einen Spieler, und weil es den Spieler nicht gibt den du angibst ist der Wert INVALID_PLAYER_ID (65535).
    Ändere es zu "dd" und es sollte klappen.

    Ok jetzt klappt das zwar aber ich kann nur noch die Zahl 1 Würfel :/

  • aber ich kann nur noch die Zahl 1 Würfel

    Versuch es mal so zu schreiben:


    ast2ufdyxkb1.png


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

  • Versuch es mal so zu schreiben:

    Danke hat geklappt :P :)

  • Wie konnte man nochmal beim Formatieren sagen ob es z.b Grün oder Rot ist bei einer Varriable ?

    Ich bin mir nicht wirklich sicher was du genau meinst ^^


    Eventuell das hier: https://wiki.sa-mp.com/wiki/Colour_Embedding#Color_embedding


    Falls nicht, versuche es präziser zu erklären, am Besten mit einem fiktiven Code Beispiel, wie du dir das vorstellst :)

    ast2ufdyxkb1.png


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

  • @hav0K~



    Derzeit sieht der Code so aus wen er geblitzt wird:



    Natürlich wen der Blitzer Kaputt ist kann er halt nicht Blitzen.
    So die Frage ist wie ich ihn ab 6 km/h zuschnell 1 Punkt eintragen lasse.
    Da ich da eine BlitzerToleranz drinnen habe.

  • @Kaliber:
    Jetzt würde mich Ja der Name angezeigt werden in weiß.
    Mein vorhaben ist dass ich beim Format ohne zwei unterschiedliche Strings zu Formatieren abfrage ob bizInfo[i][biz_Waffem][0] 0 ist dann soll es Rot sein und wenn es Größer als 0 soll es Weiß bzw Grün sein.
    Oder vertue ich mich da gerade das sowas ging ?

    Code
    format(string, sizeof(string), "{FFFFFF}%s", WaffenName(bizInfo[i][biz_Waffen][0]));


    // Sowas z.b



    Code
    format(string, sizeof(string), "%s\n%s\t%s\t%s", string, Name, GetFrakRangName(Rang, fID), (IsPlayerConnected(playerid))?("Online"):("Offline"));
  • Soweit bin ich auch aber wie kann ich genau setzen wen er 6 km/h zu schnell ist das 1 Punkt bekommt pro 6km/h zu schnell 1 Punkt heißt ist er 12 km/h zu schnell 2 Punkte das addiert sich ja logischerweiße.
    Das habe ich mittlerweile ja auch raus gefunden.

  • @Dr. Frauenarzt


    Beispiel:


    Du fährst 136 Kmh, erlaubt sind aber 80 (+3 Toleranz). Demnach ziehst du von deiner Geschwindigkeit die 83 Kmh ab.
    136 - 83 sind demnach 53 Kmh, die du zuschnell gefahren bist. Um so die Punktevergabe zu errechnen musst durch erst einmal schauen ab wie viele kmh jedes Mal ein Punkt dazu kommen soll.
    Beispielsweise man soll immer ab 6 kmh einen neuen Punkt bekommen, teilst du die 53 kmh durch 6.


    53 / 6 = 8.8


    dabei würde ich an deiner Stelle noch einen Grenzwert festlegen, nicht wenn du mit Shamal durch nen Blitzer mit ~ 300 kmh rast, dass du 20 Punkte oder so bekommst.