[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
  • Wenn ich als Beispiel: 1.05 eingebe, erkennt er es als 1.04 ... muss ich also den Wert Manuell erhöhen ?

    Ja, da entsteht ein kleiner Rundungsfehler.


    So kannst du es lösen:


    C
    //Oben im Skript
    #define FLOAT_ERROR (0.000001)
    
    
    //Dann so nutzen:
    floatstr(inputtext)+FLOAT_ERROR

    ast2ufdyxkb1.png


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

  • Beitrag von LeonMrBonnie ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: zu langsam ().
  • Ja, da entsteht ein kleiner Rundungsfehler.
    So kannst du es lösen:


    C
    //Oben im Skript
    #define FLOAT_ERROR (0.000001)
    
    
    //Dann so nutzen:
    floatstr(inputtext)+FLOAT_ERROR

    Danke ... Leider macht er nun aus 1.04 = 1.05


    Ich hab das +FLOAT_ERROR wieder weggemacht und nun macht bei 1.04 und 1.05 die richtigen ergebnisse, nur leider bei 1.49 nicht da kommt 1.5 raus...


    MfG
    XonarZ

  • Nimm den else Teil aus der Schleife und schreibe die Nachricht vor das return 1 am Ende des Befehls.

    > Hab ich mal gemacht (also eig unter dem if(strcmp(choosed,"duty",true) == 0) > da kam dann die nachricht, dass ich einen schlüssel habe.




    > Unter der for new schleife kam der fehler (1029) : error 029: invalid expression, assumed zero


    > auch ohne das else

  • Das Ding ist, diese Nachricht, dass ich Einen schlüssel habe bekomme ich sowohl zufuß, als auch tatsächlich in einem Pilot Vehicle.


    Nur wenn ich in einem Normalen Fahrzeug sitze (also keins von >pilotvehs) bekomme ich die fehlermeldung, dass ich in keinem


    pilot veh bin

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Darf ich mal fragen, wie deine weiteren Abfragen aussehen und wofür du das brauchst?


    Denn es tritt immer bei Floating Operationen ein Fehler auf.

    Ich habe mein Tanksystem so strukturiert, dass mein Tank ein Float ist... wenn der Motor an ist, verliert das Fahrzeug jede Sekunde an gewissen Wert beim Kraftstoff welcher ebenfalls als Float deklariert ist...


    Wenn ich jetzt also tanken will, dann soll man auch 1.54 liter als Beispiel tanken können, weil halt nur so viel fehlen.


    MfG
    XonarZ

  • @XonarZ


    Hmm, also da du das nur auf die 2. Stelle genau haben willst, funktioniert das eigentlich perfekt:



    Also bei mir funktioniert das alles perfekt.


    Kann es sein, dass du bei der Zuweisung einen Fehler gemacht hast oder so? :)

    ast2ufdyxkb1.png


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

  • Mein Dialog_response für diesen DIALOG mit dem Inputtext sieht so aus:



    Soll ich es nochmal mit dem FLOAT_ERROR probieren ?


    MfG
    XonarZ

  • new Float:literCount = floatstr(inputtext);

    Ja, schreib mal hier:


    new Float:literCount = floatstr(inputtext)+FLOAT_ERROR;


    Eigentlich sollte dies funktionieren.


    Wenn nicht, gib die Zahlen mal durch ^^


    Und mach im format mal aus dem %0.2f ein %.02f.

    ast2ufdyxkb1.png


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

  • Jetzt geht es... Danke dir... Eine frage hab ich noch:


    Ich kann doch den literCount mittels SetPVarFloat Speichern und GetPVarFloat aufrufen oder ? weil wenn man SetPVarFloat eingibt kommt ja eine Parameterliste aber bei GetPVarFloat nicht^^


    MfG
    XonarZ

  • Ja, ist irgendwie komisch, manche Funktionen buggen und werden nicht angezeigt.


    Da hilft ein schneller Blick ins Wiki: [wiki]GetPVarFloat[/wiki] und du weißt, ahh ja die Funktion existiert :D


    Und natürlich, kannst du das damit zwischenspeichern ;)

    ast2ufdyxkb1.png


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

  • Hey, habe eine Frage:


    Habe ein Öl System für Fahrzeuge.
    0.01 Liter Öl werden ungefähr jede Minute abgezogen bei einer Chance von 25 Prozent, da Autos ja auch so nicht immer Öl verlieren.


    Jetzt ist es so, dass der Timer immer läuft. Kann ich theoretisch innerhalb der Minute sagen wir bei der Hälfte den Motor neu einschalten oder das Fahrzeug verlassen und wieder reingehen, fängt der Timer dann wieder bei 0 an?


    Sonst könnte man das ja umgehen indem man es dann immer macht um Öl zu sparen :)


    Der Timer wird unter public OnGameModeInit() gestartet.


    Die Frage klingt kompliziert ich weiß :D
    Und habe mich das schon immer gefragt genauso beim Sprit Abzug.

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Prinzipiell ist das so, ja.
    Das würde ich aber ganz einfach machen: Ziehe beim Start des Motors 0.01l Sprit ab, dann macht das dafür schon mal niemand. Der Start des Motors braucht ja auch etwas Sprit.


    Das gleiche machst du mit dem Öl, nur eben mit der 25% Chance. Somit versucht niemand, dies zu umgehen.

  • Nabend ich hab mal wieder eine kleine Frage...


    Ich habe in der Datenbank als bizinhaber und teilhaber die datenbank id vom spieler drinne ... nun möchte ich die Namen auslesen (auch wenn sie offline sind) ... Leider komme ich gerade nicht so ganz klar...


    Code
    public getSpielerName(playerid){
        new row, query[512], Name[MAX_PLAYER_NAME];
        mysql_format(handle, query, sizeof(query), "SELECT * FROM user WHERE id = '%i'", playerid);
        mysql_pquery(handle, query);
    	cache_get_row_count(row);
    	if(row == 0) return 0;
    	cache_get_value_name(0, "name", Name);
    	return Name;
    }


    und benutzen tu ich es halt so:


    Code
    getSpielerName(tInfo[tID][owner]);

    Ich habe beim Compilen 2 Errors:


    Code
    ...selfmade.pwn(1563) : error 079: inconsistent return types (array & non-array)
    ...selfmade.pwn(1565) : error 090: public functions may not return arrays (symbol "getSpielerName")
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    2 Errors.