[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
  • @German_ScripterHD
    Deine Funktion funktioniert nicht für alle Fahrzeuge. Ein Bus kann z. B. Mehr als 4 Personen mitnehmen, Da würde deine Funktion schon nicht mehr funktionieren. :)

  • @German_ScripterHD
    Deine Funktion funktioniert nicht für alle Fahrzeuge. Ein Bus kann z. B. Mehr als 4 Personen mitnehmen, Da würde deine Funktion schon nicht mehr funktionieren. :)

    Ich meine, seine Funktion hilft mir ja dennoch gut weiter, da ich es im Moment nur für Fahrzeuge mit 4 Sitzen benötige :P und wahrscheinlich auch weiterhin nur für 4 Sitze, ich wüsste nicht wieso ein Sanitäter einen Verletzten in ein Bus ziehen sollte xD

    SA:MP in 2020?

  • Deine Funktion funktioniert nicht für alle Fahrzeuge. Ein Bus kann z. B. Mehr als 4 Personen mitnehmen, Da würde deine Funktion schon nicht mehr funktionieren.

    Gut, das stimmt allerdings.


    @fishy Ich habe dir gerade nochmal eine neue Funktion geschrieben, die etwas besser geeignet ist.
    Mit der Funktion kannst du abfragen ob der Sitzplatz belegt ist oder nicht.


    C
    stock IsSeatFree(vehid, seatid){
        for(new i = 0; i<MAX_PLAYERS; i++){
    		if(IsPlayerConnected(playerid)){
    			if(GetPlayerVehicleID(i) == vehicleid && GetPlayerVehicleSeat(i) == seatid) return 1;
    		}
    	}
        return 0;
    }


    Mit freundlichen Grüßen
    German_ScripterHD

  • @Hoe
    Mit [wiki]GetPlayerScore[/wiki] kannst du abfragen, welches Level der Spieler besitzt und kannst dann dementsprechend im Befehl handeln. ;)

  • Das weiß ich, aber ich weiß nicht wie man das Beispiel richtig anwendet.

    So vielleicht?


    Soo ich brauch wie immer Hilfe..


    Wenn ich in ein Fahrzeug gehe und /motor eingebe passiert nix, Spieler mit der selben Fraktions ID wie des Fahrzeuges sollen den Motor betätigen können, aber im Fahrzeug selber passiert nichts mehr...
    befehl


    fahrzeug ladesystem:

    SA:MP in 2020?

    Einmal editiert, zuletzt von Anti. ()

  • Versuche zuerst:
    else if(tmp_engine == 1)
    zu:
    else


    Und
    if(tmp_engine == 0)
    zu:
    if(tmp_engine != 1)



    Falls das nicht klappt:
    Ändere
    if(!Vehicle[i][SID])continue;
    zu:
    printf("i: %d / SID: %d / carid: %d", i, Vehicle[i][SID], carid);
    if(!Vehicle[i][SID])continue;
    Und poste was im Server Log steht, wenn du den Befehl eingibst.

  • Funktioniert jetzt, Danke

    Ok, super.
    Noch der Grund dazu, warum es jetzt funktioniert:
    Es gibt bei GetVehicleParamsEx 3 verschiedene Stati, im Falle des Motors ist das so:
    0 = Aus
    1 = An
    -1 = Ungesetzt (entspricht 0).


    Daher reicht es nicht, auf 1 und 0 zu prüfen.


    https://wiki.sa-mp.com/wiki/GetVehicleParamsEx




    Das kommt bei dir zu Stande, weil du SetVehicleParamsEx vor CreateVehicle ausführst.
    Ändere also beim Laden noch:
    SetVehicleParamsEx(i, false, false, false, false, false, false, false);
    zu:
    SetVehicleParamsEx(Vehicle[i][SID], false, false, false, false, false, false, false);
    Und setze es eine Zeile drunter unter CreateVehicle hin.


    Behalte die Änderung mit nur "else" dennoch bei.

  • Hey, ich habe in einem Timer eine menge spielerbezogene Funktionen, da es ein Timer ist, habe ich eine Schleife eingebunden.
    Jetzt habe ich das Problem: Die Schleife arbeitet unabhängig vom Timer.


    Beispiel:
    Die Schleife (obwohl nur 1 Spieler aufm Server ist) wird ca. 20x die Sekunde abgerufen, obwohl der Timer auf 1 Sekunde liegt.
    Wie ändere ich das?


    Timer:
    ongamemodeinit


    SetTimer("SecTimer", 1000, 1);



    Edit: Es ist nur übertrieben schnell wenn 0 Spieler on sind, wenn 1 Spieler on ist, funktioniert es doch mit1 Sekunde 8|

    SA:MP in 2020?

    Einmal editiert, zuletzt von Anti. ()

  • Frage direkt ganz oben in der Schleife ab ob der Spieler connected ist,sprich direkt über den printf.

  • Der Timer wird nicht so oft ausgeführt.

    Der Timer wurde (vor meiner Version) so oft ausgeführt, wie MAX_PLAYERS auch definiert war (ein kleiner Teil wurde ausgeführt, danach kam die Abfrage ob ein Spieler connected ist.)
    Jetzt sollte der Timer nicht mehr aufgerufen werden, wenn der Spieler (i) auch nicht connected ist.


    Die Anzahl in der samp.cfg hat auch nichts mit MAX_PLAYERS zu tun, das kannst du nur im Script ändern. Die Zahl in der samp.cfg ändert den Wert von GetMaxPlayers().

  • Habe da nochn Problem beim Timer, wie man vllt gesehen hat habe ich ein eigenes Todessystem, (Bei low HP ist man verletzt etc.), dies wird auch jede Sekunde abgefragt.


    Problem: Manchmal (nicht immer) kriege ich nach dem Login die Animation & Freeze & Zeit des verletzt seins, obwohl ich beim Spawn 75 HP habe, und beim Timer <= 14 HP angegeben ist,woran könnte das liegen, wie wirds vermieden?


    (Btw, Danke es klappt jetzt mit dem Timer, dass es jede Sekunde ausgeführt wird statt 4000000x in ner Sekunde)

    SA:MP in 2020?

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