Megaphone System

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
  • Nabend Breadfishler,


    Ich habe da mal eine frage an euch und wollte euch fragen wie man ein Megaphone System erstellt ich hätte gedacht das ich es so mache (OnPlayerCommand):


    if (strcmp("/m", cmdtext, true, 10) == 0)
    {
    new mText[145], name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(mText, sizeof (mText), "%s o<: %s", name, text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,60.0, x, y, z))
    {
    SendClientMessage(i, 0xEBFF00FF, mText);
    }
    }
    return 0;
    }


    Oder wie soll ich das sonst machen? :)

  • Dein Ansatz ist gar nicht so falsch,


    OnPlayerCommandText ist richtig, deine Befehls-Abfrage auch, du hast aber nicht eingefügt, dass er den Text schreibt, den man angibt.
    Du hast format(mText, sizeof (mText), "%s o<: %s", name, text); in Zeile 6, erstellst diese Variable aber nie. Dafür benutzt du am besten strtok

  • Dann füge diese Funktion zu deinem Script hinzu:


  • Das ist ganz egal, hauptsache ist, dass sie in deinem Script steht. Wegen der Übersichtlichkeit aber am besten zu den anderen Stocks, ja.


    Danach fügst du direkt am Anfang von OnPlayerCommand Text folgenden Code ein.

    C
    new cmd[128], idx;
    cmd = strtok(cmdtext, idx);


    Dann änderst du bei allen Command abfragen das cmdtext zu cmd um.


    Um dann den Text zu bekommen schreibst du bei deinem /m Befehl:

    C
    new text[128];
    text = strtok(cmdtext, idx);


    Nun hast du in der Variable text deinen Megafon Text.

  • @datgame


    habe es nun so:


    if (strcmp("/m", cmd, true, 10) == 0)
    {
    new text[128];
    text = strtok(cmdtext, idx);
    new mText[145], name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(mText, sizeof (mText), "Officer %s o<: %s", name, text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,60.0, x, y, z))
    {
    SendClientMessage(i, 0xEBFF00FF, mText);
    }
    }
    return 0;
    }
    }


    Und kriege diese Errors:
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(977) : error 017: undefined symbol "cmd"
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(980) : error 017: undefined symbol "idx"

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • /edit @datgame so habe ich es


    public OnPlayerCommandText(playerid, cmdtext[]){
    new cmd[128], idx;
    cmd = strtok(cmdtext, idx); //Betroffene Zeile (818)


    und der Befehl:
    new text[128];
    text = strtok(cmdtext, idx); //Betroffene Zeile (980)
    if (strcmp("/m", cmd, true, 10) == 0)
    {
    new mText[145], name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(mText, sizeof (mText), "Officer %s o<: %s", name, text);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,60.0, x, y, z))
    {
    SendClientMessage(i, 0xEBFF00FF, mText);
    }
    }
    return 0;
    }
    }


    Und ich kriege nun diese Errors und Warnings:
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(818) : error 047: array sizes do not match, or destination array is too small
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(980) : error 047: array sizes do not match, or destination array is too small
    C:\Users\User\Desktop\SAMP SERVER\gamemodes\Selfmade.pwn(997) : warning 209: function "ocmdOnPlayerCommandText" should return a value

    2 Mal editiert, zuletzt von KinGRaPTiiC ()


  • if (strcmp("/m", cmdtext, true, 10) == 0)
    {
    new result[128], text[145];
    if(sscanf(params, "s", result))return SendClientMessage(playerid, 0xEBFF00FF, "benutze:{FFFFFF} /m [Nachricht]");
    new name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(text, sizeof (text), "%s o<: %s", name, result);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,60.0, x, y, z))
    {
    SendClientMessage(i, 0xEBFF00FF, text);
    }
    }
    return 0;
    }

  • Beitrag von Szertockz ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Falls du das Include ocmd inkludiert hast dan nutze es:



    ocmd:m(playerid, params[])
    {
    new result[128], text[145];
    if(sscanf(params, "s", result))return SendClientMessage(playerid, 0xEBFF00FF, "benutze:{FFFFFF} /m [Nachricht]");
    new name[MAX_PLAYER_NAME], Float:x, Float:y, Float:z;
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, x, y, z);
    format(text, sizeof (text), "%s o<: %s", name, result);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInRangeOfPoint(i,60.0, x, y, z))
    {
    SendClientMessage(i, 0xEBFF00FF, text);
    }
    }
    return 1;
    }

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