[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
  • Beitrag von BlackDown000003 ()

    Dieser Beitrag wurde von Trooper[Y] aus folgendem Grund gelöscht: Das sagt dir hier keiner weil du hier absolut falsch bist. Mach einen eigenen Thread dafür auf. ().
  • Hey,

    wie ist der beste und einfachste Weg um abzufragen ob ein ein Vehicle einen freien Beifahrersitz hat, und dann einen Spieler in diesen zu packen?


    z.B. bei einem /Grab Befehl.


    Befehl:


    SA:MP in 2020?

    Einmal editiert, zuletzt von Anti. ()

  • Du kannst dir mal folgende Funktion anschauen: [wiki]GetPlayerVehicleSeat[/wiki]


    Ich habe auch mal eben eine kleine Funktion geschrieben, diese Setzt den Spieler auf einen Freienplatz im Fahrzeug. ((vielleicht kannst du dies auch gebrauchen))



    Mit freundlichen Grüßen
    German_ScripterHD

    Einmal editiert, zuletzt von German_ScripterHD ()

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