Array Fehler | PLZ Help

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
  • Hey, hab i-wo nen Fehler:


    ocmd:service(playerid, params[])
    {
    new ParamMedic;
    if(sscanf(params, "s", ParamMedic))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /service Medic");
    if(ParamMedic == "Medic") // FEHLER
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SpielerInfo[i][pFraktion] == 2)
    {
    return SendClientMessage(playerid, FARBE_ROT, "Error: Es ist kein Medic online!");
    }
    }
    SendClientMessage(playerid, FARBE_BLAU, "Du hast einen Medic gerufen, bitte warte einen Augenblick!");
    MedicCalled[playerid] = 1;
    }
    else if(ParamMedic != "Medic") // FEHLER
    {
    SendClientMessage(playerid, FARBE_ROT, "Error: Gib einen gültigen Parameter an!");
    }
    return 1;
    }


    hier die errorrs

    SQL
    C:\Users\Marcell\Desktop\GTA\Samp 0.3e\gamemodes\RL-AM0k.pwn(907) : error 033: array must be indexed (variable "-unknown-")
    C:\Users\Marcell\Desktop\GTA\Samp 0.3e\gamemodes\RL-AM0k.pwn(919) : error 033: array must be indexed (variable "-unknown-")
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    2 Errors.
  • Jezt kommt das in den Zeilen:


    SQL
    C:\Users\Marcell\Desktop\GTA\Samp 0.3e\gamemodes\RL-AM0k.pwn(907) : error 035: argument type mismatch (argument 1)
    C:\Users\Marcell\Desktop\GTA\Samp 0.3e\gamemodes\RL-AM0k.pwn(919) : error 035: argument type mismatch (argument 1)
  • new ParamMedic;
    if(sscanf(params, "s", ParamMedic))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /service Medic");

    ParamMedic muss auch ein String/Array sein ( [] ).
    Eigentlich brauchst du die sscanf Zeile nicht,falls du nur einen String als Parameter hast. Dann könntest du nämlich auch direkt mit params arbeiten.

  • ja wie mach ich das ........
    habs jetzt so:


    ocmd:service(playerid, params[])
    {
    new ParamMedic[100];
    if(sscanf(params, "s", ParamMedic))return SendClientMessage(playerid, FARBE_GRAU, "Fehler: /service Medic");
    if(ParamMedic == "Medic") // fehler
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SpielerInfo[i][pFraktion] == 2)
    {
    return SendClientMessage(playerid, FARBE_ROT, "Error: Es ist kein Medic online!");
    }
    }
    SendClientMessage(playerid, FARBE_BLAU, "Du hast einen Medic gerufen, bitte warte einen Augenblick!");
    MedicCalled[playerid] = 1;
    }
    if(ParamMedic != "Medic") // fehler
    {
    SendClientMessage(playerid, FARBE_ROT, "Error: Gib einen gültigen Parameter an!");
    }
    return 1;
    }


    //edit
    Hab alles probiert
    doch der Fehler bleibt immer der gleiche.
    Bin ich wirklich schon so hirntot oder hat jmd. ne Lösung

    Einmal editiert, zuletzt von |inC| ()

  • Hirn einschalten ? Das wurde dir schon erklärt.
    Strings vergleichst du via strcmp.Sind die String identischs, wird 0 zurückgegeben.


    if(strcmp(ParamMedic, "Medic", true) ==0)


    //Edit:
    Abgesehen davon,ist noch einiges mehr bei dem Befehl falsch.
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(SpielerInfo[i][pFraktion] == 2)
    {
    return SendClientMessage(playerid, FARBE_ROT, "Error: Es ist kein Medic online!");
    }
    }
    SendClientMessage(playerid, FARBE_BLAU, "Du hast einen Medic gerufen, bitte warte einen Augenblick!");
    MedicCalled[playerid] = 1;

    Das wird nicht so funktionieren wie du möchtest, für den "Error: Es ist kein Medic online!" - Teil. Du musst erst durch alle Spieler durchgehen und schauen ob dort irgendeiner von Medic ist. An hand einer Variable festlegen,ob ein Medic vorhanden oder nicht. Ist keiner vorhanden -> Nachricht,dass kein Medic online ist. Falls ein Medic vorhanden,nochmal mit einer Schleife durch alle Spieler gehen und Medic-Hinweis versenden ( Geht auch Anders,ist aber nicht unbedingt leichter für dich ).

  • So ungefähr:


    new Medics = 0;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(SpielerInfo[i][pFraktion] == 2)
    {
    Medics++;
    }
    }
    }
    if(Medics == 0) return SendClientMessage(playerid,FARBE_ROT,"Zurzeit sind leider keine Rettungssanitäter online.");