Beiträge von d30af26d

    Hab mehrere Funktionen gemacht, um ein bestimmten Teil von einen String (ähnlich strtok) zu bekommen:


    stock GetFieldString(field, string[], dest[], bool:end=false)
    {
    new result[256], index = 0;
    for(new i=1; i<field; i++) if(field != 1) { index = strfind(string, " ", true, index+1); }
    if(field == 1) strmid(result, string, 0, strfind(string, " ", true, 0), 64);
    else if(end) strmid(result, string, index+1, strlen(string), sizeof(result));
    else strmid(result, string, index+1, strfind(string, " ", true, index+1), 64);
    return format(dest, 64, "%s", result);
    }


    stock GetFieldInt(field, string[], &dest, bool:end=false)
    {
    new result[64], index = 0;
    for(new i=1; i<field; i++) if(field != 1) { index = strfind(string, " ", true, index+1); }
    if(field == 1) strmid(result, string, 0, strfind(string, " ", true, 0), 64);
    else if(end) strmid(result, string, index+1, strlen(string), sizeof(result));
    else strmid(result, string, index+1, strfind(string, " ", true, index+1), 64);
    return dest = strval(result);
    }


    stock GetFieldFloat(field, string[], &Float:dest, bool:end=false)
    {
    new result[64], index = 0;
    for(new i=1; i<field; i++) if(field != 1) { index = strfind(string, " ", true, index+1); }
    if(field == 1) strmid(result, string, 0, strfind(string, " ", true, 0), 64);
    else if(end) strmid(result, string, index+1, strlen(string), sizeof(result));
    else strmid(result, string, index+1, strfind(string, " ", true, index+1), 64);
    return dest = floatstr(result);
    }


    new cmdtext[256] = "/kick 6 15 Wir wollen keine Cheater";
    new player, grund[64], dauer;
    GetFieldInt(2, cmdtext, player);
    GetFieldInt(3, cmdtext, dauer);
    GetFieldString(4, cmdtext, grund, true);
    printf("%d, %s, %d Minuten", player, grund, dauer);

    Ich hab ein 3DTextLabel erstellt:
    Label[playerid] = Create3DTextLabel("Seibay", 0xFFFFFFFF, 1963.1157, 1355.9813, 9.2578, 25.0, 0);
    Welches auch erscheint, wenn man hingeht.
    Jedoch wenn ich dies mache:
    Attach3DTextLabelToPlayer(Label[playerid], playerid, 0.0, 0.0, 1.2);
    Dann ist es auf einmal ganz weg.


    Ich weiß nicht woran das liegt.
    MfG Seibay

    Ich hab das Script verloren, aber ich habs es so gemacht:


    new ChangeTimer[MAX_PLAYERS];
    new ChangeValue[MAX_PLAYERS];
    /* new PlayerMoney[MAX_PLAYERS]; */


    forward CheckPlayerForHack(playerid);


    public CheckPlayerForHack(playerid)
    {
    if(GetPlayerMoney(playerid) == ChangeValue[playerid]) PlayerMoney[playerid] = ChangeValue[playerid];
    ChangeValue[playerid] = 0;
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid, PlayerMoney[playerid]);
    KillTimer(ChangeTimer[playerid]);
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(Key == ENTER/F && !GetPlayerVehicleID(playerid) && !ChangeTimer[playerid])
    {
    ChangeValue[playerid] = (PlayerMoney[playerid]-(Wert der vom Automaten abgezogen wird));
    ChangeTimer[playerid] = SetTimerEx("CheckPlayerForHack", 3200, false, "d", playerid);
    }
    }


    Sollte ungefähr so gehen

    Meine Methode, Anti-Moneyhack, fast wie bei Jim:


    1. Wenn jemand F drückt, Timer starten (ca. 3200 Millisekunden) (Variable auf 1 stellen - dass der Timer gestartet wurde)
    2. (Denn Wert berechnen, welchen man dannach haben müsste)
    3. Beim Timer es halt überprüfen und neusetzen. (Timervar auf 0 stellen)

    stock GetPlayerAge(day, month, year)
    {
    new tag, monat, jahr; getdate(jahr, monat, tag);
    if((month > monat) || (month >= monat && day > tag)) return (jahr-year-1);
    else return (jahr-year);
    }


    Selfmade, und hier ein Beispiel:


    new alter = GetPlayerAge(22, 11, 1995);
    printf("Alter: %d", alter);


    Hilfestellung:
    GetPlayerAge(Tag, Monat, Jahr);

    Nachteil: Es wird nicht erkannt, dass man schon älter ist.


    Beispiel:
    Geb. 06.11.1991 (Scriptzeit: 08.11.2010)
    Ausgabe = 19
    obwohl der Mensch schon 20 ist.