[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
  • Kann man das bitte noch verwirrender formulieren?
    Rede doch mal Klartext, wer sieht was nicht und wer soll was sehen...meine Güte xD

    Das ist glaube ich Code von einem Befehl wo die Spieler sich im Fahrzeug unterhalten können.
    Wenn der Fahrer diesen Befehl ausführt, sieht der Passagier keine Nachricht..., gibt aber der Passagier den Befehl ein, kommt die Nachricht an den Fahrer.

  • Hallöle!


    Kurze Frage; wie erstelle ich eine Variable mit Dini erstellen, um bei der Registration abzufragen, welchen Roleplay Namen man haben möchte, er diese dann in der (username).txt speichert und ich diese Variable dann in SendClieneMessage's undso einfügen kann, das dort halt der RP Name erscheint, statt der angegeben OOC Name.


    Vielen Dank!

  • Servus,


    das Tor öffnet sich aber schließt sich nicht mehr. Ich hab alles mögliche ausprobiert, komme nun jetzt nicht mehr weiter.



    if(gate == 0)
    {
    gate = 1;
    MoveDynamicObject(SAPDaMDTor, 1275.8568, -1841.8802, 9.5224, 4);//open
    }
    else if(gate == 1)
    {
    gate = 0;
    MoveDynamicObject(SAPDaMDTor, 1275.8568, -1841.8802, 15.1625, 4);//close
    }

  • Kurze Frage; wie erstelle ich eine Variable mit Dini erstellen, um bei der Registration abzufragen, welchen Roleplay Namen man haben möchte, er diese dann in der (username).txt speichert und ich diese Variable dann in SendClieneMessage's undso einfügen kann, das dort halt der RP Name erscheint, statt der angegeben OOC Name.

    Also Dini hat nichts mit einer Eingabe zu tun. Du möchtest, dass man über einen Dialog ([wiki]ShowPlayerDialog[/wiki]) dem User eine Eingabe ermöglichen und dann den Namen den er eingibt in einer Variable speichern.



    new roleplay_name[MAX_PLAYERS][MAX_PLAYER_NAME]; //Global


    //Dann unter OnDialogResponse
    format(roleplay_name[playerid],MAX_PLAYER_NAME,inputtext); //Hier wird der Roleplayname dann gesetzt für den Spieler


    //Und um dann einen Text auszugeben nutzt du einfach:
    format(string,sizeof(string),"%s sagt: %s",roleplay_name[playerid],text);


    Und unter OnPlayerDisconnect speicherst du ganz normal diesen String mit dini (oder du nutzt etwas aktuelleres und besseres).



    das Tor öffnet sich aber schließt sich nicht mehr. Ich hab alles mögliche ausprobiert, komme nun jetzt nicht mehr weiter.

    Wie wird denn dieser Code aufgerufen und ist die Variable gate lokal oder global deklariert? ;)

    ast2ufdyxkb1.png


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

  • Guten Abend,
    Ich habe eine frage kann man das aussteigen irgendwie verhindern.
    Wollte es mit einem Handschellen System verbinden dass man wenn das Car abgeschlossen ist dass man nicht aussteigen kann.


    Habs schon so Probiert aber ist nicht so schön :D


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if(Handschellen[playerid] == true)
    {
    new Float: pX, Float: pY, Float:pZ;
    GetPlayerPos(playerid, pX, pY, pZ);
    new seat = GetPlayerVehicleSeat(playerid);
    SetPlayerPos(playerid, pX, pY, pZ);
    PutPlayerInVehicle(playerid, vehicleid, seat);
    }
    return 1;
    }

  • Diese Funktion sollt eigentlich dazu dienen das Array zurückzusetzen aber da Strings im Enum sind, behindert diese Funktion die Ausführung der anderen unten drunter.
    Sprich, es passiert nichts beim Connecten, habe es getestet indem ich die Funktion ausgeklammert habe.
    Hat jemand für mich einen Lösungsvorschlag? Möchte ungerne alles manuell zurücksetzen.


    Hier mal die Funktion.

    stock ResetPlayer(playerid)
    {
    for(new i;i<sizeof pInfo;i++)
    {
    pInfo[playerid][pData:i] = 0;
    }
    return 1;
    }

  • Das will ich ja nicht machen, wollte eigentlich eine andere Lösung suchen

    Gibt es ;)



    Es gibt keine andere Lösung, nur Ihn zu TogglePlayerControllable.

    Nur weil du keine kennst heißt es nicht, dass es keine gibt.
    Daher wenn du dir nicht ganz sicher bist, verfasse doch keinen Beitrag.



    Du kannst quasi sobald er schon die Taste F oder Enter drückt ihn gleich wieder ins Fahrzeug setzen lassen.

    Ironischerweise geht das in diesem Fall nicht, da wird die Taste nicht getriggert.


    Man kann hier aber direkt mit OnPlayerExitVehicle arbeiten :)


    C
    public OnPlayerExitVehicle(playerid,vehicleid)
    {
        new seat = GetPlayerVehicleSeat(playerid);
        if(seat > 0) PutPlayerInVehicle(playerid,vehicleid,seat);
    }

    Hier mal die Funktion.

    Mach es effizent so:



    C
    stock ResetPlayer(playerid)
    {
        new tmp[pData];
        pInfo[playerid] = tmp;
        return 1;
    }

    ast2ufdyxkb1.png


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

  • Guten Abend!


    Ich möchte einen Perso machen, wo man am Textdraw nur den Kopf des Skins sieht. Wie mache ich das mit dem Textdraweditor? Wie ich normale Skins bekomme ist mir bewusst, nur das mit dem Kopf bekomm ich nicht hin.


    MfG


    Allrounder18

  • Ich möchte einen Perso machen, wo man am Textdraw nur den Kopf des Skins sieht. Wie mache ich das mit dem Textdraweditor? Wie ich normale Skins bekomme ist mir bewusst, nur das mit dem Kopf bekomm ich nicht hin.

    @Daniel_Waynee Zufall, dass du mich heute genau das Selbe gefragt hast? :D


    Nutze: https://wiki.sa-mp.com/wiki/TextDrawSetPreviewRot


    Z-Achse vermutlich etwas runter setzen und den Zoom erhöhen :)

    ast2ufdyxkb1.png


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

  • Wie mach ich sowas wenn ein Spieler in ein Checkpoint läuft das er automatisch etwas angezeigt kriegt ?


    Muss ich mit OnPlayerEnterCheckpoint(playerid) arbeiten oder womit ?


    Grüße

  • Genau.
    Dafür musst du [wiki]OnPlayerEnterCheckpoint[/wiki] verwenden.

    Mit Virabeln brauche 8 Checkpoints und wenn jemand darein geht soll etwas parssieren.


    Wie mach ich das ? Habe lange nicht mehr mit Pawno gearbeitet.

  • @ARCADION Indem du eine Variable setz.
    Erstell eine globale Variable oder füge eine Variable im Playerneum hinzu. (Wichtig die globale Variable muss für [MAX_PLAYERS] erstellt werden.)
    Du setzt die Variable und danach einfach einen Checkpoint, in der Abfrage gehst du so vor:


    Code
    public OnPlayerEnterCheckpoint(playerid)
    {
        if(pInfo[playerid][pCheckpoint] == CHECK_NAVI)
        {
    		GameTextForPlayer(playerid, "Angekommen", 255, 3);
    		DisablePlayerCheckpoint(playerid);
    		pInfo[playerid][pCheckpoint] = 0;
        }
    //...

    So würde es mit der PlayerEnum aussehen (grüße gehen raus @SkeeZy)
    Beim setzten dann einfach pInfo[playerid][pCheckpoint] = CHECK_NAVI;
    (Nach der Zeile den Checkpoint einfach setzten.)


    Wichtig ist, dass du solche Sachen (CHECK_NAVI) als Zahl definierst. z.b #define CHECK_NAVI 1


    //Edit
    Du könntest das Ganze auch erweitern und den Checkpoint wieder setzten, wenn ein Spieler mal ein Crash/Timeout hat oder so disconnected.
    (Usefull, wenn man die 0815 Tutorials an der Stelle weiter macht, wo man aufgehört hat z.b)

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

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