[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
  • Jemand ein Plan ?

    Das ist nicht so leicht, besonders da wir nicht wissen, wofür du das benötigst.


    Theoretisch ist es schon gut möglich das herauszufinden.


    Wichtig sind hier Dinge wie:


    • Wie nah sollte der Spieler dem anderen Spieler sein?
    • Soll er mit dem Körper in die Richtung des Spielers zeigen oder einfach nur dahin schauen?
    • Wie präzise soll das sein, denn jemanden flüchtig sehen ist ja nicht gleichzusetzen mit genau im Zentrum des Blickfeldes sein.
    • Wozu das alles ^^

    ast2ufdyxkb1.png


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

  • Beitrag von reaL. ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Warum wird die Nachricht doppelt angezeigt?
    Bild:


    Code:

  • @Jason.Jetal


    Du gibst die Nachricht unter [wiki]OnPlayerSpawn[/wiki] aus, dabei ist das Problem, das die Funktion aber zwei mal aufgerufen wird.
    Einmal wenn du die Kamera z.B versetzt hast oder sonst wo, und dann lässt du ihn beim Laden wieder Spawnen. ([wiki]SpawnPlayer[/wiki])


    Am besten du gibst die Nachricht aus, wenn er sich Eingeloggt hat erst, so kann die Nachricht nicht zwei mal kommen.


    Mit freundlichen Grüßen.

    Die Missglückte Persönlichkeit, Ciao!

  • Hm ...
    Lässt du den Spieler auch zurück setzen ?


    Kannst auch mal die Funktion "SpielerLaden" zeigen ?


    Bin gerade auf der Suche, wieso die Nachricht zwei mal Erscheint. :D


    Mit freundlichen Grüßen.

    Die Missglückte Persönlichkeit, Ciao!

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dein Spieler setzte ich in OnPlayerRequest mit ClearPlayerConnect(playerid):


    SpielerLaden:


  • public OnPlayerSpawn(playerid)
    {
    if(sI[playerid][pLoggedIn] == false){
    TogglePlayerSpectating(playerid, 1);
    InterpolateCameraPos(playerid, 1350.2534, -1398.6396, 30.5000, 1381.4818, -935.0197, 70.5000, 10000, CAMERA_MOVE);
    InterpolateCameraLookAt(playerid, 1415.4063, -807.2476, 85.0515, 1415.4063, -807.2476, 85.0515, 10000, CAMERA_MOVE);
    } else if(sI[playerid][pLoggedIn] == true) {
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Willkommen am Neulingsspawn");
    SetPlayerPos(playerid, 1111.4602,-1796.9159,16.5938);
    SetPlayerFacingAngle(playerid, 91.1574);
    }
    return 1;
    }


    Mache es mal bitte so.


    Weil, TogglePlayerSpectating(playerid, 0); das ruft soweit ich weiß ja auch den Public "OnPlayerSpawn" auf, somit wird OnPlayerSpawn zwei mal benutzt.

    Die Missglückte Persönlichkeit, Ciao!

  • Jetzt wird dies nichtmehr ausgeführt beim Login.

    Code
    InterpolateCameraPos(playerid, 1350.2534, -1398.6396, 30.5000, 1381.4818, -935.0197, 70.5000, 10000, CAMERA_MOVE);
    	    InterpolateCameraLookAt(playerid, 1415.4063, -807.2476, 85.0515, 1415.4063, -807.2476, 85.0515, 10000, CAMERA_MOVE);
  • Das hat aber nichts damit zutun, da wir nur etwas Bearbeitet haben nach dem er Eingeloggt ist.
    Das Problem was du hast, wirst du auch nichts mehr Gefixxt bekommen, eine Kamera Fahrt mit den Spectate Modus hat schon immer Probleme gemacht.
    Am besten machst du es wie folgt.


    • Spieler Spawnen
    • Spieler Freezen
    • Kamera Fahrt Starten
    • Spieler dort hinsetzen wo die Kamera rum fährt

    So würde es nicht zu deinem Problem kommen.


    Mit freundlichen Grüßen.

    Die Missglückte Persönlichkeit, Ciao!

  • Code
    (1441) : warning 219: local variable "vehicleid" shadows a variable at a preceding level

    Morgen Jungs,
    Ich war jetzt dabei eine Fahrschule zu machen, ich habe ein kleines Problem


    Ich möchte gerne das man in die Fahrschule geht dort seine Fahrstunde startet dann wird [pFahrstunde] auf 1 gesetzt und der Spieler kann das Auto schon steuern, habe hier mal was gemacht.


    Aber dann wird er ja trotzdem gekickt weil er keinen Führerschein hat oder?


    Und bei dem normalen Aufbau kriege ich schon ein Error

    Code
    (1441) : warning 219: local variable "vehicleid" shadows a variable at a preceding level

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


  • if(WithoutMotor(vehicleid))
    {
    if(newstate == PLAYER_STATE_DRIVER)
    if(pInfo[playerid][pAutoschein]== 0 || pInfo[playerid][pFahrschule] == 0)
    {
    SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Autoschein.");
    return RemovePlayerFromVehicle(playerid);
    }
    else
    {
    SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
    }
    }


    Somit wird er schon einmal nicht mehr aus dem Fahrzeug geworfen.


    Ändere mal die Veriable Namen von "vehicleid" zu z.B "vehID".


    Mit freundlichen Grüßen.

    Die Missglückte Persönlichkeit, Ciao!

  • Danke, aber jetzt z.b wenn der Spieler die Fahrstunde startet kann er in jedes Auto einsteigen aber er darf nur das Fahrschulauto bedienen.
    Ich hab das so noch nicht gemacht, also wie mach ich das das er z.b er abfragt ob er in einer Fahrstunde ist und falls es doch ist kann er das Auto bedienen und er hört auf das nächste abzufragen in meinem Fall ob er einen Schein hat

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

  • Dann Frag ab, sobald der Typ in einem Einsteigt ob es ein Fahrschulauto ist, wenn ja, lass ihn nicht Removen, wenn es keins ist, dann werfe ihn aus dem Fahrzeug raus.
    Hast dafür doch eigentlich alles richtig Geschrieben soweit ich es sehen kann.



    new vehicleid=GetPlayerVehicleID(playerid);
    if(WithoutMotor(vehicleid))
    {
    if(newstate == PLAYER_STATE_DRIVER)
    if(pInfo[playerid][pAutoschein]== 0)
    {
    SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Autoschein.");
    return RemovePlayerFromVehicle(playerid);
    }
    else
    {
    SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
    }
    }
    if(newstate == PLAYER_STATE_DRIVER)
    for(new p; p < sizeof(Fahrschulauto); p++)
    {
    new vehicleid=GetPlayerVehicleID(playerid);
    if(vehicleid == p)
    {
    if(pInfo[playerid][Fahrstunde] != 1)
    {
    SendClientMessage(playerid, -1,"{c45461}Du musst zuerst die Fahrstunde starten um mit der Prüfung anzufangen.");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    }

    Die Missglückte Persönlichkeit, Ciao!

  • Ja, meine ich ja auch aber wenn ich jetzt z.b auf einem Fahrrad steige steht das ich die Fahrprüfung noch machen muss wenn ich aber auf ein Roller z.b steige ich habe noch keinen Führerschein, also irgendwie ist das komisch


    //edit beim Fahrrad und Fahrschulauto wird das angezeige also die Variable WithoutMotor das sind die Autos die kein Motor haben hmm

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

  • @BrightLeaN
    Korrekt, du musst auch bedenken, so wie der Code da steht, so wird der Server auch Reagieren.


    Versuche das ganze mal bitte so.


    if(newstate == PLAYER_STATE_DRIVER)
    {
    new vehicleid=GetPlayerVehicleID(playerid);
    for(new p; p < sizeof(Fahrschulauto); p++)
    {
    if(vehicleid== p)
    {
    if(pInfo[playerid][Fahrstunde] != 1)
    {
    SendClientMessage(playerid, -1,"{c45461}Du musst zuerst die Fahrstunde starten um mit der Prüfung anzufangen.");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    }


    if(pInfo[playerid][pAutoschein]== 0)
    {
    SendClientMessage(playerid, -1,"{c45461}Du hast noch keinen Autoschein.");
    return RemovePlayerFromVehicle(playerid);
    }
    else
    {
    SendClientMessage(playerid,-1,"{FAFAFA}Benutze den Befehl{009BFF} /Motor{FAFAFA} um den Motor zu starten. Mit den Befehl {009BFF}/Licht{FAFAFA} schaltest du das Licht ein.");
    }
    }
    }

    Die Missglückte Persönlichkeit, Ciao!