Beiträge von [MpR]Micky5991

    Hallo Community,


    Ich habe ein Problem mit meinem Gamemode, welches ich vor einem Monat bereits hatte, aber es komischerweise durch Crashdetect wieder gelöst wurde. Heute Nachmittag ist dieses Problem jedoch wieder aufgetaucht und ich bekomme nun folgenden Fehler im server_log:



    Informationen zum Script:
    - Selfmade
    - 38300 Zeilen
    - MapAndreas, Wbb_connect 1 (Von mir auf Strickenkid modifiziert) , mysql (Strickenkid), dini, audio...
    - Linux vServer (Debian) - 512 MB RAM


    Ich würde mich echt freuen, wenn ihr eine Lösung für das Problem wisst.



    MfG [MpR]Wayne

    Hallo zusammen,
    Ich wollte euch mal mein LSPD zeigen, welches bereits auf meinem Server in Betrieb ist und möchte mal eure Meinung hören bzw. Verbesserungsvorschläge.


    Infos:
    Map-Zeit: 5 Std.
    Anzahl der Objekte: ca. 250


    Hier ein paar Screens:




    Würde mich über eine Antwort freuen :)


    Lg [MpR]Wayne


    P.S. Nein, ich will es nur vorstellen. Nicht weitergeben ;)

    Guten Abend.


    Ich habe ein Selfmade Script und benutze das MySQL-Plugin von StrickenKid. Jedoch gibt es ein Problem beim Speichern des jeweiligen Spielers.


    Immer wenn der Spieler den Server verlässt oder den Server betritt wird die Spielervariable sSpieler[playerid][SelbstBomb] (Interger) auf 114 gesetzt obwohl ich nirgens einen String definiert habe.


    Ich zeige euch mal wie ich die SelbstBomb-Zahl bekomme:


    Variable definiert:
    enum SpielerDaten
    {
    dbid,
    Adminlevel,
    Level,
    Fraktion,
    LastLoginDay,
    Team,
    Waffenschein,

    SelbstBomb,
    Bombe
    };
    new sSpieler[MAX_PLAYERS][SpielerDaten];


    Geladen:
    new Log[100];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Log, sizeof(Log), "SELECT * FROM `users` WHERE name = '%s' LIMIT 1", Sname);
    mysql_query(Log);
    mysql_store_result(); new resultline[500];
    if(mysql_fetch_row(resultline))
    {
    new value[30];
    mysql_fetch_field("SelbstBomb",value); sSpieler[playerid][SelbstBomb] = strval(value);
    mysql_fetch_field("Bombe",value); sSpieler[playerid][Bombe] = strval(value);
    }
    mysql_free_result();
    (Hier ist nur ein Ausschnitt...)


    und Gespeichert:
    new SaveNString3[200];
    format(SaveNString3, sizeof(SaveNString3), "UPDATE users SET SelbstBomb = '%i' WHERE name = '%s'", sSpieler[playerid][SelbstBomb], Sname);
    mysql_query(SaveNString3);


    new SaveNString4[200];
    format(SaveNString4, sizeof(SaveNString4), "UPDATE users SET Bombe = '%i' WHERE name = '%s'", sSpieler[playerid][Bombe], Sname);
    mysql_query(SaveNString4);



    Wie gesagt SelbstBomb wird mit 114 gespeichert und Bombe als 111...


    Ich hoffe ihr könnt mir helfen.

    Für 4 Sekunden ist dieser Countdown nützlich, aber wenn man doch mal einen Countdown mit 200 Sekunden starten möchte, ist dieser absolut nutzlos.
    Zum Tut: Copy & Paste....


    Mach lieber ein Countdown der immer Wiederholt wird, wo immer -1 gerechnet wird.


    Zum Beispiel so:
    new CountdownT;
    dcmd_countdown(playerid, params[])
    {
    if(sscanf(params,"i", sec))
    {
    return SendClientMessage(playerid, GRAU, "Befehl: /countdown [Sekunden]");
    }
    new sec;
    CountdownT = SetTimerEx("Countdown", 1000, 1, "i", sec);
    }

    forward Countdown(sec);


    new CountSek = -1;


    public Countdown(sec)
    {
    if(CountSek == -1)
    {
    CountSek = sec;
    }
    if(CountSek == 0)
    {
    GameTextForAll("~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~g~~h~~h~Los! Los! Los!", 3000, 3);
    KillTimer(CountdownT);
    CountSek = -1;
    }
    else
    {
    new cstr[50];
    format(cstr, sizeof(cstr),"~n~~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~%i", CountSek);
    GameTextForAll(cstr, 2000, 3);
    CountSek--;
    }
    }
    5/10


    MfG

    Hey SA-MP Community,


    Ich habe gerade ein kleines Problem. Ich habe bei mir im Selfmade Script einen Timer erstellt wo alle 3 Sekunden die Guthabenanzeige des Clientes mit der Spielerdatei angeglichen wird. Nun ist es so, dass wenn man ins Pay'n' Spray fährt, dass zwar $100 abgezogen werden, nur diese werden wieder dazugerechnet, da ja wie gesagt das Geld angepasst wird. Dies möchte ich jedoch nicht, also habe ich da etwas versucht.


    forward SafeMoneyAll();
    public SafeMoneyAll()
    {
    for(new u = 0; u < MAX_PLAYERS; u++)
    {
    if(IsPlayerConnected(u))
    {
    if(IsAtPaySpray(u) && GetPlayerMoney(u) < sSpieler[u][Money])
    {
    sSpieler[u][Money] -= 100;
    }
    SetPlayerMoney(u, sSpieler[u][Money]);
    if(sSpieler[u][Money] > 15000)
    {
    new zuviel;
    zuviel = sSpieler[u][Money] - 15000;
    sSpieler[u][Bank] += zuviel;
    sSpieler[u][Money] -= zuviel;
    RefreshInfo(u);
    }
    }
    }
    }


    (Ich habe ein Handguthabenlimit auf $15000 gesetzt)


    Jetzt ist die Frage, wie löse ich das. Ich habe bereits einmal vom Ravens Roleplay die Positionen aller PNS herausgesucht und immer geprüft ob der Spieler im PNS ist, aber das hat leider ebenfalls nicht geklappt.


    Habt ihr eine Lösung? Ich wäre euch sehr Dankbar...


    MfG Micky5991

    Hey,
    Also ich würde dir Empfehlen den PickupType 1 nehmen. Wenn man drauf geht verschwindet dieser nicht und du kannst dann frei scripten.
    Als nächstes musst du nurnoch ein befehl machen wie:



    if (strcmp("/aktion", cmdtext, true, 10) == 0) {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, X,Y,Z))
    {
    SendClientMessage(playerid, COLOR_YELLOW, "* Yeah du bist auf der Position des Pickups und nun werden die Aktionen ausgeführt.");
    }
    return 1;
    }


    Als X, Y, Z nimmst du einfach die Koordinaten des Pickups.


    Fertig, ist garnicht so schwer ;)


    LG Micky5991