[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
  • ast2ufdyxkb1.png


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

  • Was passiert denn?


    Was gibst du ein?


    Was siehst du?


    Hast du mal ein paar prints gesetzt...einfach nur zu sagen "es geht nicht", bringt niemandem etwas :)

    ast2ufdyxkb1.png


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

  • Also hab die Query sowohl als auch die Tabelle nochmal geändert:


    ID(p_ID) von pID (der Spieler der gewarnt wird

    name: der Name von pID

    Grund: Grund

    Administrator: auszuführender Admin (der der /warn nutzt.


    gebe ein /warn 1 GrundXYZ


    Hab den Befehl mal 3x genutzt werde auch gebannt sobald ich auf okay drücke

    pasted-from-clipboard.png



    geprintet habe ich bisher nichts, und in den Logs steht soweit auch nichts


    Wie bekomme ich es hin das nicht alle Warns aus der DB gelöscht werden sondern nur ein Warn?


    Code
    CMD:unwarn(playerid,params[])
    {
        new pID, string[128], query[128];
        if(sscanf(params,"u", pID)) return SCM(playerid,GELB,"[ Verwendung ] /unwarn [playerid]");
        SCME(playerid, ORANGE,"Du hast dem Spieler %s einen Warn entfernt!", PlayerInfo[pID][pName]);
        PlayerInfo[pID][pWarns]--;
        mysql_format(handle,query,sizeof(query),"DELETE FROM users_warns WHERE id='%i'",PlayerInfo[pID][p_id]);
        mysql_pquery(handle, query);
        return 1;
    }

    2 Mal editiert, zuletzt von RaPTiiC () aus folgendem Grund: Ein Beitrag von RaPTiiC mit diesem Beitrag zusammengefügt.


  • Code
    CMD:unwarn(playerid,params[])
    {
        new pID, string[128], query[128];
        if(sscanf(params,"u", pID)) return SCM(playerid,GELB,"[ Verwendung ] /unwarn [playerid]");
        SCME(playerid, ORANGE,"Du hast dem Spieler %s einen Warn entfernt!", PlayerInfo[pID][pName]);
        PlayerInfo[pID][pWarns] -= 1;
        mysql_format(handle,query,sizeof(query),"DELETE FROM users_warns WHERE id='%i'",PlayerInfo[pID][p_id]);
        mysql_pquery(handle, query);
        return 1;
    }

    Einmal editiert, zuletzt von undbyebye ()

  • Guten Abend.


    Ich habe mir "sscanf2" gedownloadet und ins Script gepackt. Doch er spuckt diesen Fehler aus:

    Code
    C:\Users\Oskar\Desktop\GTA San Andreas  + Server\GTA San Andreas - Server\pawno\include\a_sscanf2.inc(123) : fatal error 111: user error: sscanf likes the community compiler.  Use `#define SSCANF_NO_NICE_FEATURES` to ignore this.


    Mit freundlichen Grüßen

    Oskar.Schindler




    <3 Rest In Peace - Chester Bennington - 20.07.2017 <3

  • Schreibe #define SSCANF_NO_NICE_FEATURES in deinen Code, am besten ganz oben wo auch andere Defines sind.

    Dies deaktiviert Features, die dem Community Compiler voraussetzen (brauchst du in der Regel nicht).

    Hallo Jeffrey


    Soweit war ich auch schon, aber der Fehler geht nicht weg. :thumbup: :D



    Mit freundlichen Grüßen

    Oskar.Schindler




    <3 Rest In Peace - Chester Bennington - 20.07.2017 <3

  • Hey und zwar wollte ich sowas wie eine Staatskasse machen :D


    Dazu dient mMn am besten die Regierungsfraktion bei mir wäre es die f_id 6 bisher habe ich gewisse ansätze jedoch ohne erfolg


    Möchte das der Arbeitslose immer eine Stütze erhält sobald mind. 5.000$ in der Regierungs FKasse vorhanden sind:


    mein PayDay Public sieht derzeit so aus:


    Dann wollte ich per Befehl die Fraktionskasse von der Fraktion 6 um 90.000$ füllen ging leider ebenfalls nicht:



    Mein FraktionsEnum falls nötig:




    freue mich über jegliche Hilfe <3

  • RaPTiiC Du setzt die ID der Kasse falsch, welche du füllen möchtest.

    Du hast quasi eine Abfrage stehen, ob der Wert true oder false ist, wodurch die ID immer 0 oder 1 sein wird.


    Das erkennst du daran, dass du nach dem Gleichzeichen einen Vergleich stehen hast ( a = b== c und das kann man auch so schreiben a = (b == c), falls es so klarer wird).


    LG

  • Jemand ne idee was das hier

    Stay within the world boundries

    auslösen kann habe alles erdenkliche versucht aber der misst kommt immer wieder

    Code
        AddPlayerClass(0,0,0,0,0,0,0,0,0,0,0);

    habe ich drin

  • Welche Funktion soll diese AddPlayerClass überhaupt haben?
    Willst du das Spawnsystem umgehen? Dann lass addPlayerClass einfach raus.
    Der Fehler sagt aus, dass du die Klasse außerhalb der Ingamewelt erstellst. Heißt die Koordinaten 0,0,0 sind wohl nicht möglich.
    @Grosim hoffe das hilft.

    MfG. Adrian

  • Welche Funktion soll diese AddPlayerClass überhaupt haben?
    Willst du das Spawnsystem umgehen? Dann lass addPlayerClass einfach raus.
    Der Fehler sagt aus, dass du die Klasse außerhalb der Ingamewelt erstellst. Heißt die Koordinaten 0,0,0 sind wohl nicht möglich.
    @Grosim hoffe das hilft.

    Ich hatte von damals noch in kopf das wenn das nicht drin ist das es das auslöst..


    mit 0,0,0 ist man aber nicht aus der welt ´? das doch der 0 punkt am bauernhof oder nicht ?

  • Nun zu meinem Anliegen.

    Ich habe vor alle vom Script ausgehenden Texte in mehreren Sprachen anzubieten, also mit Übersetzung.
    Hatte die Idee das ganze per DEFINES zu machen und dann halt eine sprachabfrage zu machen, sodass ich die texte beispielsweise in einem include übersetzen kann.

    Wie würdet ihr das ganze umsetzen. Für mich klingt das nicht nach der besten Lösung.


    Ich hatte von damals noch in kopf das wenn das nicht drin ist das es das auslöst..


    mit 0,0,0 ist man aber nicht aus der welt ´? das doch der 0 punkt am bauernhof oder nicht ?

    kp vllt von der Höhe aus.

    ich habs wie folgt umgangen. In OnPlayerRequestClass habe ich TogglePlayerSpectating(playerid, true) genutzt. Hier habe ich auch die Loginfunktion meines Servers.
    Von da aus dann die Skinauswahl, nach falls Registrierung.

    Und dann nach Login oder Skinauswahl eben ein direkter Spawn per SetPlayerSpawnInfo und SpawnPlayer.

    MfG. Adrian

    Einmal editiert, zuletzt von SkeeZy () aus folgendem Grund: Ein Beitrag von SkeeZy mit diesem Beitrag zusammengefügt.

  • Beitrag von undbyebye ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: erledigt ().
  • Okay. Hast du kein Login oder Registrierung dazwischen ? So kommst du ja in jedem Fall immer in die Kamerafahrten wenn ich es richtig sehe.
    //EDIT: Ah doch hast du wohl. Mein Fehler



    Hier nochmal aus sa-mp.com zu der Fehlermeldung



    This happens when..

    i) No Player Classes were added.

    ii) SetGravity is is too high.

    iii) Setting the players position too far out the map.

    iiii) Setting the players velocity too high.

    iiiii) Spawning a boat on water. (Quite rare but does happen)



    Der erste Punkt lässt sich umgehen, wie ich es erklärt habe.




    In deinem else-Fall könntest du jetzt einfach https://team.sa-mp.com/wiki/SetSpawnInfo.html und https://team.sa-mp.com/wiki/SpawnPlayer.html im forward nutzen.

    In OnPlayerRequestClass kommentier deine oberen zwei Funktionen mal aus und nutz stattdessen TogglePlayerSpectating(playerid, true);

    MfG. Adrian

  • Nun zu meinem Anliegen.

    Ich habe vor alle vom Script ausgehenden Texte in mehreren Sprachen anzubieten, also mit Übersetzung.
    Hatte die Idee das ganze per DEFINES zu machen und dann halt eine sprachabfrage zu machen, sodass ich die texte beispielsweise in einem include übersetzen kann.

    Wie würdet ihr das ganze umsetzen. Für mich klingt das nicht nach der besten Lösung.

    Gibt eine heftige YSI-Lib dazu: https://github.com/pawn-lang/YSI-Includes

    Leider ist sie nicht (mehr) gut dokumentiert und schwer sich reinzuarbeiten.


    Spontan würde mir sowas einfallen:

    Wenn du öfters den Selben Satz verwendest, sowas wie z.B. "Du bist kein Admin!"


    Leg dir dafür konstanten an:


    C++
    stock const NO_ADMIN_MSG_GER[] = "Du bist kein Admin!";
    stock const NO_ADMIN_MSG_ENG[] = "You're not an admin!";
    stock const NO_ADMIN_MSG_SPN[] = "No eres un admin!";
    
    //Und dann an entsprechender Stelle einfach:
    if(!IsAdmin(playerid,5)) return SCML(playerid,rot,NO_ADMIN_MSG_GER,NO_ADMIN_MSG_ENG,NO_ADMIN_MSG_SPN);

    Dadurch wird nämlich nur 1x der Speicher reserviert ;)

    ast2ufdyxkb1.png


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