/news <TEXT> Kann mir jemand helfen

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
  • Ich hätte höchstens einen gametext im angebot ;)


    oben zu den defines

    #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1


    Onplayercommandtext

    dcmd(news,4,cmdtext);


    Ganz unten im Script:



    dcmd_news(playerid,params[])
    {
    new gametext[256];
    if(sscanf(params, "s", gametext))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutzung: /news [Nachricht]");
    }
    if(pInfo[playerid][pAdmin]<3)//Hier musst du deine Fraktion Definieren
    {
    return SendClientMessage(playerid,COLOR_RED,"Du bist kein Admin Level 3!");
    }
    else
    {
    new gametextsend[256];
    format(gametextsend, sizeof(gametextsend), "~g~%s", gametext);
    GameTextForAll(gametextsend,4000,6);
    new aname[MAX_PLAYER_NAME], string2[256];
    GetPlayerName(playerid, aname, sizeof(aname));
    format(string2, sizeof(string2), "[News] %s hat eine nachricht gesendet.", aname);
    SendClientMessageToAll(COLOR_RED, string2);


    }
    return 1;
    }


    //Edit: Upps was vergessen
    das hier kommt ganz ans ande von Skript

    //=============================================SSCANF ZEUGS=========================================//
    stock sscanf(string[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(string))
    #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (string[stringPos] && string[stringPos] <= ' ')
    {
    stringPos++;
    }
    while (paramPos < paramCount && string[stringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = string[stringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = string[++stringPos];
    }
    do
    {
    stringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = string[stringPos];
    do
    {
    stringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = string[stringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, string[stringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = stringPos;
    while(changepos < 16 && string[strpos] && string[strpos] != delim)
    {
    changestr[changepos++] = string[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    stringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = stringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = string[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    string[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - stringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, string[stringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    string[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    stringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = string[stringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = string[stringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    stringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
    stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
    stringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }

    mfg Solstafir

  • #define orange 0xFF9900AA



    if(strcmp(cmdtext,"/news", true,5)== 0)
    {if(!strlen(strget(cmdtext,2)))
    return
    SendClientMessage(playerid,gelb,"Benutze: /news [Text]");
    GetPlayerName(playerid,name,sizeof name);


    format(string,sizeof string,"[News] %s: %s",name,cmdtext[6]);
    {
    SendClientMessageToAll(orange,string);
    }
    return 1;
    }

  • Danke an beide aber bei dem 2. fehlt noch was kanst du das noch da zu machen bekmme Errors:


    Hab jetzt nur noch 1 error:

    Code
    C:\Dokumente und Einstellungen\Marvin\Desktop\SAMP-Server\samp03awindowsserver\filterscripts\server.pwn(43) : warning 217: loose indentation
    C:\Dokumente und Einstellungen\Marvin\Desktop\SAMP-Server\samp03awindowsserver\filterscripts\server.pwn(46) : warning 217: loose indentation
    C:\Dokumente und Einstellungen\Marvin\Desktop\SAMP-Server\samp03awindowsserver\filterscripts\server.pwn(47) : error 017: undefined symbol "strget"
    C:\Dokumente und Einstellungen\Marvin\Desktop\SAMP-Server\samp03awindowsserver\filterscripts\server.pwn(50) : warning 217: loose indentation
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.

    2 Mal editiert, zuletzt von Marvo ()

  • stock strget(strx[], pos, search = ' ') { new arg, ret[128], idxx; for (new i = 0; i < strlen(strx); i++) { if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) { arg++; if (arg == pos + 1){ ret[i-idxx] = EOS; return ret; } else if (arg == pos) idxx= i+1; } else if (arg == pos) ret[i - idxx] = strx[i]; } return ret; }

    Die deutsche Rechtschreibung ist Freeware, sprich du darfst sie kostenlos nutzen...
    Sie ist aber nicht Open Source, somit darfst du sie nicht verändern oder in veränderter Form veröffentlichen!



  • stock strget(strx[], pos, search = ' ')
    {
    new arg, ret[128], idxx;
    for (new i = 0; i < strlen(strx); i++) {
    if(strx[i] == search || i == strlen(strx) || strx[i + 1] == 10) {
    arg++;
    if (arg == pos + 1) {
    ret[i-idxx] = EOS;
    return ret;
    } else if (arg == pos)
    idxx= i+1;
    }
    else if (arg == pos)
    ret[i - idxx] = strx[i];
    }
    return ret;
    }




    hier bitte schön