Beiträge von Nikolas-Mrak

    Kleine Frage was die "Serverbelastung" angeht.. Ich hab ein kleines Lichtblitzer-System gebaut (so wie beim Lightmod, das die vorderen Lichter des Fahrzeugs abwechselnd blinken).. Damit das auch vernünftig aussieht wegen der Geschwindigkeit hab ich den Timer jetzt auf 127.
    Sowas ist ja eigentlich eine große Belastung für den Server, oder?


    Hier mal der Code, vielleicht kann mir jemand Tipps geben, wie man es resourcenschonender machen kann, Performancetipps etc, und ob ein anderer Weg sinnvoller wäre..


    SetTimer("SosiBlitzer", 127, 1);


    new count1 = 0;
    new count2 = 1;
    public SosiBlitzer()
    {
    new panels, doors, lights, tires;


    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    if(SSBlitzer[i] == true)
    {
    GetVehicleDamageStatus(i, panels, doors, lights, tires);


    if(count2 == 1)
    {
    if(count1 == 0) { UpdateVehicleDamageStatus(i, panels, doors, 4, tires); count1++; return 1; }
    if(count1 == 1) { UpdateVehicleDamageStatus(i, panels, doors, 5, tires); count1++; return 1; }
    if(count1 == 2) { UpdateVehicleDamageStatus(i, panels, doors, 4, tires); count1++; return 1; }
    if(count1 == 3) { UpdateVehicleDamageStatus(i, panels, doors, 5, tires); count1 = 0; count2 = 2; return 1; }
    }
    else if(count2 == 2)
    {
    if(count1 == 0) { UpdateVehicleDamageStatus(i, panels, doors, 3, tires); count1++; return 1; }
    if(count1 == 1) { UpdateVehicleDamageStatus(i, panels, doors, 5, tires); count1++; return 1; }
    if(count1 == 2) { UpdateVehicleDamageStatus(i, panels, doors, 3, tires); count1++; return 1; }
    if(count1 == 3) { UpdateVehicleDamageStatus(i, panels, doors, 5, tires); count1 = 0; count2 = 1; return 1; }
    }
    }
    }
    return 1;
    }


    Im Befehl wird dann einfach SSBlitzer für die jeweilige VehicleID auf true gesetzt.

    So ich hab das jetzt mal mit so ner Art Lötlampe versucht, allerdings ohne Erfolg. Immernoch das gleiche Problem wie vorher..


    Hat jemand noch eine Idee was ich machen könnte?


    Würds evtl was bringen wenn ich da mit dem Ofen versuche? Auch wenns danach funktiomieren würde, ist das ein temporär Fix oder könnte nach 2 Wochen wieder das Problem auftreten?

    Nabend,
    ich habe ein HP dv9318ea Notebook. Wie so oft bei den Geräten, ist bei mir warscheinlich der Grafikchip flöten gegangen... :( Beim Einschalten hab ich ein schwarzes Bild und nichts passiert.. Beim anschließen eines externen Monitors kann ich im abgesichertem Modus booten, hab dann aber falsche Farben und Streifen im Bild.


    Jetzt habe ich im Internet gelesen, das man das Problem durch Erhitzen des Chips beheben kann, z.B. mir einem Bunsenbrenner, Heißluftfön o.Ä., da so "Risse" oder kalte Lötstellen wieder verschmelzen.. Auf YouTube gibt es dazu auch zahlreiche Videos.. Ich hab das Notebook mal auseinander genommen und werde den Trick mal versuchen, vielleicht hilfts ja..


    Auch Grafikkarten kann man ja bei einigen Fällen durch Erhitzen im Backofen reparieren. :D


    Was haltet ihr davon? Hat das einer von euch schonmal versucht, und hats geklappt?


    //EDIT:
    Kennt einer eine Firma in Deutschland, am Besten im Rhein-Main-Gebiet, die Mainboards mit dem BGA-Verfahren repariert?


    So würd das nicht funktionieren, versuch mal das:



    dcmd_geld(playerid, params[])
    {
    new pID, betrag;
    if(sscanf(params, "ud", pID, betrag))
    {
    return SendClientMessage(playerid, COLOR_RED, "FEHLER: Benutze: /geld [ID] [Betrag]")
    }
    new spender[MAX_PLAYER_NAME], string[128], giveplayer[MAX_PLAYER_NAME];
    GetPlayerName(playerid, spender, sizeof(spender);
    GetPlayerName(pID, giveplayer, sizeof(giveplayer);
    format(string, sizeof(string), " %s hat %s %d gegeben", spender, giveplayer, betrag);
    //Hier müsste eine Funktion hin - ProxDetector(); weiß die syntax nicht auswendig. ProxDetector ist, damit Spieler in der Nähe das sehen können ;)
    // Und hier kommen die Befehle fürs Geld abziehen bzw. zufügen hin, einfach den dem der es dem anderen gibt den betrag abziehen und dem anderen drauf zählen.
    }


    dcmd_o(playerid,params[])
    {
    new string[128], name[24];
    if(sscanf(params, "d",string))return SendClientMessage(playerid,0xC8C8C8FF,"/o [Text]");
    {
    if(ochatoff == 1){
    if(pInfo[playerid][AdminLevel] > 2)
    {
    SendClientMessageToAll(0xFFFFFFFF, string);
    }else{
    SendClientMessage(playerid,0xC8C8C8FF,"Der Occ-Chat ist zurzeit Ausgeschaltet!");
    }
    }else{
    SendClientMessageToAll(0xFFFFFFFF, string);
    }
    }
    return 1;
    }


    Versuchs mal so.

    Moin,
    was ist eigentlich der Unterschied zwischen return 0 und return 1 bei dem Fall hier?:


    //OnPlayerText:
    if(PlayerInfo[playerid][pMuted] == 1)
    {
    SendClientMessage(playerid, COLOR_ERROR, "Du kannst nichts schreiben, da dich ein Administrator gemuted hat!");
    return 0;
    }

    if(PlayerInfo[playerid][pMuted] == 1)
    {
    SendClientMessage(playerid, COLOR_ERROR, "Du kannst nichts schreiben, da dich ein Administrator gemuted hat!");
    return 1;
    }
    Beides macht das selbe - Wenn der Player gemuted ist schickt er die Message und "stoppt" da den Code. ?(


    //EDIT


    2. Wofür steht das "const" hier:
    stock SendAdminMessage(level, const msg[])
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if (PlayerInfo[i][pAdminlevel] >= level)
    {
    new string[128];
    format(string, sizeof(string), "[Adm] %s", msg);
    SendClientMessage(i, COLOR_ADMIN, string);
    }
    }
    }
    return 1;
    }
    Wenn man es weglässt funktioniert es genau so.

    Habe ein kleines Problemchen.


    Hier mein Command:


    dcmd_kick(playerid, params[])
    {
    if(PlayerInfo[playerid][pAdminlevel] >= 2) { } else return SendNotAdminMessage(playerid);


    new
    sGrund[128],
    pID;


    if(sscanf(params, "uz", pID, sGrund)) {
    return SendUsageMessage(playerid, "/kick [playerid] ([grund])");
    }
    if(!IsPlayerConnected(pID)) {
    return SendNotOnlineMessage(playerid);
    }

    SendKickMessage(pID, sGrund);
    Kick(pID);
    return 1;
    }


    stock SendKickMessage(pID, reason[])
    {
    new string[128];
    if(strlen(reason) > 0) {
    format(string, sizeof(string), "> "#CNAME"%s "#CCADET"wurde vom Server gekickt. Grund: %s", GetName(pID), reason);
    return SendClientMessageToAll(COLOR_CADET, string);
    } else {
    format(string, sizeof(string), "> "#CNAME"%s "#CCADET"wurde vom Server gekickt.", GetName(pID));
    return SendClientMessageToAll(COLOR_CADET, string);
    }
    }


    In der Serverkonsole krieg ich jetzt beim Befehl folgendes:


    Zitat

    [17:34:39] sscanf warning: 'z' is deprecated, consider using 'S' instead.
    [17:34:39] sscanf warning: No default value found.
    [17:34:39] sscanf warning: Format specifier does not match parameter count.


    Woran liegt das?

    So gehts auch nicht, in die Variable pUsername packt er dann "SELECT * FROM '".


    //EDIT:
    Fehler gefunden.. Ich idiot.. ^^
    In der Datenbank hatte das Feld Password 129 Zeichen, im Script nur 128. Dadurch kam die Verschiebung zustande. ;)

    Hm.. ^^


    new
    EscPass[38],
    Query[128];


    mysql_real_escape_string(inputtext, EscPass);


    format(Query, sizeof(Query), "SELECT * FROM `accounts` WHERE `Username` = '%s' AND `Password` = md5('%s')", GetName(playerid), EscPass);


    mysql_query(Query);
    mysql_store_result();


    if(mysql_num_rows() > 0)
    {
    LoadPlayerInfo(playerid);
    // ..... blabla


    Da lade ich den User und da habe ich das SELECT * FROM blabla