Beiträge von Hagi

    Kannst du es noch weiter eingrenzen? also den code nochmal Zeile für Zeile auskommentieren?


    btw: hast du mal versucht die Variable x zu initialisieren?


    for(new x; x<MAX_PLAYERS; x++)

    for(new x = 0; x<MAX_PLAYERS; x++)


    Hab keine Ahnung wie der Compiler auf ersteres reagiert.

    Jo du kannst das über den timestamp machen.
    Zu einem Zeitpunkt, welcher als Ausgangspunkt genommen werden soll, speicherst du den aktuellen Timestamp:


    SetPVarInt(playerid,"timestamp",gettime());


    In deinem Befehl fügst du dann folgende Bedingung ein:


    if(gettime() - GetPVarInt(playerid,"timestamp") >= 60)

    Da rechtsberatung verboten ist, wirst du auf die zweite Frage keine Antwort erhalten.


    Zur ersten Frage: Du musst die nur irgendwo hochladen, wo man öffentlich (bzw dein SAMP Server) zugreifen kann. Kann also auch in deinem localhost sein. Der Link muss dann natürlich auf die Audiodatei verweisen.

    bei PVar's muss man beim Disconnecten DeletePVar benutzen


    Inhaltlich falsch. PVars sind Spieler bezogene Variablen/Speicherungssysteme, welche sich löschen bzw terminieren, wenn der Spieler den Server verlässt (oder besser gesagt "verlassen hat").


    Zitat

    Note: Variables aren't reset until after OnPlayerDisconnect is called, so the values are still accessible in OnPlayerDisconnect.


    Quelle: http://wiki.sa-mp.com/wiki/SetPVarInt

    Dann bleibt dir nix anderes übrig, als Teil für Teil auszukommentieren. Sobald der Compiler nicht mehr abstürzt hast du den fehlerhaften Codeteil gefunden.


    Oder du schaust erstmal da nach wo du zu letzt dran gearbeitet hast.

    Such in deinem Code alle Stellen (Strg + F) mit "Kick". Das können eventuell sehr viele sein.


    Steht in der Server_log irgendwas interessantes? Poste davon bitte mal den letzten Run des Servers

    OnGameModeInit hat keinen Parameter playerid. Also entweder du erstellst das TextDraw wenn ein Spieler Connected (OnPlayerConnect) und zerstörst es wenn er disconnected (OnPlayerDisconnect)


    oder


    du lässt bei OnGameModeInit eine for loop mit Maximum MAX_PLAYERS laufen.


    new PlayerText:TD1[MAX_PLAYERS];


    //GamemodeInit
    for(new playerid = 0;playerid<MAX_PLAYERS;playerid++)
    {
    TD1[playerid] = CreatePlayerTextDraw(3.666702, 281.659332, "/god:");
    PlayerTextDrawLetterSize(TD1[playerid] , 0.285999, 1.371851);
    PlayerTextDrawAlignment(TD1[playerid] , 1);
    PlayerTextDrawColor(TD1[playerid] , -1);
    PlayerTextDrawSetShadow(TD1[playerid] , 2);
    PlayerTextDrawSetOutline(TD1[playerid] , 0);
    PlayerTextDrawBackgroundColor(TD1[playerid] , 51);
    PlayerTextDrawFont(TD1[playerid] , 2);
    PlayerTextDrawSetProportional(TD1[playerid] , 1);
    }
    //PlayerConnect


    new text[32];
    switch(God[playerid])
    {
    case 0: format(text, sizeof(text), "/god: AUS");
    case 1: format(text, sizeof(text), "/god: AN");
    }
    PlayerTextDrawSetString(playerid,text,TD1[playerid] );
    PlayerTextDrawShow(playerid, TD1[playerid]);


    Besser wäre es aber wohl wirklich das beim Connected zu erstellen.

    Unter den SCM nen return 1 zu packen bringt dir leider nix, da dann höchstens der Report vom Spieler 0 gezeigt wird, jedoch nie ein anderer. Machs doch über eine bool
    new bool found = false;
    for(bla...
    if(hatgeschrieben[i]==1&&IsPlayerConnected(i))
    {
    new string[128];
    format(string,sizeof(string),"Name: %s | ID: %i",SpielerName(i),i);
    SendClientMessage(playerid,FARBE_WEISS,string);
    found = true;
    }
    ende for}
    if(found == false) SendClientMessage(playerid,FARBE_WEISS,"Keine Reports wurden geschrieben");

    Damit werden dir dann alle Reports gezeigt und nur wenn gar keiner vorhanden ist die entsprechende Nachricht.
    Außerdem muss das return 1; in der if raus, da sonst nur der erste Report (id 0) gezeigt wird.

    Hast doch schon fast alles:


    new money = random(5001) + 10000;
    GivePlayerMoney(playerid,money);
    SetPlayerWantedLevel(playerid,GetPlayerWantedLevel(playerid)+4);


    edit: setplayerwantedlevel funktioniert natürlich nur bis zu 6 Sternen. Willste mehr vergeben, musst du das in einer Spielerbezogenen Variable speichern.

    Wenn du eine minimale Grenze setzten willst ja, denn random kann von 0 bis zum Maximalwert-1 alles zurück geben.

    Wenn du das hier bereit stellst.


    Zitat

    format(text, sizeof(text), "/god: %d",??????;


    Dann geh ich natürlich davon aus, dass du die Variable Text schon deklariert hast:


    new text[32];


    edit: btw muss das aus der switch raus



    new text[32];
    switch(God[playerid])
    {
    case 0: format(text, sizeof(text), "/god: AUS");
    case 1: format(text, sizeof(text), "/god: AN");
    }
    TextDrawSetString(TD1[playerid], text);
    TextDrawShowForPlayer(playerid, TD1[playerid]);

    Das wird wohl daran liegen, dass der Wert, welcher gespeichert wird, 0 beträgt, wenn gespeichert wird.
    Vllt mal per print loggen, wenn gespeichert wird.