Beiträge von MacGyver_HL

    okay dann schreib ich dir jetzt mal geschwind nen einfach command:

    if(!strcmp(cmdtext, "/a ", true, 3))
    {
    if(!IsPlayerAdmin(playerid))
    {
    SendClientMessage(playerid, "FARBE(gib hier den hexcode für deine farbei ein)", "You are not an admin");
    return 1;
    }
    new string1[256], adminname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, adminname, sizeof(adminname));
    format(string1, sizeof(string1),"Admin %s says: %s", adminname, cmdtext[3]);
    SendClientMessageToAll("FARBE(hex code für farbe)", string1);
    return 1;
    }


    also wenn das nicht funzt dann weiß ich auch nicht

    ersetz doch einfach die Zeile mit dem format mit der Zeile die ich oben geposted habe lol..


    edit:
    seh grad dass du es gemacht hattest, aber hast paar Klammern zu viel gesetzt ...


    deins:
    format(string1,sizeof(string1),"Admin: %s says %s. ))", username, cmdtext[3]);


    meins:
    format(string1, sizeof(string1),"Admins: %s says %s", username, cmdtext[3]); ;)


    probiers mal so

    Tach Leute,


    hab gestern mein Loginsystem umgespripted und nun erfolgt die Passwordeingabe per Dialog.


    Hab eine neue Funktion erstellt in welcher die Dialoge aufgerufen werden und diese wird bei OnPlayerConnect aufgerufen.


    Falls der Spieler nun ein falsches Password (oder gar keins) eingibt kommt hierüber eine Meldung über SendClientMessage und die
    Funktion wird erneut ausgeführt.


    DAS "PROBLEM":
    Ist eigentlich kein aber dafür lästig für mich. Und zwar ist es so, dass beim 2ten mal wenn der Spieler das Password falsch eingibt das Script dennoch weitergeht
    zu OnPlayerRequestClass. Also der Logindialog besteht noch aber der Spieler kann sich um Hintergrund nen Skin auswählen und spawnen. Bringt ihm im Endeffekt nix
    weil er sich nicht bewegen kann solange er nicht eingeloggt ist aber ich hätte es trotzdem gerne so, dass es erst dann zur Class Selection weitergeht sobald jemand erfolgreich eingeloggt hat.


    Hat jemand ne Ahnung warum das passiert ? Vor allem warum es erst beim zweiten Fehlversuch so geht.

    er versucht dir mitzuteilen, dass sobald ein Spieler seine Wartezeit rum hat die Funktion PayDay ausgeführt wird, und zwar in deinem Fall gleich
    für alle Spieler, da du ja die Schleife durchlaufen lässt bis MAX_PLAYERS erreicht ist. Du musst es so umscripten, dass nur für den Spieler, bei dem die
    Wartezeit rum ist, die Funktion PayDay ausgeführt wird und bei PayDay(playerid) die Schleife rausnehmen.


    p.s. Master_FM hat recht, du müsstest Errors bekommen. Füge bei PayDay() noch playerid in die Klammern ein.

    das ging bei mir auch nicht sprayer, komischerweise.


    Kannst ja mal probieren (jenachdem wie dein login system funktioniert) dich während PlayerRequestClass als admin einzuloggen, dann sollte es auch gehen.


    Oder machst es so wie ich und definierst eine 'Variable die aus einem Spieler nen Admin macht und speicherst es für den jeweiligen Spieler ab. Dann sollte es auch
    so gehen.

    @Steam:
    jap beim Connecten und Disconnected wird die Variable auf 0 gesetzt.
    Und es kann sowohl bei mehrmaligen, aber auch schon bei einmaligem bezahlen passieren. Ist aber jetzt auch schon vorgekommen,
    dass derjenige der das Geld bekommen hat gekickt wurde.


    Phoenix:
    Gehen würde das wenn man beim Kauf prüft ob die Variable genug Geld hat und nicht mit GetPlayerMoney, das stimmt. Wäre ne Alternative
    falls der Bug nicht verschwindet. Müsste dann eben nur vieles vom Script bearbeiten.

    nein ist auch schon bei sehr kleinen beträgen passiert. insgesamt 3 mal (20000, 2000, 18).


    Das habe ich mir auch schon überlegt. Momentan überprüfe ich bei OnPlayerUpdate ob GetPlayerMoney höher wie die
    scriptvariable des Geldes ist. Evtl sollte ich nen Timer einsetzen und das ganze nur jede sekunden z.B überprüfen lassen.. hilft ja vielleicht.


    Das blöde ist dass es nicht immer sondern eher selten passiert wodurch ich nicht gleich weiß obs behoben ist oder nicht..


    EDIT:


    Habs jetzt mal mit nem Timer probiert der nur alle 5 Sekunden überprüft, geht trotzdem nicht ... als ich nem spieler 10000 dollar gab wurde ER 5 sek später
    gekickt..

    Tach Leute,


    hab ein Problem beim Anticheat für Money.


    Es funktioniert soweit aber manchmal kommt es vor, dass wenn ein Spieler einem anderen Geld gibt, oder etwas kauft, dass der anticheat dann beim Spieler greift der Gelb abgibt. Es passiert auch nicht immer sondern manchmal was eine Suche nach dem Problem ziemlich erschwert.


    für den anticheat benutze ich eine Variable für das Geld:


    playermoney[playerid]


    anstelle von GivePlayerMoney habe ich eine andere funktion :


    stock ac_GivePlayerMoney(playerid, money)
    {
    playermoney[playerid] += money;
    GivePlayerMoney(playerid, money);
    }


    pay command:


    if(!strcmp(cmd, "/pay", true, 4))
    {
    new tmp[256], str[256], giveplayerid, giveplayername[128], sendplayername[128];
    new Float:x, Float:y, Float:z;
    new Value[256];
    new a;
    tmp = strtok(cmdtext, idx);
    giveplayerid = strval(tmp);
    Value = strrest(cmdtext, idx);
    a = strval(Value);
    if(strlen(tmp) == 0)
    {
    SendClientMessage(playerid, GELB, "USAGE: /pay ID AMOUNT");
    return 1;
    }
    if(a > GetPlayerMoney(playerid))
    {
    SendClientMessage(playerid, ROT, "You dont have enough money");
    return 1;
    }
    GetPlayerName(playerid, sendplayername, sizeof(sendplayername));
    GetPlayerName(giveplayerid, giveplayername, sizeof(giveplayername));
    GetPlayerPos(giveplayerid, x, y, z);
    if(IsPlayerInRangeOfPoint(playerid, 5, x, y, z))
    {
    ac_GivePlayerMoney(playerid, - a);
    ac_GivePlayerMoney(giveplayerid, a);
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    format(str, sizeof(str),"%s took out some money and has given it to %s", sendplayername, giveplayername);
    if(IsPlayerInRangeOfPoint(i, 10, x, y, z))
    {
    SendClientMessage(i, GELB, str);
    }
    }
    }
    else return SendClientMessage(playerid, ROT, "Player is not connected or not in near");
    return 1;
    }


    hat jemand Rat ?

    Diesen Bug kenne ich... der tritt bei mir immer dann auf, wenn ich nicht reconnecte, nachdem der Server neugestartet wurde. Die Verbindung wird quasi getrennt und sofort wiederhergestellt. Ein simpler Reconnect hilft, dann ist das weg.

    ah okay, ja das kann auch sein. Hab nämlich heute wieder paar bugs behoben und den gamemode immer restartet. Würd
    mich aber wirklich mal interessieren woran das liegt.