Beiträge von Snail


    new TimerCount;
    forward TimerName();
    // OnGameModeInit : globalen Timer starten :
    SetTimer("TimerName", 1000, true);


    public TimerName()
    {
    TimerCount++;
    // Der Timer wiederholt sich im Sekundentakt. Dabei wird die Varaible Timercount erhöht
    // Der folgende Teil kann auch einfach mit if(TimerCount == 60) ... ersetzt werden
    // Allerdings ist es mit switch einfacher
    switch(TimerCount)
    {
    case 5,10,15,20,25,30,35,40,45,50,55,60:
    {
    // Hier kannst du den Teil einfügen, der alle 5 Sekunden ausgeführt wird.
    }
    case 10,20,30,40,50,60:
    {
    //Hier wird alles alle 10 Sekunden ausgeführt
    }
    case 60:
    {
    TimerCount = 0;

    }
    }
    return 1;
    }

    Timer kannst du eigentlich beliebig viele machen.
    Es kommt nur darauf an, wie oft/schnell sie sich wiederholen und was für ein public sie aufrufen.
    Also ob das jetzt nur ne kleine Abfrage ist, oder ob du was großes wie Accountspeichern durchführst.
    Laggs entstehen dann, wenn mehrer "anspruchsvolle" publics zur selben Zeit aufgerufen werden.


    Deine Timer werden sich zwangsläufig überschneiden :


    SetTimer("T3",2000,1);
    SetTimer("T4",3000,1);


    Diese zwei werden alle 6 sekunden gleichzeitig aufgerufen.
    Das beste ist, du verwendest einen globalen Timer und führst dann da die Schritte aus.

    Run time error 19: "File or function is not found"
    Das kann verschiedene Ursachen haben.
    Wenn ihr zum Beispiel Plugins verwendet und das Plugin nicht im Ordner ist kommt diese Fehler-Meldung. Es kann natürlich auch daran liegen, dass ihr einen falschen Namen der .amx in die server.cfg eingetragen habt.



    Gute Idee, allerdings finde ich die Umsetzung nicht so gut. Es fehlt irgendwie das "gewisse Etwas".
    Liegt wahrscheinlich daran, dass es so wenig Objekte sind.

    Ich fände es besser, wenn man bei GivePlayerCash(playerid, dollar, cent) einfach einen Float wert nehmen würde und dann nur GivePlayerCash(playerid, betrag)
    Dann kann man auch den /pay befehl ändern und einfach die Float:variable mit dem eingetippten Float addieren.
    So muss man keine 0 am ende hinzufügen. und wenn jemand mehr als zwei nachkommastellen nimmt, gibts ja ne floatround funktion.


    Ansonsten gefällt mir das Script.

    Zitat

    was hat die 120 mit den 20*1000 zu tun ich möcht eja nicht das beim ausloggen die selbe zeit nochmal abgessesen werden muss sonder nur die zeit die noch übrig bleibt

    120 Sekunden wird er im Beispiel eingesperrt.
    Der Timer wiederholt sich alle 20 Sekunden und zieht dann von den 120 Sekunden 20 ab.
    D.h. die Zeit geht alle 20 Sekunden um 20 Sekunden 0runter. Ich wollte damit nur einen Timer sparen, der sich im Sekundentakt wiederholt. Den bei schnellen Timer ist die wahrscheinlichkeit größer, dass er zeitgleich mit einem anderen Timer auftritt. --> Lags können entstehen.


    // Nimm die Jailzeit als Variable.
    //Bspl. :
    knastzeit[playerid] = 120; // in Sekunden
    // Dann nimmste
    SetTimerEx("knastweg", 20*1000, false, "d", playerid);
    // ==============================
    public knastweg(playerid)
    {
    if(IsPlayerConnected(playerid)
    {
    knastzeit[playerid] -= 20;
    if(knastzeit[playerid] <= 0)
    {
    SendClientMessage(playerid, COLOR, "Du bist ein freier Mann.");
    SetPlayerPos(...);
    }
    else
    {
    SetTimerEx("knastweg", 20*1000, false, "d", playerid);
    }
    }
    }


    Und dann musst du nur bei OnPlayerDisconnect die Variable Knastzeit speichern (ist dann die Restzeit).
    Bei OnPlayerConnect einfach die knastzeit wieder laden, abfragen ob sie größer als 0 ist und wenn ja, dann setzt du ihn in den knast und startest wieder den Timer von oben.

    @ Hot : Es gibt auch Mehrfamilienhäuser.
    Die Bewohner haben dann alle die selbe Hausnummer.


    Aber mal ne andere Frage, warum googelst du nach Adressen von anderen Leuten ?(

    Schade das man in SAMP nicht ganz mit der Maus/Mausklicks
    arbeiten kann also fals man auf einer Textwithdraw klickt

    Ist möglich. Seif_ hat im Englischen Forum so ein Include veröffentlicht.
    Da hast du dann nen Curser und kannst auf TextDraws klicken.
    Was die Eingabezeile angeht, einfach ne Dialog-Input-Box nehmen.


    //---------------------COP CHAT---------------------
    if(strcmp(strget(cmdtext,0),"/e",true) == 0)
    {
    if(IsACop[playerid] == 1)
    {
    new msg[200];
    format(msg,sizeof(msg),"%s: %s",pName,cmdtext[3]);
    SendClientMessageForCops(TEAM_COP_COLOR, msg);
    return 1;
    }
    if (IsACop[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_RED,"Du bist kein Cop!");
    }
    return 1;
    }



    public SendClientMessageForCops(color, string[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsACop[i] == 1)
    {
    SendClientMessage(i, color, string);
    }
    }
    }


    }

    So müsste es gehen

    Zitat


    Indem ihr auf dem PC des Users nach einem Prozess sucht ist der Unterschied zwischen einem "Späh"-Programm und euerm Tool = 0. Das ist nicht nur eindrigenn in die Privatspähre sondern noch illegal dazu.

    Einfach beim Connecten ne MSG-Box in der man akzeptieren muss, dass der Server den PC nach Hackprogrammen durchsuchen darf. Wer nicht akzeptiert --> kick