[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
  • Du kannst mit der Funktion, soweit ich weiß, nur alle an oder aus machen.
    Mir würde spontan nur einfallen, sowas über https://wiki.sa-mp.com/wiki/UpdateVehicleDamageStatus zu realisieren. Sprich du machst die entsprechenden Lichter kaputt, dann sind die die nicht kaputt sind an.


    Das musst du mal ausprobieren, ob das so klappt. In dem Link ist auch der Hinweis dabei, wie du mit den Bits umgehst. Da musst du wahrscheinlich erst mal ein paar Tests machen, damit du siehst wie es funktioniert.

  • @ Jeffry:


    Bezüglich des Textdraws, welches im Gamemode steht, habe ich nun alle FS rausgepackt, daraufhin wurde es angezeigt.
    Ich weiß auch, dass es am Tacho Filterscript liegt.


    new Text:LoginBoxOben;


    Wird im Tacho Filterscript nicht benutzt, daran kann es also nicht liegen.

  • Okay, jetzt funktioniert es aber es gibt nun ein neues Problem.


    Nachdem ich mich einlogge werde ich nun in LV oben auf der Rolltreppe gespawnt, kann zwar den
    Spieler bewegen, aber die Camera ist nicht hinter den Spieler sondern auf die Rolltreppe gerichtet.
    Ich habe schon etwas selbst rumversucht, als das allerdings nicht geklappt hat, habe ich das ganze wieder auf Anfang versetzt.


    Das Gamemode ist komplett Blank und läuft mit Filterscripts, das LoginRegisterSystem habe ich als Filterscript abgeändert.



    public OnFilterScriptInit()
    {
    Connect_To_Database();
    LoginBoxOben = TextDrawCreate( 0.0000, -118.0, "~n~");
    TextDrawLetterSize(LoginBoxOben, 1.0000, 26.0000);
    TextDrawUseBox(LoginBoxOben, 1);
    TextDrawBoxColor(LoginBoxOben, 0x000000FF);
    TextDrawFont(LoginBoxOben, 0);
    TextDrawSetShadow(LoginBoxOben, 0);
    TextDrawSetProportional(LoginBoxOben, 0);
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetSpawnInfo(playerid,0,SpielerInfo[playerid][pSkin],2006.3914,-2545.1011,13.5469,307.4820,29,999,0,0,0,0);
    SpawnPlayer(playerid);
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(response)
    {
    if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Registrierung","Du hat kein Passwort angegeben, oder das angegebene Passwort war zu Kurz!","Registrieren","Abbrechen");
    return 1;
    }
    else
    {
    CreateAccount(playerid, inputtext); //Account wird erstellt
    LoadPlayer(playerid); //Account wird geladen
    ShowPlayerDialog(playerid,DIALOG_SEX,DIALOG_STYLE_LIST,"Geschlecht:","Männlich\nWeiblich","Wählen","Abbrechen!");
    return 1;
    }
    }
    else
    {
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    }
    case DIALOG_LOGIN:
    {
    if(response)
    {
    if(strlen(inputtext) == 0) // Wenn kein Passwort angegebene wurde
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Das Angegebene Passwort war Falsch!","Anmelden","Abbrechen");
    return 1;
    }
    else
    {
    new SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
    if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true)) // Wir holen uns das Passwort aus der MySQL Datenbank und überprüfen es mit dem angegebenen passwort.
    {
    SetPVarInt(playerid,"Eingeloggt",1); //Falls beide passwörter übereinstimmen wird die Variable auf 1 gesetzt damit wir die Skin auswahl benutzen können.
    LoadPlayer(playerid); //Der Spieler wird "geladen", speich es werden seine Daten aus der Datenbank geholt und in variablen gespeichert um diese im Skript zu verwenden.
    SpawnPlayer(playerid); //Wir lassen den Spieler Spawnen
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    else
    {
    //Wenn das Passwort falsch war, lassen wir erneut das Login fenster erscheinen damit der Spieler das Richtige Passwort eingibt.
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Anmeldung","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    }
    }
    else
    {
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    }
    case DIALOG_SEX:
    {
    if(!response)
    {
    DeleteAccount(playerid);
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    else
    {
    switch(listitem)
    {
    case 0:
    {
    new string[256]; format(string, sizeof(string),"UPDATE `accounts` SET `Sex` = 'Männlich' WHERE `id` = '%i'", SpielerInfo[playerid][pdb_id]); mysql_query(string);
    ShowPlayerDialog(playerid,DIALOG_BDAY,DIALOG_STYLE_INPUT,"Alter:","Gebe dein Geburtsdatum ein!","Okay!","Abbrechen");
    return 1;
    }
    case 1:
    {
    new string[256]; format(string, sizeof(string),"UPDATE `accounts` SET `Sex` = 'Weiblich' WHERE `id` = '%i'", SpielerInfo[playerid][pdb_id]); mysql_query(string);
    ShowPlayerDialog(playerid,DIALOG_BDAY,DIALOG_STYLE_INPUT,"Alter:","Gebe dein Geburtsdatum ein!","Okay!","Abbrechen");
    return 1;
    }
    }
    }
    }
    case DIALOG_BDAY:
    {
    if(!response)
    {
    DeleteAccount(playerid);
    Kick(playerid); //Wenn auf Abbrechen geklickt wurde, wird der Spieler gekickt damit man ohne Account nicht Spielen kann.
    }
    else
    {
    new d, m, y;
    if(!IsValidDate(inputtext, d, m, y))
    {
    ShowPlayerDialog(playerid,DIALOG_BDAY,DIALOG_STYLE_INPUT,"Alter:","Gebe dein Geburtsdatum ein!","Okay!","Abbrechen");
    return 1;
    }
    else
    {
    new query[256];
    format(query, sizeof(query),"UPDATE `accounts` SET `bdaytag` = '%i', `bdaymonat` = '%i', `bdayjahr` = '%i' WHERE `id` = '%i'", d, m, y, SpielerInfo[playerid][pdb_id]);
    mysql_query(query);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpawnPlayer(playerid);
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    }
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von Syneroz ()

  • Hey Leute,


    Kann mir jemand erklären wie ich bei AHk mit der SAMP-UDF Variablen erstelle...


    Das zum Beispiel spieler im Keybinder, Bin Down... | <City> | <Zone> | W´s: <Wanteds>, eintragen können.


    Aber der KEybinder Ingame, Bin Down... | SF | Garcia | W´s: 12, ausgibt


    Hab schon einiges ausprobiert aber bekomme es irgendwie nicht hin....


    Gruß
    Renz

  • (55946) : warning 219: local variable "modelid" shadows a variable at a preceding level
    public OnPlayerSelectDynamicObject(playerid, objectid, modelid, Float:x, Float:y, Float:z)


    Wie bekomm ich den Warning weg ? Hab schon das Modelid in vehicleid versucht zu umschreiben doch bekomme einen Error dann oder auch wenn ich das modelid weglasse kommt ein Error

  • Vielen Dank!


    Jeffry:


    Kannst Du mir die Box für unten auch geben?

    Einmal editiert, zuletzt von Syneroz ()

  • Wie schreibe ich am besten eine Funktion, die ich zwische Nachrichten packe, sodass die Nachrichten in bestimmten Abständen weiter gesendet werden?
    Sollte am besten auch freundlich sein und nicht so viel Ressourcen fressen, wenn z.B 100 Spieler gleichzeitig diese Nachrichten in Abständen bekommen.

  • Kannst Du mir die Box für unten auch geben?


    LoginBoxUnten = TextDrawCreate( 0.0000, 310.0, "~n~");
    TextDrawLetterSize(LoginBoxUnten, 1.0000, 19.0000);
    TextDrawUseBox(LoginBoxUnten, 1);
    TextDrawBoxColor(LoginBoxUnten, 0x000000FF);
    TextDrawFont(LoginBoxUnten, 0);
    TextDrawSetShadow(LoginBoxUnten, 0);
    TextDrawSetProportional(LoginBoxUnten, 0);


    SnipeZ: Da ist wohl ein Timer die beste Methode.

  • Du kannst mit der Funktion, soweit ich weiß, nur alle an oder aus machen.
    Mir würde spontan nur einfallen, sowas über https://wiki.sa-mp.com/wiki/UpdateVehicleDamageStatus zu realisieren. Sprich du machst die entsprechenden Lichter kaputt, dann sind die die nicht kaputt sind an.


    Das musst du mal ausprobieren, ob das so klappt. In dem Link ist auch der Hinweis dabei, wie du mit den Bits umgehst. Da musst du wahrscheinlich erst mal ein paar Tests machen, damit du siehst wie es funktioniert.


    ok, danke, werde ich dann versuchen.



    Eine weitere Frage: Wie kann man KM eines Fahrzeuges auslesen bzw. wie kann man auslesen wie viele KM das Fahrzeug zurück legt/gelegt hat?


  • Danke


    Ähm eine weitere Frage noch :D :


    Wenn ein Admin /öffenesuptick ein gibt soll ein Listen-Dialog kommen, wo alle offenen Support Tickets drin stehen.
    z.B.: Es hat kein Spieler einen Support geschrieben, also ist die Liste leer.
    Wenn jetzt sagen wir 2 Personen einen Support verfasst haben sollte es dann so dastehen:
    -Support von (Name), ID, Betreff:
    -Support von (Name2), ID2, Betreff:


    Also jetzt zur eigentlichen Frage: wie kann man listen, wie im oberen Beispiel, erweitern, wenn jmd /sup eingibt?


    Danke im Voraus


    MfG