brauche team chat

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
  • Hallo, ich brauche für meinen Gang-War server einen Team chat, habe schon viel probiert aber immer kommen fehler.


    Kann mir jmd vielleicht sagen wie ich das machen muss? ich habe folgende teams....


    case 0,1,2,3,4,5,6: gTeam[playerid] = TEAM_COP;
    case 7,8,9: gTeam[playerid] = TEAM_RUSSIA;
    case 10,11,12: gTeam[playerid] = TEAM_TRIADEN;
    case 13,14,15,16: gTeam[playerid] = TEAM_ITAL;
    case 17,18,19: gTeam[playerid] = TEAM_BIKER;
    case 20,21,22: gTeam[playerid] = TEAM_GROVE;
    case 23,24,25: gTeam[playerid] = TEAM_BALLAS;
    case 26,27,28: gTeam[playerid] = TEAM_AZTECAS;
    case 29,30,31: gTeam[playerid] = TEAM_VAGOS;
    case 32,33,34: gTeam[playerid] = TEAM_RIFA;
    default: gTeam[playerid] = TEAM_ZIVI;



    #define TEAM_COP 0
    #define TEAM_RUSSIA 1
    #define TEAM_TRIADEN 2
    #define TEAM_ITAL 3
    #define TEAM_BIKER 4
    #define TEAM_GROVE 5
    #define TEAM_BALLAS 6
    #define TEAM_AZTECAS 7
    #define TEAM_VAGOS 8
    #define TEAM_RIFA 9
    #define TEAM_ZIVI 10


    new RIFA;
    new TRIADEN;
    new GROVE;
    new BIKER;
    new BALLAS;
    new RUSSIA;
    new COP;
    new ITAL;
    new VAGOS;
    new AZTECAS;


    ich weiß nicht genau welche angaben man daür braucht, ich hoffe das sind die...


    Danke im vorraus!

  • Versuch mal so



    #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


    new PlayerFraktion[MAX_PLAYERS];



    public OnPlayerConnect(playerid)
    {
    PlayerFraktion[playerid] = WUNSCHFRAKTIONSID;
    return 1;
    }



    public OnPlayerCommandText(playerid,cmdtext[])
    {
    dcmd(team,4,cmdtext);


    return 0;
    }



    dcmd_team(playerid,params[])
    {
    new text[128];
    if(sscanf(params,"s",text)) return SendClientMessage(playerid,0xFF0000FF,"FEHLER: /team [Text]");

    new pName[24];
    GetPlayerName(playerid,pName,24);

    format(text,128,"[( %s: %s )]",pName,text);

    new team = GetPlayerTeamID(playerid);
    SendTeamMessage(team,0xFF0000FF,text);
    return 1;
    }



    stock GetPlayerTeamID(playerid)
    {
    return PlayerFraktion[playerid];
    }



    stock SendTeamMessage(const team, color, const string[])
    {
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerFraktion[i] == team)
    {
    SendClientMessage(i,color,string);
    }
    }
    }
    return 1;
    }

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • Kommen leider 2 Errors




    Desktop\samp03\home\gamemodes\Gang-War.pwn(869) : error 017: undefined symbol "WUNSCHFRAKTIONSID"
    Desktop\samp03\home\gamemodes\Gang-War.pwn(863) : warning 204: symbol is assigned a value that is never used: "accFormat"
    Desktop\samp03\home\gamemodes\Gang-War.pwn(1006) : warning 225: unreachable code
    Desktop\samp03\home\gamemodes\Gang-War.pwn(1322) : error 017: undefined symbol "sscanf"
    Desktop\samp03\home\gamemodes\Gang-War.pwn(1356) : warning 203: symbol is never used: "total_vehicles_from_files"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase

  • Ganz ehrlich: Trottel... Aber ok, bist neu ^^


    Du sollst 1. WUNSCHFRAKTIONSID mit der ID ändern, in welche Fraktion der user kommen soll...


    2. füg das mal unten ein:



    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;
    }

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • versteh ich jetzt nicht sry, der user darf such doch seine Gang/Fraktion selber ausuchen.


    Es ist jetzt noch ein error :


    Desktop\samp03\home\gamemodes\Gang-War.pwn(869) : error 017: undefined symbol "WUNSCHFRAKTIONSID"
    Desktop\samp03\home\gamemodes\Gang-War.pwn(863) : warning 204: symbol is assigned a value that is never used: "accFormat"
    Desktop\samp03\home\gamemodes\Gang-War.pwn(1006) : warning 225: unreachable code
    Desktop\samp03\home\gamemodes\Gang-War.pwn(1319) : warning 235: public function lacks forward declaration (symbol "dcmd_team")
    Desktop\samp03\home\gamemodes\Gang-War.pwn(1606) : warning 203: symbol is never used: "total_vehicles_from_files"


    ist ja eigentlich das mit der ID.... aber ich versteh das nicht. Ich will das ja so haben das sich die z.b groven in ieren eigenen chat unterhalten können. Und das gleiche bei den anderen.

  • Dann musst du die Fraktions-ID aus seiner Datei laden.
    Sprich du speicherst doch bestimmt irgendwo die Fraktion des Spielers in seinem Account.
    Dann musst du diese ID halt nur noch aus der Datei laden.

    PN Support? Kannste knicken!

  • Schau mal im wiki nach
    OnPlayerRequestClass

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|