Beiträge von Goldkiller

    Ich nehme an,jeder Spieler soll den gleichen Textdraw mit der Uhr sehen.Daher ist der playerid - Parameter auch überflüssig.


    forward settime();
    public settime()
    {
    new string[256],year,month,day;
    getdate(year, month, day);
    format(string, sizeof string, "%d/%s%d/%s%d", day, ((month < 10) ? ("0") : ("")), month, (year < 10) ? ("0") : (""), year);
    TextDrawSetString(Date, string);


    }

    Zitat

    Also ich habe eine Uhr erstellt die soll mir eigentlich das Datum anzeige(02.01.2012) stattdessen zeigt diese mir nur "--" an .
    Was ist falsch?

    Du musst auch irgendwann mal die Funktion settime aufrufen, am besten per Timer.Sonst bleibt es beim Ausgangstext "--", da du diesen nie änderst.Zusätzlich musst du den Textdraw aber auch mal für den Spieler anzeigen lassen.

    Versteh ich das richtig, du hast 2 Sprachen. Deutsch und Englisch.
    Man sieht entweder den Deutschen Text oder den Englischen. Du hast aber trotzdem für jeden Spieler 10 einene Textdraws. Also 10 * MAX_PLAYERS.


    Mal überlegt, lediglich 10 Textdraws pro Sprache zu erstellen ? Das wäre viel logischer und besser. Dann hast du nämlich nur 10 * ANZAHL_SPRACHEN Textdraws.

    Hab das Projekt bischen aus den Augen verloren,hab die neue Version 1.1 in den Ersten Post eingefügt.
    Ich versuch mal kurz die Änderungen aufzuzählen:


    - Posteingang/Postausgang zeigt nun alle Nachrichten an. Man kann nach hinten / vorne blättern um sich die Beiträge anzeigen zu lassen. ( 20 Einträge pro Seite , ändern über MAX_QUERY_RESULTS )
    - Nachrichten im Posteingang + Postausgang können gelöscht werden
    - Userverarbeitung hinzugefügt, bei der man den Posteingang,Postausgang und Nachricht Schreiben auf einen Spieler beziehen kann
    - Nachrichten in extremer länge hinzugefügt ( Bis zu 640 Zeichen zZt, kann man selber ändern MAX_INPUT_PAGES )
    - Userfilter zeigt nun nicht mehr den eigenen Spielernamen an,falls der das Kriterium erfüllt
    - packed strings


    Das war es denke ich auch schon. Viel Spaß damit


    Achtung, die neue Version funktioniert nicht mit der alten Datenbank ! Bedeutet, alle alten Nachrichten gehen verloren wenn ihr die neue Version einspielt.


    Gold: Selbst wenn die Connectabfrage drin ist kommt dasselbe. Liegt sicher an der Länge von String2... Wie mach ich es, das jeder User nur 1x angezeigt wird ?


    Dann machst du es noch immer falsch.Nimm mal folgendes:
    new string2[512],name[MAX_PLAYER_NAME],atext[17];
    string2[0] = '\0';
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if( !IsPlayerConnected(i) ) continue;
    GetPlayerName(i,name,sizeof name);
    if(GetPVarInt(i,"Tod")==1){ atext="VERLETZT"; }
    else if(GetPVarInt(i,"Tod")==0) { atext="NICHT VERLETZT"; }
    format(string2,sizeof(string2),"%s%s [%s]\n",string2,name,atext);
    print("string2 ='%s'",string);
    }
    Wenn es nicht geht, was wird denn immer bei printf ausgegeben ?

    format(string1,256,"%s [%s]\n",name,atext);
    strcat(string2, string1);
    //strins(string2,string1, sizeof(string2));
    So sollte es auch eigentlich funktionieren.Vielleicht kommt da etwas durcheinander, weil du nicht prüfst,ob der Spieler verbunden ist.
    Du kannst es auch mal mit format probieren,geht auch.


    format(string2,sizeof(string2),"%s%s [%s]\n",string2,name,atext);
    Auch hier unbedingt prüfen,ob ein Spieler mit der ID verbunden ist.

    Scheint so,als würde sscanf bei einem Leerzeichen automatisch trennen.Kann mich aber nicht daran erinnern,dass es immer so war. Besonders nicht bei Texten. Kannst doch einfach direkt zwei Parameter abfragen,dürfte auch gehen.Um sicher zu gehen,stellen wir das Trennzeichen auf ein Leerzeichen.
    if(sscanf(params,"p< >s[64]s[32]",string,description)) return SCM(playerid, C_YELLOW, "BENUTZE: /house [name:buy,sell,lock,desc]");


    //Edit:
    Oder du lässt es wie es am Anfang machst,und arbeitest mit einem Quiet Parameter:
    if(sscanf(params,"s[64]",string)) return SCM(playerid, C_YELLOW, "BENUTZE: /house [name:buy,sell,lock,desc]");
    //code: buy, sell, lock --> funktioniert ohne Probleme!
    if(!strcmp(string,"desc",true))
    {
    if(sscanf(params,"{s[64]}s[32]",description)) return SCM(playerid, C_YELLOW, "BENUTZE: /house desc [text]");

    Zitat

    Hi ich möchte wenn ein auto los fäht bzw. stehen bleibt pro kilometer einen zu zählen


    Ließ das nochmal durch :\.


    Die Distanz berechnest du über den Vektor der alten Position ( z.B. vor 5 Sekunden ) gegen die aktuelle Position. Dafür musst du pro Spieler ( oder Fahrzeug ) ein Array anlegen, in dem du zumindest die alte Position speicherst und den aktuellen Kilometerstand. Die neue kannst du ja über Get*Pos beziehen.


    DistanzX = AltX - NeuX;
    DistanzY = AltY - NeuY;
    DistanzZ = AltZ - NeuZ;
    Distanz = Wurzel( ( DistanzX * DistanzX ) + ( DistanzY * DistanzY ) + ( DistanzZ * DistanzZ ) );
    AltX = NeuX;
    AltY = NeuY;
    AltZ = NeuZ;
    Geht auch mit GetPlayerDistanceFromPoint(); , da brauchst du aber trotzdem immer noch Variablen mit denen du weisst, wo der Spieler sich zuvor befand.


    Jetzt nur noch die zurückgelegte Distanz immer addieren.Verpackt in einen Timer und die Distanz wird konstant berechnet.

    Ich bezweifel, dass es ein Limit an Datensätzen gibt, die das Plugin gleichzeitig speichern kann. Vermute eher, du leerst den Speicher bei Anderen Abfragen nie ( mysql_free_result wie aus dem anderen Thread ) , oder du verarbeitest den Text falsch.
    Welches Plugin verwendest du überhaupt und wie lautet der dazugehörige Code,bei dem es crasht.

    Seit wann hat eine Ganze Zahl Nachkommastellen, die Interessant wären? Glaube auch kaum,dass man so formatieren kann. Wäre sowieso sinnlos, würde ja nur .00000000 sein.
    Du musst Promille als Float speichern, heisst also eine Kommazahl.Dann kannst du dir wie folgt, die ersten 3 Nachkommastellen anzeigen lassen.
    printf("%.3f" , Promille );

    Schau dir nochmal die MySQL Plugins an bzw ließ die korrekte Nutzung durch.
    Es gibt bei den MySQL Plugins immer eine Funktion, die das Ergebnis ( result ) aus dem Speicher löscht.Hab mal den ersten Google Treffer genommen,auch wenn er sich nicht auf SA:MP bezieht.
    http://php.net/manual/de/function.mysql-free-result.php


    Zitat

    Ich hab schon den ganzen Inhalt des stock´s gelöscht


    Dann lösch doch einfach mal einzelnt die Parameter, bis es keine Fehler mehr gibt :-0.

    if(subtype==SUBTYPE_INT) return strval(data); //1841
    if(subtype==SUBTYPE_STRING) return data; //1842
    if(subtype==SUBTYPE_FLOAT) return floatstr(data);
    Das würde sowieso nicht funktionieren. Du kannst nicht Float, Integer und Array als unterschiedliche Rückgabewerte in einer Funktion haben. Möglich,dass der Fehler damit zusammenhängt.
    Zusätzlich wäre da noch ein Fehler,du releast nie das MYSQL Ergebnis.