[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
  • Probier mal das



  • GetAlter(strval(Date[0]),strval(Date[1]),strval(Date[2])


    Was muss ich hier ändern?


    Habe ich in dem Stock die Möglichkeit zu sagen, das er nicht alter das geburtsdatu nicht vor 1930 und nach 2015 setzen kann?
    Kann ich es so machen, das egal ob man sich 2019 oder 2020 registriert der Charakter immer nur manimal 14 Jahre alt sein kann?


    Edit: Ich hab den Codeschnipsel getestet, jetzt steht bei Alteri der DB 101 wenn ich 23 Jahre bin.

  • Hey,


    Ich habe mal eine frage,


    Ich wollte gerade was schreiben das man ingame auch die Fraktionen Bearbeiten kann heißt Spawn Fraktionskasse usw wie würdet ihr das hand haben mit den Fraktions Spawn?
    -> Eher Per Dialog wo man die Koordinaten eingeben muss.
    -> Eher per Command.


    Ich weiß nicht wie ich das am besten machen soll mit den Fraktions Spawn der rest ist mir schon verständlich genug :D

  • Einen Befehl.
    Statt dort Koordinaten eingeben zu müssen, sollte einfach der Spawn zu der Position des Spielers gesetzt werden, ist viel einfacher.

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

  • Hey,


    Kurze frage wen ich 0 eingebe kommt der Dialog wieder?
    Also scheinbar mag er die 0 nicht ist doch alles richtig oder sehe ich das Falsch :D?

  • Kann es sein, dass in meiner Tablle etwas falsch ist und deswegen Alter 101 steht?


    alter.PNG
    Edit: Muss ich beim Abspeichern des Alters mit GetAlter arbeiten bzw. es beim Abspeichern anders berechnen?
    @Kaliber hast du bitte vlt ne Lösung?


    Edit: Problem gelöst. Danke an alle die einen Lösungsansatz gebracht haben!

  • Abend,
    Ich habe bei meinem Blitzer System eine frage.
    Unswa wenn ich auf den Blitzer zufahre dann Blitzt er nicht aber sobald ich hinter dem Blitzer bin Blitzt er.
    Ich habe mir das Ganze mal Printen lassen weiß aber nicht was ich dagegen machen soll

    Code
    if(IsPlayerFacingPos(playerid, 180.0, Blitzi[i][blitz_x], Blitzi[i][blitz_y]))
    			{
    			    if(Blitztime[playerid] == 0 || Blitztime[playerid] > gettime())
    				{
    					Blitz_Player(playerid);
    					Blitztime[playerid] = gettime() + 60*15;
    				}
    			}




    @Kaliber
    @Jeffry
    Habt ihr noch ein Plan ?

  • Hi!


    Wie kann ich machen,dass von dem Namen die Unterstriche im Chat entfernt werden z.B(Max_Mustermann -> Max Mustermann)?


    MfG


    Edit:
    Momentan versuche ich es so

    C
    stock strreplace(string[], find, replace)
    {
        for(new i=0; string[i]; i++)
        {
            if(string[i] == find)
            {
                string[i] = replace;
            }
        }
    }



    C
    public OnPlayerText(playerid, text[])
    {
        new message[128],rpname[255];
        rpname = SpielerDaten[playerid][player_RPName];
        strreplace(rpname, '_', ' ');
        format(message, sizeof(message), "{969696}%s sagt: {FFFFFF}%s", rpname, text);
        return SendClientMessageToAll(WEISS, message);
    }


    Das funktioniert jedoch nicht.



    Was muss ich da machen damit das _ im RP Namen mit nem Leerzeichen ersetzt wird?

  • Nicht getestet, sollte aber funktionieren.

  • Danke, es funktioniert einwandfrei


    Edit:


    Ich ba jetzt gemacht das sich die Farbe ändert je weiter die anderen Spieler weg sind, jedoch wird die Nachricht nicht angezeigt. Was ist da falsch?
    @LeonMrBonnie


    Edit: Code umgebessert
    Muss es if(!SpielerDaten[i][player_Eingeloggt](i)) continue; sein oder ohne (i)?

  • Verwende bei Loops bei denen du durch alle Spieler loopst entweder GetPlayerPoolSize (Das ist die Anzahl der verbundenen Spieler) oder nutze das foreach Include.
    Wie hast du denn CHAT_RADIUS und CHAT_FADES definiert?


    Muss es if(!SpielerDaten[player_Eingeloggt](i)) continue; sein oder ohne (i)?

    Das (i) in Klammern macht dort keinen Sinn, da du ja auf deine Spielerdaten zugreifen willst die in einem enum gespeichert sind, und nicht eine Funktion aufrufst. Also muss es if(!SpielerDaten[i][player_Eingeloggt]) continue; sein.

  • 1. Wieso funktioniert du Funktion, du gibst keine String-Größe an?


    2. Es ist klar definiert, dass nur ein Unterstrich im Namen vorkommen darf, oder?


    Dann könntest du die Funktion einfach so schreiben:


    C
    stock RemoveUnderscore(const text[MAX_PLAYER_NAME+1])
    {
        new i = strfind(text,"_");
        if(i == -1) return text;
        new string[MAX_PLAYER_NAME+1];
        strcat(string,text),string[i] = ' ';
        return string;
    }


    Mit der Funktion ist auch sichergestellt, dass du nicht zu große Arrays verwendest oder zu kleine :D


    Und bei deinem Callback kommst du durcheinander (der Fehler liegt bei den String-Variablen), weil du alles darein packst.


    Aber das ist doch eine eigene Funktion, die du an anderer Stelle eventuell wieder verwenden kannst, lager sie doch einfach aus.


    Schreib es so:


    PS: Falls du die Funktion oben verwendest und einen Fehler erhälst wegen der Array Size, im Enum muss die Größe von player_RPName exakt MAX_PLAYER_NAME+1 sein.

    ast2ufdyxkb1.png


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

  • hat jemand einen Plan was ich Flasch mache ?

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