/me wie

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
  • new string[64], name[24];
    GetPlayerName(playerid, name, 24);
    format(string, 64, "Spieler %s hat 2L Vodka getrunken !",name);
    SendClientMessageToAll(0xFFFFFF, string);


    SendClientMessageToAll halt nicht, sondern irgentwas was einen Radius bei dir hat ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • if(strcmp(cmd, "/me", true) == 0)// Command name
    {// opening bracket
    new length = strlen(cmdtext);// forgot how to explain this
    while ((idx < length) && (cmdtext[idx] <= ' ')) {//forgot this part =D
    idx++;
    }
    new offset = idx;
    new result[128];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;// untill here :)
    if(!strlen(result)) { // if he wrote nothing infront of /me
    SendClientMessage(playerid, 0xFFFFFFFF, " /me [action]");// sending a message
    return 1;// returning 'true'
    }
    format(string, sizeof(string), "* %s %s", sendername, result);// formatting the message
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);//sending the message to nearby players
    return 1;// returning 'true'
    }//closing bracket


    Google ist was feines ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • rCmd[s]->me(playerid,success,text[64]) //Der Befehl, hab ihn grad mit rcmd gemacht
    {
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,deinefarbe,"Du bist kein Administrator!"); //Das ist ne RCON Abfrage, musst es halt an deine Anpassen. Wichtig ist das ! was not oder halt den Wert 0 wiederspiegelt
    /*Kleiner Tipp:
    oben ins Script:
    #undef MAX_PLAYERS
    #define MAX_PLAYERS deineslotanzahl
    Musst du halt durch deine Spieleranzahl ergänze, das kann die amx als mehr um die hälfte schrumpfen lassen. */
    new i = 0, Float:x,Float:y,Float:z, name[24]; GetPlayerPos(playerid,x,y,z); GetPlayerName(playerid,name,24);
    for; i < MAX_PLAYERS; i++) //Die Schleife
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(playerid,15.0,x,y,z)) //Fragt ab ob der Spieler connected ist & in der nähe (15.0) meter von dir ist.
    {
    new string[100]; format(string,100,"%s %s",name,text);
    SendClientMessage(playerid,deinefarbe,string);
    }
    }
    return true;
    }

    So, oder so ähnlich.
    Weiß nisch obs geht, bin kein schleifen-profi.

  • Die Schleife muss bei dir so aussehen Dominik:


    for(i < MAX_PLAYERS; i++)


    PS: Nicht jeder nutzt rCmd, ich glaube außer dir und dem Erfinder (vielleicht) keiner :D


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • if(strcmp(cmd, "/me", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist noch nicht eingeloggt!");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "NUTZUNG: /me [aktion]");
    return 1;
    }
    format(string, sizeof(string), "* %s %s", sendername, result);
    ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
    printf("%s", string);
    }
    return 1;
    }



    forward ProxDetectorS(Float:radi, playerid, targetid);
    public ProxDetectorS(Float:radi, playerid, targetid)
    {
    if(IsPlayerConnected(playerid)&&IsPlayerConnected(targetid))
    {
    new Float:posx, Float:posy, Float:posz;
    new Float:oldposx, Float:oldposy, Float:oldposz;
    new Float:tempposx, Float:tempposy, Float:tempposz;
    GetPlayerPos(playerid, oldposx, oldposy, oldposz);
    //radi = 2.0; //Trigger Radius
    GetPlayerPos(targetid, posx, posy, posz);
    tempposx = (oldposx -posx);
    tempposy = (oldposy -posy);
    tempposz = (oldposz -posz);
    //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
    if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
    {
    return 1;
    }
    }
    return 0;
    }

  • Verständlicher ist das ganze mit dem stock "strget", welches
    den komplizierten strtok Befehl um einiges leichter macht.


    Zum Beispiel:


    if(strcmp(strget(cmdtext,0),"/me",true)==0)
    {
    if(strlen(strget(cmdtext,1)==0) return SendClientMessage(playerid,COLOUR_RED,"Benutze: /me [AKTION]"); // Falls jemand nur /me eingibt kommt ein Error.
    new aktion[200]=cmdtext; // Die Variable hat nun den kompletten eingegeben Text eingespeichert.
    new name[MAX_PLAYER_NAME]; // Variablenerstellung zum Speichern des Namens
    GetPlayerName(name,sizeof(name)); // Spielername in die Variable speichern
    strdel(aktion,0,4); // wir löschen das /me aus der Variable, damit nicht da steht: "/me USER trinkt Wein."
    format(aktion,sizeof(aktion),"%s %s",name,aktion); // Formatieren des Ausgabetextes
    new Float:x,Float:y,Float:z; // Variablenerstellung für die Koordinaten des Spielers
    GetPlayerPos(playerid,x,y,z); // Koordinaten werden hineingespeichert
    for(new i=0;i<MAX_PLAYERS;i++) // ALle Spieler werden überprüft,
    {
    if(!IsPlayerConnected(i)) continue; // Wenn sie nicht mit dem Server verbunden sind, -> Weiter
    if(!IsPlayerInRangeOfPoint(i,5,x,y,z)) continue; // Wenn sie nicht in Reichweite des Spielers sind -> Weiter
    SendClientMessage(i,string); // Ausgabetext für alle Spieler die in Reichweite des Punktes sind.
    }
    return 1;

    }


    Hoffe ich konnte helfen :)

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