Beiträge von Humen

    Ich habe in folgendem Thread gesehen wie die rede war das sich eine Schleife aufhängt, daher wollte ich fragen ob jemand eine Idee hat woran dies liegen könnte.
    http://forum.sa-mp.de/wbb/san-…r-cpu-verbrauch-was-tun-2


    Mein Problem:
    Mein Server läuft und läuft und so bei 25 Spielern drauf hängt sich nach einiger Zeit die for-Schleife die in einem Sekunden-Timer ausgeführt, sozusagen blockt irgendwas in der mitte der SChleife, die SpielerID die blockt ist immer verschieden, mal die 2 und dann wieder die 10 oder sonst was :(


    Hätte eventuell jemand eine Idee wie man dieses Problem lösen könnte?
    Liegt es vielleicht am Objekt Streamer?
    Kann ich, wenn es am Streamer liegt, dieses Problem lösen wenn ich die Objekte mit dem eingebauten Streamer von 0.3b streamen lasse?


    PS: Mein Server läuft sehr ruhig mit ungefähr 10-20% CPU Auslastung bei 20-30 Spielern.


    Bitte um Antwort :(


    Mit freundlichen Grüßen
    Humen

    Wenn ich deinen Text richtig verstanden hab willst du dass mit Seite1.de die (zB) Bla.html aufrufen, oder?

    PHP
    if($_SERVER['HTTP_HOST'] == 'www.seite1.de')
    {
    echo '<meta http-equiv="refresh" content="0; URL=Bla.html">';
    }


    Kleines Codeschnipsel :)
    Kann sein das es so funktioniert oder auch nicht.
    Aber auf jeden Fall kannst du mit "$_SERVER['HTTP_HOST']" ohne "" :P die in der Adresszeile eingegebene URL auslesen ;)


    Mit freundlichen Grüßen
    Humen

    Das mit 2 Mal ist Fehler vom Forum :D
    Jeder fängt mal klein an, auch du Scriptor, du würdest dich auch nicht freuen wenn jemand sowas zu dir schreibt!

    Im Prinzip der gleiche Fehler wie mit ReturnUser und ReturnUser benötigt IsNumeric :D
    stock IsNumeric(string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    if (string[i] > '9' || string[i] < '0')
    return 0;
    return 1;
    }stock IsNumeric(string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    if (string[i] > '9' || string[i] < '0')
    return 0;
    return 1;
    }
    Bitte Sehr :)


    Mit freundlichen Grüßen
    Humen

    Ganz unten ins Script:
    ReturnUser(text[], playerid = INVALID_PLAYER_ID)
    {
    new pos = 0;
    while (text[pos] < 0x21) // Strip out leading spaces
    {
    if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
    pos++;
    }
    new userid = INVALID_PLAYER_ID;
    if (IsNumeric(text[pos])) // Check whole passed string
    {
    // If they have a numeric name you have a problem (although names are checked on id failure)
    userid = strval(text[pos]);
    if (userid >=0 && userid < MAX_PLAYERS)
    {
    if(!IsPlayerConnected(userid))
    {
    /*if (playerid != INVALID_PLAYER_ID)
    {
    SendClientMessage(playerid, 0xFF0000AA, "User not connected.");
    }*/
    userid = INVALID_PLAYER_ID;
    }
    else
    {
    return userid; // A player was found
    }
    }
    /*else
    {
    if (playerid != INVALID_PLAYER_ID)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
    }
    userid = INVALID_PLAYER_ID;
    }
    return userid;*/
    // Removed for fallthrough code
    }
    // They entered [part of] a name or the id search failed (check names just incase)
    new len = strlen(text[pos]);
    new count = 0;
    new name[MAX_PLAYER_NAME];
    for (new i = 0; i < MAX_PLAYERS; i++)
    {
    if (IsPlayerConnected(i))
    {
    GetPlayerName(i, name, sizeof (name));
    if(strcmp(name, text[pos], true, len) == 0) // Check segment of name
    {
    if (len == strlen(name)) // Exact match
    {
    return i; // Return the exact player on an exact match
    // Otherwise if there are two players:
    // Me and MeYou any time you entered Me it would find both
    // And never be able to return just Me's id
    }
    else // Partial match
    {
    count++;
    userid = i;
    }
    }
    }
    }
    if (count != 1)
    {
    if (playerid != INVALID_PLAYER_ID)
    {
    if (count)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
    }
    else
    {
    SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
    }
    }
    userid = INVALID_PLAYER_ID;
    }
    return userid; // INVALID_USER_ID for bad return
    }


    Dann poste nochmal die Fehler bitte, wenn die Fehler nicht weniger werden hast du irgendwo einen Klammerfehler ;)


    Mit freundlichen Grüßen
    Humen

    Der Code:
    for(new veh = 0; veh < sizeof(CopCars); veh++)
    {
    SetVehicleToRespawn(veh);
    }
    Musst du natürlich noch in einen Command einfügen ;)


    Mit freundlichen Grüßen
    Humen

    Reservieren für Bot's oder Spieler geht nicht, da die ID's vom Server selber zugeteilt werden und nicht vom Script ;)


    Mit freundlichen Grüßen
    Humen

    OnPlayerConnect:
    if(IsPlayerNPC(playerid))
    {
    gPlayerAccount[playerid] = 1;
    gPlayerLogged[playerid] = 1;
    return 1;
    }


    OnPlayerSpawn:
    if(IsPlayerNPC(playerid))
    {
    PlayerInfo[playerid][pCarLic] = 1;
    new botname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, botname, sizeof(botname));
    if(strcmp(botname, "BOTNAME", true) == 0)// <--------------------BOTNAME
    {
    PutPlayerInVehicle(playerid, CARID FÜR BOT, 0);// <--------------------CARID FÜR BOT
    return 1;
    }
    }


    Und es ist egal ob der Bot gefreezt ist oder nicht. Das Teil fährt trotzdem weiter, da der Bot sich sozusagen Stück für Stück portet.


    Mit freundlichen Grüßen
    Humen

    Irgendwo oben im Script:
    new DeathMessage[MAX_PLAYERS];


    OnPlayerDeath:
    if(DeathMessage[playerid] == 1)
    {
    SendDeathMessage(killerid, playerid, reason);
    }


    Command:

    if(strcmp("/deaths",cmdtext,true) == 0)
    {
    if(Spieler[playerid][AdminLevel] >= 4)
    {
    if(DeathMessage[playerid] == 1)
    {
    DeathMessage[playerid] = 0;
    }
    else
    {
    DeathMessage[playerid] = 1;
    }
    }
    return 1;
    }


    Dürfte funktionieren, ist aber ungetestet :)


    Mit freundlichen Grüßen
    Humen