Beiträge von Kaliber

    Naja. Ich weiss ja nicht weil tsuserid soll die Eindeutige ID sein: z.b. ajMvTCVPY9bupybnU1BdSk0Za1U=


    Sag das doch...das du diese tsID meinst :rolleyes:


    Dann musst du es so machen:


    format(tsuserid, 128, inputtext);


    Meine Meinung
    Allerdings erachte ich deine Vorgehensweise als falsch.
    Schließlich hat jeder Spieler eine Ts³ Userid..somit brauch jeder Spieler diese Variable.
    Weiterhin ist diese ID keine 128 Zeichen lang, sondern nur 28.

    Meine Meinung
    Sprich deine Variable sollte so aussehen:

    Meine Meinung
    new tsuserid[MAX_PLAYERS][28];

    Meine Meinung
    //und dann so nutzen:
    format(tsuserid[playerid], 28, intputtext);


    mfg. :thumbup:

    Nehmen wir in meinem Beispiel mal an, dein String heißt string ^^


    Dann sähe das folgendermaßen aus:


    static const string[] = "123456789012345678901234567890"; //Das ist unser String


    //dann da wo du ihn splitten willst
    new buffer[17]; //Wir brauchen einen buffer und 17 weil die maximale Länge ja 15 Zeichen sein soll + '\n' und '\0'
    strmid(buffer,string,0,15,17); // 0 = startpos vom String | 15 = Endpos vom String und | 17 maxlength
    buffer[16] = '\n';
    //und jetzt kannst du buffer ausgeben :)


    PS: Er würde 0-15 + \n ausgeben ;)


    mfg. :thumbup:

    werden sie z.B wenn sie vorher 3KB groß waren sind sie jetzt 10MB groß.


    Das liegt daran, dass in der streamer.inc von Incognito auch nur Callbacks für das Plugin stehen und der Code erst im Plugin verarbeitet wird.
    Bei der Fallout Include wird alles direkt in der Include verarbeitet.


    Und von der Streamleistung hat sich bei mir auch nichts verändert.


    Da kann sich auch nichts verändern (nur zum schlechteren).
    Dazu müsstest du aber erstmal richtig verstehen, was "streaming" in samp eig ist.
    Sa:Mp kann nur maximal 1000 public Objekte anzeigen und das ist ein Problem, da man ja mehr als 1000 Objekte mappen will. Deshalb nutzt man CreatePlayerObject und dann kann man 1000 Objekte pro Spieler erstellen und sobald der Spieler aus der reichweite der StreamDistance ist, wird das Objekt zerstört, so das neue Objekte angezeigt werden können.
    So oder so können einem Spieler nur 1000 Objekte gleichzeitig angezeigt werden (gemappte) und da das Incognito schon sehr gut umsetzt, kann das nicht viel anders werden (außer schlechter).


    mfg. :thumbup:

    Ich habe mich schon immer gefragt wofür der Includes Ordner im Hauptverzeichnis des Servers ist.


    Das benötigt der Server eigentlich nicht ;)


    Und wenn ich Scripts kompiliere werden sie z.B wenn sie vorher 3KB groß waren sind sie jetzt 10MB groß.


    Das liegt daran, dass sobald du einen Gamemode mit einer Include kompilierst, der Inhalt vom Include in die Gamemode amx umgewandelt wird.


    Anscheinend verwendet die Include viele Arrays und somit verbraucht das viel Speicher (kenne aber diese Include nicht genau).


    Somit machst du nichts falsch ;)


    Aber du solltest evtl doch auf Incognitos Streamer umsteigen, da Plugins in einem extra Thread laufen und das somit Server schonender ist ;)


    mfg. :thumbup:

    Einfach folgendes:


    //Unter OnPlayerText:
    new name[MAX_PLAYER_NAME],msg[144];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(msg,144,"%s sagt: %s",name,text);
    return SendRangeMessage(playerid,farbe,15.0,msg),0; //15.0 = Range..kannst du einstellen


    //Und unten ins Skript:
    stock SendRangeMessage(playerid,farbe,Float:range,msg[]) {
    new Float:p[3];
    GetPlayerPos(playerid,p[0],p[1],p[2]);
    for(new i; i!=MAX_PLAYERS; i++) if(IsPlayerInRangeOfPoint(i,range,p[0],p[1],p[2])) SendClientMessage(i,farbe,msg);
    return 1;
    }


    mfg. :thumbup:

    Auch wenn das nicht wirklich zum Thema gehört:


    Spoiler anzeigen
    Wenn man nur 1nen Parameter haben will so wie in diesem Fall, sollte man kein sscanf nutzen, da das nur unnötig Zeit verbraucht und ungenau ist (wenn du z.B. einen Text hast splittet sscanf die Leerzeichen raus, was bei einem Text suboptimal ist)...

    Spoiler anzeigen
    Also kannst du auch einfach folgendes machen:

    Spoiler anzeigen
    ocmd:a(playerid,params[]) {
    if(!GetPVarInt(playerid,"Adminlevel")) return SendClientMessage(playerid,Grau,"Du bist kein Administrator!");
    if(!params[0]) return SendClientMessage(playerid,Grau,"Verwendung: /a [Text]"); //Sollte klar sein.
    new message[144],name[MAX_PLAYER_NAME]; //Ein String namens message und eine Variable namens name wird erstellt.
    GetPlayerName(playerid,name,sizeof(name)); //Der Name aus der Variable name wird ausgelesen.
    format(message,sizeof(message),"* Supporter %s: %s",name,params); //Der String message wird formatiert, sodass dort der ausgelesene Name verwendet werden kann.
    return SendAdminMessage(Gelb,message); //Der Stock SendAdminMessage sendet den formatierten String nur an Spieler, die einen Adminrang besitzen. Weiteres dazu unten.
    }


    mfg. :thumbup: