Beiträge von Bullsmith

    Hallo,
    Der Befehl /saverace speichert das Rennen nicht, er zeigt mir einen MySQL Error im Rennen an, wenn ich es versuche zu speichern.
    Genauso ist es mit Loadrace, der Befehl geht auch nicht. Weil kein Rennen gespeichert wurde, es ist alles in Ordnung, nichts ist verbuggt, sonst am Rennen,
    nur wenn ich ein Rennen speichere bekomme ich die Meldung.


    MYSQL ERROR! MSG: "Failed to exeute query. you have an a


    Mehr kann man daraus nicht erkennen. Aber was könnte man machen ?
    Ich zeige euch nun noch ein paar Codes, und Bilder von der Tabelle.


    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    ocmd:saverace(playerid,params[])
    {
    if(!DarfPlayerCommand(playerid))return 1;
    if(!IsPlayerInFrakt(playerid,4))return 1;
    if(SpielerInfo[playerid][Rank]<3)return 1;
    if(race[0][rrx]==0)return ErrorMsg(playerid,"Start wurde nicht gesetzt.");
    if(sscanf(params,"s[128]",string))return ErrorMsg(playerid,"INFO: /saverace [name]");
    if(strlen(string)>128)return ErrorMsg(playerid,"Der Name ist zu lang.");
    format(string,128,"%s",string);
    saveRace(string);
    format(string,sizeof(string),"%s hat das Rennen '%s' gespeichert.",SpielerName(playerid),string);
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerEingeloggt(i))
    {
    if(IsPlayerInFrakt(i,4))
    {
    SendClientMessage(i,Gruen,string);
    }
    }
    }
    return 1;
    }


    stock saveRace(name[])
    {
    if(!isValidRace(name))
    {
    format(query,sizeof(query),"INSERT INTO races (name) VALUES ('%s')",name);
    mysql_query(query);
    mysql_free_result();
    }
    for(new i=0; i<MAX_RACEPOINTS-1; i++)
    {
    format(query,sizeof(query),"UPDATE races SET %ix='%f', %iy='%f', %iz='%f' WHERE name='%s'",i,race[i][rrx],i,race[i][rry],i,race[i][rrz],name);
    mysql_query(query);
    mysql_free_result();
    }
    format(racename,sizeof(racename),"%s",name);
    return 1;
    }


    Nun hier noch ein paar Screens

    Hallo, meine Frage ist wie man rescourcen spart im Script, werden rescourcen verbraucht wenn man.


    #define DIALOG_LOGIN 0
    #define DIALOG_REGISTER 1


    Diese Technik anwendet ? Also wenn man viele #defines im Script hat.
    Die DIALOGE kann man ja auch so machen.


    enum
    {
    DIALOG_LOGIN,
    DIALOG_REGISTER
    }


    Welche möglichkeit bringt bessere vorteile und wozu ist das gut ?


    -----------------------------------------------------------------------------------------------------------------------------------------------------


    Welche Methode wäre rescourcenfreundlicher ? (von diesem)


    new alpha;
    new betha;
    new gamma;
    new delta;


    oder diese


    new alpha,betha,gamma,delta;


    oder diese hier


    new zeichen[4];

    Hallo Leute,
    Ich suche jemanden, der mir mit einen Haussystem helfen kann, ich habe da ein Problem, wenn ich ein Haus ingame erstellt habe, dann möchte man es kaufen, doch es geht nicht, dann steht da du hast bereits ein Haus, obwohl man keins hat. Dann muss ich mit ein Adminbefehl, den Hausbesitzer setzen, das klappt dann auch, doch dann steht da das das haus kein Innenraum hat. Dann kaufe ich mir einen Innenraum und dann gehe ich zu meinen Haus, und dann sehe ich das es immer noch nicht klappt, da steht dann das haus hat kein Innenraum. Obwohl ich mir ein gekauft habe.
    Vielleicht könnt ihr mir da ja mit Bildschirmübertragung helfen oder Teamviewer, wenn es klappt, belohne ich euch auch.
    PN schreiben, wer mir da helfen kann, über PN werdet ihr meinen Skypename erfahren.


    Und da wäre dann wieder das besagte PRoblem :D
    Dann leiber auf die "Schönheit" verzichten, aber dafür etwas ressourcendfreundlicher Arbeiten, denn bei vielen verschiedenen Timern, updates generell kommt es schnell zu Sekundenlaggs :)


    Jo, ich wollte ihn nur helfen :)
    Ich glaube aber trotzdem, dass es diese Funktion, diese eine Funktion, gerade die Laggs ausführt :D
    Ist ja nur das eine ;)
    Andererseits möchte ich mich noch einmal für deine Aufklärung bedanken. Nun kenne ich die Nebenwirkungen :)
    Danke :)


    Simon: Nimm einfach das was dir am meisten entspricht :)


    Schönen Abend noch


    Ich finde das 3dtextlabels einfach nur nicht so gut aussehen, sie sind so schwach, SetPlayerChatBubble siehst man besser. Ich habe bewusst OnPlayerUpdate nicht genommen, weil ich genau weis, das diese Function 50 Mal In der sekunde ausgeführt wird. Ich meide OnPlayerUpdate genauso gerne wie jeder andere, und ich sage hier auch nur meine Meinung dazu und möchte ihn gerne helfen. Man könnte ja auch einen Timer für alles erstellen, der dann alles für einen spieler Updatet :D


    Alles was unnötigerweise Ressourcen frisst ist unnötig, grade was in OnPlayerUpdate ist, da diese Dinge ca 3-4 mal pro Sekunde aufgerufen wird.
    Bei 20 Spielern ist dies noch nicht gravierend, aber lass es dann mal 100 Spieler seien.
    Und dann die Ursache für die Laggs finden und beheben, wenn man schon so unsauber arbeitet, ist dann mühsame Arbeit. Wieso sollte er dann sowas lernen und verwenden.
    Dennoch ist es von jedem die seinige Entscheidung.


    Wenn du das mal richtig betrachtest, habe ich die Funktion OnPlayerUpdate nicht genommen.
    Ich habe meine eigene Funktion genommen die alle 5 Sekunden geupdatet wird.

    Sowie mir bekannt, kannst du das nur mit Bots verhindern.
    Also einen Bot connecten lassen, falls einer vor dem Bot schon connectet ist musst du halt noch die ID vom Spieler abfragen falls er ID 0 hat
    ihm sagen das er reconnecten soll.


    Und genau das wollte ich vermeiden...
    Komisch pRP hat nur knapp 10 Bots und trotzdem bekommst du ID 12.
    Ohne Reconnecting, sowas ist ganz erlich einfach nur Humbuck, man will spielen und nicht warten bis irgendso ein Bot, die ID 0 eingenommen hat.
    Nicht das ich pRP nachahmen möchte, ich möchte nur nich mit ID 0 connecten, die User schlagen sich schon um ID 0 ;)
    Wenn dir nichts einfällt, dazu, dann fällt dir ebend nichts ein, doch ich glaube das ich mich vorhin deutlich ausgedrückt habe, falls nicht ute ich es hier nochmal.


    Warte bis ein Bot die ID 0 eingenommen hat


    Tut mir leid für meine unfreundlichkeit, aber sowas muss doch nicht sein :)

    Hallo, wie kann ich beim Joinen auf den Server, die ID 0 verhindern ?
    Ich möchte aber nicht so ein Quatsch haben wie:


    Warte bis ein Bot die ID 0 eingenommen hat


    Oder irgendwelche sonstige Sch......
    Wie kann ich Scripten, dass der Spieler, einfach eine andere ID bekommt, die natürlich noch kein anderer Spieler hat.
    Bei pRP bekommen sie auch alle ID's ab 12. Wie kann ich das machen ?
    Ich führe derzeit einen manchmal 22 Mann-Server und immer wenn man ID 0 hat wird man nicht AFK gesetzt.
    MfG


    Dir ist bewusst, das die Chatbubble Variante einfach unnötige Ressourcen frisst?


    Und was ist wenn der Server unnötige Resscourcen frisst ?
    Was passiert dann ? Kommt es zu Lags auf dem Server, oder wiese siehst du von der Variante ab ?
    Ist es so schlimm, resscourcen fressend zu scripten ? Wenn ich so einige GF Server anschaue, dann sehe ich doch auch bei denen, das einige Dinge darin unnötig sind. Lags sind mir dennoch nicht bei GF Server aufgefallen.

    Ich habe mal was besseres für dich entworfen ;D


    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ocmd:aduty(playerid)
    {
    new string[128];
    if(PlayerInfo[playerid][pAdmin]<1)return SendClientMessage(playerid,0xFFFFFFFF,"Du hast nicht den nötigen Adminrang");
    if(ADuty[playerid]==0)
    {
    format(string,sizeof(string),"%s: %s ist nun im Admindienst!",Adminname(playerid),SpielerName(playerid));
    SendClientMessageToAll(COLOR_DGREEN,string);
    SendClientMessage(playerid,COLOR_YELLOW,"** Du bist nun im Admindienst **");
    SetPlayerHealth(playerid,0x7F800000);//Godmode//
    SetPlayerArmour(playerid,100);
    SetPlayerSkin(playerid,217);
    ADuty[playerid]=1;
    return 1;
    }
    if(ADuty[playerid]==1)
    {
    format(string,sizeof(string),"%s: %s hat sich vom Admindienst Abgemeldet!",Adminname(playerid),SpielerName(playerid));
    SendClientMessageToAll(COLOR_DGREEN,string);
    SendClientMessage(playerid,COLOR_YELLOW,"** Du bist nun nicht mehr im Admindienst **");
    SetPlayerHealth(playerid,100);//Godmode aus//
    SetPlayerArmour(playerid,100);
    SetPlayerSkin(playerid,PlayerInfo[playerid][pChar])
    ADuty[playerid]=0;
    return 1;
    }
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    stock Adminname(playerid)
    {
    new rang[64];
    switch(PlayerInfo[playerid][pAdmin])
    {
    case 0:{rang="Spieler";}
    case 1:{rang="Probesupporter";}
    case 2:{rang="Supporter";}
    case 3:{rang="Moderator";}
    case 4:{rang="Admin";}
    case 5:{rang="Manager";}
    case 6:{rang="ServerOwner";}
    default:{rang="Fehler";}
    }
    return rang;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    stock SpielerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    public OnPlayerConnect(playerid)
    {
    SetTimerEx("OnSpielerUpdate",5000,true,"u",playerid);//Das Hier bei OnPlayerConnect einbauen :D
    return 1;
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
    forward OnSpielerUpdate(playerid);
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    public OnSpielerUpdate(playerid)
    {
    if(ADuty[playerid]==1)
    {
    new kopf_string[64],kopf_color,kopf_weite;
    kopf_string="";
    format(kopf_string,sizeof(kopf_string),"%s",Adminname(playerid));
    kopf_color=0xFF1E00FF;//Rot
    kopf_weite=40;
    SetPlayerChatBubble(playerid,kopf_string,kopf_color,kopf_weite,6000);
    }
    return 1;
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Ich persönlich finde mit SetPlayerChatBubble sieht das schöneraus//
    // Wenn es Errors gibt melde dich bei mir///
    // Oder bei Fragen ///
    //////////////////////

    Hallo
    Ich habe ein kleines Problem mit dem Adminstats. Also, wenn ich den befehl /adminstats eingebe, dann soll er mir anzeigen wieviele Warns / Kicks / Bans usw. ich vergeben habe, doch da Buggt irgendetwas, bei meinen Angenommenen Reports steht 13 und bei den anderen Sachen überall 14, obwohl das überhaupt nicht stimmt, was kann ich dagegen tun ? Bei mir im Spiel sieht das ungefair so aus wie auf den Screen, und im Script sieht der Befehl so aus.


    ocmd:adminstats(playerid,params[])
    {
    if(!IsPlayerAnAdmin(playerid,1))return 1;
    new now_time=GetTickCount();
    format(longstr,sizeof(longstr),"Adminstatistik\n\n");
    //Angenommene reports
    mysql_queryf("SELECT id FROM reports WHERE reporter='%s'",SpielerName(playerid));
    mysql_store_result();
    format(string,sizeof(string),"Angenommene Reports: %i\n",mysql_num_rows());
    strcat(longstr,string,sizeof(longstr));
    mysql_free_result();
    //Kicks
    mysql_queryf("SELECT * FROM straflog WHERE admin='%s' AND type='kick'",SpielerName(playerid));
    mysql_store_result();
    format(string,sizeof(string),"Kicks: %i\n",mysql_num_rows());
    strcat(longstr,string,sizeof(longstr));
    mysql_free_result();
    //Tbans
    mysql_queryf("SELECT * FROM straflog WHERE admin='%s' AND type='timeban'",SpielerName(playerid));
    mysql_store_result();
    format(string,sizeof(string),"Timebans: %i\n",mysql_num_rows());
    strcat(longstr,string,sizeof(longstr));
    mysql_free_result();
    //Bans
    mysql_queryf("SELECT * FROM straflog WHERE admin='%s' AND type='ban'",SpielerName(playerid));
    mysql_store_result();
    format(string,sizeof(string),"Bans: %i\n",mysql_num_rows());
    strcat(longstr,string,sizeof(longstr));
    mysql_free_result();
    //Prison
    mysql_queryf("SELECT * FROM straflog WHERE admin='%s' AND type='prison'",SpielerName(playerid));
    mysql_store_result();
    format(string,sizeof(string),"Prisons: %i\n",mysql_num_rows());
    strcat(longstr,string,sizeof(longstr));
    mysql_free_result();
    //Mutes
    mysql_queryf("SELECT * FROM straflog WHERE admin='%s' AND type='mute'",SpielerName(playerid));
    mysql_store_result();
    format(string,sizeof(string),"Mutes: %i\n",mysql_num_rows());
    strcat(longstr,string,sizeof(longstr));
    mysql_free_result();
    //Warns
    mysql_queryf("SELECT * FROM straflog WHERE admin='%s' AND type='warn'",SpielerName(playerid));
    mysql_store_result();
    format(string,sizeof(string),"Warns: %i\n",mysql_num_rows());
    strcat(longstr,string,sizeof(longstr));
    mysql_free_result();

    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Adminstats",longstr,"OK","");
    printf("/adminstats dauerte %ims",GetTickCount()-now_time);
    return 1;
    }


    Was kann man da tun ?

    Du willst doch einfach nur, dass jemand in ein Fahrzeug gesetzt wird oder? Nichts mit einer Speicherung oder?


    Eigentlich soll nichts gespeichert werden :D, aber der Typ hat gesagt, dass man das muss.
    Weil sonst wird der Spieler nicht in das Auto gesetzt. Ich habs nicht kapiert, was er damit meinte, wozu speichern.
    Naja, wenn es so klappt, dann soll es so gemacht werden :D Ich weiß noch nicht einmal was gespeichert werden muss.
    MfG

    Hallo,
    Einer aus Breadfisch hat mir bei einem Fahrzeugbefehl geholfen, wie ich als Admin einen beliebigen Spieler in ein Fahrzeug
    setzen kann, doch es klappt nicht, der Spieler wird nicht reingesetzt. Er meinte ich müsste MySQL einfügen, und dann ginge es, doch es geht immernoch nicht, was soll ich tun, Errors gibt es nicht, doch es passiert nichts, wenn ich alle parameter richtig eingebe, trotz richtiger MySQL eingabe.
    Vielleicht könnt ihr ja helfen :( Bin schon ganz verzweifelt.


    ocmd:setplayerincar(playerid,params[])
    {
    new pID,vehicleid;
    if(!IsPlayerAnAdmin(playerid,4))return ErrorMsg(playerid,"Du hast nicht den nötigen Adminrang.");
    if(sscanf(params,"ui",pID,vehicleid))return ErrorMsg(playerid,"Nutze: /setplayerincar [SpielerName/SpielerID] [Fahrzeugid]");
    if(!IsPlayerConnected(pID))return ErrorMsg(playerid,"Der angegebene Spieler ist nicht eingeloggt.");
    if(SpielerInfo[pID][Eingeloggt]==0)return ErrorMsg(playerid,"Der angegebene Spieler ist nicht eingeloggt.");
    if(IsPlayerNPC(pID))return ErrorMsg(playerid,"Das kannst du nicht.");
    PutPlayerInVehicle(pID,vehicleid,0);
    mysql_putitinvehicle(in_oread'an'isload);
    mysqlsetvehname(pID,setvarsqlfilenoinoread,'an'SuN);
    setmysqltable(o_file_orar,pID,fraktauto,ino!fraktauto)return ErrorMsg(playerid,"Bei der MySQL übertragung ist ein Fehler aufgetreten.");
    inotableandmysql(mysql_ping()<1)return mysql_free_result();
    andsqlfileexist(ini_dini_explode_erno_string);
    return 1;
    }