Beiträge von BloodyEric

    public OnPlayerCommandText(playerid, cmdtext[])
    {


    if(strcmp(cmdtext, "/openFsGate", true) == 0)
    {
    MoveObject(Gate, -2043.08911133,-87.85975647,38.26874542, 1);
    SendClientMessage(playerid, 0xFFFFFFFF, "Das Fahrschulgate ist offen.");
    return 1;
    }



    if(strcmp(cmdtext, "/closeFsGate", true) == 0)
    {
    MoveObject(Gate, -2046.55981445,-87.80801392,34.87454224, 1);
    SendClientMessage(playerid, 0xFFFFFFFF, "Das Fahrschulgate ist geschlossen.");
    return 1;
    }


    return 0;
    }


    Müsste das meiste behoben haben.

    Nein, das bringt keine Vorteile, kannst es soweit kürzen:

    dcmd_cc(playerid, params[])
    {
    new c1, c2;
    if(sscanf(params,"ii", c1, c2)) return SendClientMessage(playerid, FARBE, "Richtige Anwendung: /cc [Farbid1] [Farbid2]");
    ChangeVehicleColor(GetPlayerVehicleID(playerid), c1, c2);
    return 1;
    }


    Hatte es jetzt nur auf die Schnelle kopiert, um den Fokus auf die "wichtige" Änderung zu legen ;)

    Ist die Tastatur beim Schreiben auch runtergefallen oder soll der letzte Satz so enden?


    Garantie wird da jedenfalls nix nützen, ist Eigenverschulden. Versicherung schätz ich mal einfach auch nicht, kann ich mir jedenfalls nicht vorstellen. Du kannst ihn reparieren lassen, kommt evtl billiger als neu kaufen.

    Nahezu.

    dcmd_cc(playerid, params[])
    {
    new c1, c2;
    if(sscanf(params,"ii", c1, c2))
    { return SendClientMessage(playerid, FARBE, "Richtige Anwendung: /cc [Farbid1] [Farbid2]"); }
    ChangeVehicleColor(GetPlayerVehicleID(playerid), c1, c2);
    return 1;
    }

    Bei Sofuck hat es nur Tage, wenn nicht Stunden gedauert, bis der 0.3c Schutz mit einer neuen Version umgangen wurde...


    Ich möchte nochmal zwei Zitate anbringen:


    Zitat von KingJ

    A fundamental concept in computer security is that you cannot trust the client. You have no way of telling if the client is telling the truth or not. Therefore, all validation must be done server-side, anything client side may work for a day or two and then i'll be broken again. An auto-updater would mean that we'd have to come up with a new anti-cheat mechanism every few days.


    Summary: Client-side anticheat is useless for SA-MP. We don't do it.


    Das große Problem ist, dass die Record Files nicht in dem Ordner beim recorden gespeichert werden, wo sie zum lesen benötigt werden. CNPC könnte das, wenn es funktionieren würde, tut es aber (noch) nicht. Eventuell gibt es ein Plugin um per Script Dateien zu kopieren/verschieben können, musst du mal schauen.

    Ich versteh nur Chaos.


    Wenn du einen Spieler freezen willst bevor du ihn kickst macht das mMn keinen Sinn, weil er, nachdem er gekickt wurde sowieso wieder frei rumlaufen kann. Deine Anti-Bot-Abfrage kannst du aber auch einfach als if(IsPlayerNPC(i)) umschreiben...

    public SpeedChecker()
    {
    for(new i=0; i < MAX_PLAYERS ;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(!IsPlayerInAnyVehicle(i))
    {
    TextDrawHideForPlayer(i,Textdraw0);
    TextDrawHideForPlayer(i,Textdraw2);
    TextDrawHideForPlayer(i,Textdraw4);
    TextDrawHideForPlayer(i,Textdraw6);
    TextDrawHideForPlayer(i,Textdraw8);
    TextDrawHideForPlayer(i,Textdraw7);
    TextDrawHideForPlayer(i,Textdraw1[i]);
    TextDrawHideForPlayer(i,Textdraw3[i]);
    TextDrawHideForPlayer(i,Textdraw5[i]);
    TextDrawHideForPlayer(i,Textdraw11[i]);
    continue;
    }
    new str[10];
    new Float:Velocity[3];
    GetVehicleVelocity(GetPlayerVehicleID(i), Velocity[0], Velocity[1], Velocity[2]);
    new Float:geschwindigkeit = floatsqroot(Velocity[0]*Velocity[0] + Velocity[1]*Velocity[1] + Velocity[2]*Velocity[2]) * 140;
    format(str,sizeof str,"%d KM/H",floatround(geschwindigkeit));
    if(autofs[i] == 1 && floatround(geschwindigkeit) > 80)
    {
    swarnungen[i] += 1;
    if(swarnungen[i] == 20)
    {
    zuschnell[i] += 1;
    swarnungen[i] = 0;
    new strx[70];
    format(strx,sizeof strx,"Du bist zu schnell gefahren! (Max 70KM/H) | Verwarnung %d/10",zuschnell[i]);
    SendClientMessage(i,HELLROT,strx);
    if(zuschnell[i] == 10)
    {
    autofs[i] = 0;
    SendClientMessage(i,HELLROT,"Durchgefallen!");
    SetVehicleToRespawn(GetPlayerVehicleID(i));
    DisablePlayerCheckpoint(i);
    zuschnell[i] = 0;
    CP[i] = 0;
    }
    }
    }
    TextDrawSetString(Textdraw3[i],str);
    new Float:Health;
    GetVehicleHealth(GetPlayerVehicleID(i),Health);
    new str1[20];
    format(str1,sizeof str1,"%d/1000",floatround(Health));
    TextDrawSetString(Textdraw5[i],str1);
    new str2[20];
    format(str2,sizeof str2,"%d/100",Tank[GetPlayerVehicleID(i)]);
    TextDrawSetString(Textdraw11[i],str2);
    }
    }
    return 1;
    }


    Das Return in der Schleife musst du durch ein Continue ersetzen, da return die ganze Funktion beendet. Continue hingegen überspringt nur diesen Spieler, was ja auch dein Ziel ist. ;)

    26 Erros bedeuted nicht immer, das es ein Klammerfehler ist, das ist Quatsch. Pawno hört ledigllich nach 26 Fehlern auf zu Compilen.
    "is not implemented" und "undefined symbol" von Funktionen deutet aber dennoch auf einen Klammerfehler hin. Überprüf die Stellen, die du zuletzt bearbeitet hast, rück richtig ein und hoffe, dass du den Klammerfehler schnell findest.

    Von OCMD hab ich keine Ahnung, aber das OnPlayerCommandText Callback muss auf jeden Fall so aussehen:



    public OnPlayerCommandText(playerid, cmdtext[])
    {
    return 0;
    }