Fraktionen...

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 habe mal versucht ein Login System mit Fraktionen zu erstellen....





    • dcmd_makeleader(playerid,params[])
      {
      new pID;
      new frakid;
      new string[128];
      new string2[256];
      if (sscanf(params, "ui", pID, frakid)) SendClientMessage(playerid, COLOR_YELLOW, "Info: /makeleader [SpielerID] [FraktionID]");
      else if (pID == INVALID_PLAYER_ID || IsPlayerNPC(pID)) SendClientMessage(playerid, COLOR_RED, "*:: Dieser Spieler kann nicht erreicht werden. ::*");
      else if (frakid < 0 || frakid > 13) SendClientMessage(playerid, COLOR_RED, "Die FraktionID muss zwischen 0 und 13 sein!");
      else
      {
      new name[MAX_PLAYER_NAME];
      GetPlayerName(playerid, name, sizeof(name));
      if(IsPlayerAdmin(playerid))//Eure admin Abfrage
      {
      if(frakid == 0) { SpielerInfo[pID][Firma] = 0; SpielerInfo[pID][Chef] = 0; } //ZIVILISTEN
      if(frakid == 1) { SpielerInfo[pID][Firma] = 1; SpielerInfo[pID][Chef] = 1; } //POLIZEI
      if(frakid == 2) { SpielerInfo[pID][Firma] = 2; SpielerInfo[pID][Chef] = 2; } //ARMY
      if(frakid == 3) { SpielerInfo[pID][Firma] = 3; SpielerInfo[pID][Chef] = 3; } //MEDIC
      if(frakid == 4) { SpielerInfo[pID][Firma] = 4; SpielerInfo[pID][Chef] = 4; } //ADAC
      if(frakid == 5) { SpielerInfo[pID][Firma] = 5; SpielerInfo[pID][Chef] = 5; } //SWAT
      if(frakid == 6) { SpielerInfo[pID][Firma] = 6; SpielerInfo[pID][Chef] = 6; } //GROVE STREET
      if(frakid == 7) { SpielerInfo[pID][Firma] = 7; SpielerInfo[pID][Chef] = 7; } //HELLS ANGELS
      if(frakid == 8) { SpielerInfo[pID][Firma] = 8; SpielerInfo[pID][Chef] = 8; } //AL QUIDA
      if(frakid == 9) { SpielerInfo[pID][Firma] = 9; SpielerInfo[pID][Chef] = 9; } //YAKUZA
      if(frakid == 10) { SpielerInfo[pID][Firma] = 10; SpielerInfo[pID][Chef] = 10; } //BALLAS
      if(frakid == 11) { SpielerInfo[pID][Firma] = 11; SpielerInfo[pID][Chef] = 11; } //LOS AZTECAS
      if(frakid == 12) { SpielerInfo[pID][Firma] = 12; SpielerInfo[pID][Chef] = 12; } //LA COSTRA NOSTRA
      if(frakid == 13) { SpielerInfo[pID][Firma] = 13; SpielerInfo[pID][Chef] = 13; } //TRUCKER



      ResetPlayerWeapons(playerid);
      format(string, sizeof(string),"Du hast ID: %d zum Chef der Job ID: %d gemacht.",pID,frakid);
      format(string2, sizeof(string2),"Du wurdest vom Admin %s zum Chef der Job ID: %d gemacht.",name, frakid);
      SendClientMessage(pID, COLOR_GREEN, string2);
      SendClientMessage(playerid, COLOR_GREEN, string);
      }
      else
      {
      SendClientMessage(playerid, COLOR_RED, "Du bist kein Admin");
      }
      }
      return 1;
      }


      dcmd_einladen(playerid,params[])
      {
      new pID;
      new frakid = SpielerInfo[playerid][Chef];
      new string[128];
      new string2[256];
      new name[MAX_PLAYER_NAME];
      GetPlayerName(playerid, name, sizeof(name));
      if(SpielerInfo[playerid][Chef] > 0)
      {
      if(sscanf(params, "u",pID))
      {
      return SendClientMessage(playerid,0xFFFFFFFF,"/Einladen [playerid]");
      }
      if(!IsPlayerConnected(pID)) {
      return SendClientMessage(playerid,0xFFFFFFFF,"Kein Spieler mit angegebener ID Online!");
      }
      if(frakid == 1) { SpielerInfo[pID][Firma] = 1; SpielerInfo[pID][Beruf] = 1; } //Fraktion 1
      else if(frakid == 2) { SpielerInfo[pID][Firma] = 2; SpielerInfo[pID][Beruf] = 2; } //Fraktion 2
      format(string, sizeof(string),"Du hast ID:%d in deine Firma eingeladen.",pID);
      format(string2, sizeof(string2),"Du wurdest von Chef %s in seine Firma eingeladen.",name);
      SendClientMessage(pID, COLOR_LIGHTBLUE, string2);
      SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
      }
      else
      {
      SendClientMessage(playerid, COLOR_RED, "Du bist kein Chef");
      }
      return 1;
      }


      J:\Scripti.pwn(238) : error 017: undefined symbol "sscanf"
      J:\Scripti.pwn(286) : error 017: undefined symbol "sscanf"
      Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



      2 Errors.


    Ich weiß nicht wie ich die Fehler beheben kann....
    Wäre cool wenn mir jemmand helfen könte...


    Mfg Leon

  • Naja, du musst halt das "sscanf" definieren :D


    glaube das ging so :


    char text[] = "10 20 30 40 50";
    int arr[10];
    sscanf (text, "%d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4]);


    mfg:[SGS]Krypton :thumbup:

  • sscanf definieren.


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


    wäre mein Lösungsvorschlag ^^

  • klappt von Thommylee
    danke :)
    Bin bisschen blöd aber was muss ich dort definieren?
    Was bedeutet was?
    oder soll ich das so lassen?