Beiträge von Jeffry

    Du verwendest pID, was immer 0 ist. Und die Einrückung ist nicht ganz so toll, GetPlayerName öffnet eigentlich keine Ebene.
    Den text könntest du dir auch sparen (ebenso den Grund im aduty Befehl) wenn du es sscanf in string speichern lässt, nur so am Rande, damit du auch die Optimierung kennenlernst.


    ocmd:a(playerid,params[])
    {
    //if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    new string[145],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if(sscanf(params,"s",string))return SendClientMessage(playerid,ROT,"Benutzung: /a [TEXT] ");
    format(string,sizeof(string),"(( %s {FFFFFF} %s sagt: %s {FF0000}))",arangs(playerid),name,string);
    SendClientMessageToAll(HELLROT,string);//SetPlayerSkin(playerid, 27);
    return 1;
    }
    String kann wieder in sich selbst geschrieben werden, das spart Speicher. Falls dir das aber nicht klar ist, dann mache es über die text Variable.

    Vom Prinzip her gleich wie der /aduty Befehl, nur dass der Grund eben der Text ist der gesendet wird.
    Die Farbe machst du mit dem Color-Embedding.


    Die Nachricht sendest du dann per for-Schleife an alle Mitglieder des Teams.
    Versuche dich einfach erstmal selbst an dem Befehl und schau wie weit du kommst. Falls du nicht weiter kommst poste den Befehl und schildere das Problem.

    Speichert es, wenn du den Server verlässt, korrekt in der Datenbank / Datei, dass du ein Bankkonto hast?
    Falls ja, poste den Code mit dem du die Statistiken des Spielers lädst, falls nicht, poste den Code mit dem du den Spieler speicherst. Möglicherweise wird Spieler[playerid][pBankkonto] nicht gespeichert, oder nicht geladen.


    Gleiches wird wohl auch beim PayDay so sein.


    Das dritte Problem schauen wir uns an, wenn Problem 1 und 2 behoben sind.

    Würdest du mir bitte diese Frage beantworten, ich frage jetzt zum dritten mal, nochmal frage ich nicht:
    Was steht bei dir als SA-MP Version am Server im SA-MP Client?


    Hast du den Code auch geladen?

    new aduty[MAX_PLAYERS];
    Das muss entweder unter den Includes stehen, oder
    static aduty[MAX_PLAYERS];
    lauten, wenn du es nur in diesem Befehl verwenden willst, es aber gespeichert werden soll.


    Außerdem:
    if(aduty(playerid) == 1)
    zu:
    if(aduty[playerid] == 1)

    ocmd:aduty(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Du bist kein Admin!");
    new string[145],name[MAX_PLAYER_NAME],grund[128];
    GetPlayerName(playerid, name, sizeof(name));
    if(aduty[playerid] == 1)
    {
    format(string,sizeof(string),"SERVER: %s beendet den Dienst als %s!",name,arangs(playerid));
    SendClientMessageToAll(HELLROT,string);
    SetPlayerHealth(playerid, 100);
    SetPlayerArmour(playerid, 0);
    aduty[playerid] = 0;
    }
    else
    {
    if(sscanf(params,"s",grund))return SendClientMessage(playerid,ROT,"Benutzung: /aduty [Grund] ");
    format(string,sizeof(string),"SERVER: %s beginnt den Dienst als %s! Grund: %s",name,arangs(playerid),grund);
    SetPlayerHealth(playerid, 99999);
    SetPlayerArmour(playerid, 99999);
    SendClientMessageToAll(HELLROT,string);//SetPlayerSkin(playerid, 27);
    SetPlayerColor(playerid, HELLROT);
    aduty[playerid] = 1;
    }
    return 1;
    }


    stock arangs(playerid)
    {
    new name[32];
    switch(GetPVarInt(playerid, "adminlevel"))
    {
    case 1: format(name, sizeof(name), "Helfer");
    case 2: format(name, sizeof(name), "Supporter");
    case 3: format(name, sizeof(name), "Moderator");
    case 4: format(name, sizeof(name), "Kon-Adminstrator");
    case 5: format(name, sizeof(name), "Adminstrator");
    default: format(name, sizeof(name), "<Unbekannt>");
    }
    return name;
    }


    Zwecks den Farben:
    http://wiki.sa-mp.com/wiki/Colour_Embedding#Color_embedding


    Damit kannst du gleich wie mit arangs(playerid) eine Funktion acolor machen, die dir die Farbe als String zurück gibt.

    ocmd:v(playerid,params[])
    {
    new carid, str[32];
    if(sscanf(params,"s[32]",str))return SendClientMessage(playerid,COLOR_RED,"/v [carid/name]"); // Nur "s" falls du nicht das Plugin verwendest.
    if(IsNumeric(str)) carid = strval(str);
    else carid = GetVehicleModelIDFromName(str);
    if(carid < 400 || carid > 611) return SendClientMessage(playerid,COLOR_RED,"Error: Ungültige ID.");
    new Float:xc, Float:yc, Float:zc, Float:ac;
    GetPlayerPos(playerid,xc,yc,zc);
    GetPlayerFacingAngle(playerid,ac);
    new vID = CreateVehicle(carid,xc,yc,zc,ac,1,1,-1,0);
    SetPVarInt(playerid,"nCAR",vID);
    PutPlayerInVehicle(playerid,vID,0);
    SendClientMessage(playerid,COLOR_GREEN,"Fahrzeug erstellt.");
    return 1;
    }


    stock IsNumeric(str[]) //©Jeffry
    {
    if(!strlen(str)) return 0;
    for (new i = 0, j = strlen(str); i < j; i++) if(str[i] > '9' || str[i] < '0') return 0;
    return 1;
    }


    Aus dem Pastebin kopierst du dir das Array mit den Fahrzeugnamen und die GetVehicleModelIDFromName-Funktion.

    Er geht sofort zu der SendClientMessage, nachdem die Anweisung(en) innerhalb der wahren Abfrage ausgefürt hat.

    MoveObject(ptor,-400.05902, 2705.42676, 73.38676,5);
    muss aus dem Befehl raus.


    Und hier hin:
    public TorHacken(count)
    {
    new str[145];
    switch(count)
    {
    case 1: format(str, sizeof(str), "Passwort knacken.. Versuch 1 / 5");
    case 2: format(str, sizeof(str), "Passwort knacken.. Versuch 2 / 5");
    case 3: format(str, sizeof(str), "Passwort knacken.. Versuch 3 / 5");
    case 4: format(str, sizeof(str), "Passwort knacken.. Versuch 4 / 5");
    case 5: format(str, sizeof(str), "Passwort knacken.. Versuch 5 / 5");
    case 6: format(str, sizeof(str), "Das tor wurde aufgehackt!");
    }
    if(count < 6) hackTimer = SetTimerEx("TorHacken", 20000, 0, "d", count+1);
    else MoveObject(ptor,-400.05902, 2705.42676, 73.38676,5);
    SendClientMessageToAll(KID_COL_GELB,str);
    return 1;
    }