Beiträge von Mann im Mond

    Tut mir Leid aber mit einer solchen Angabe an Fehlern und mit dieser minimalen Angabe an Code wird dir keiner mit gewissheit sagen können, was du genau falsch gemacht hast. Man kann höchstens anhand der Fehler deinen Fehler erraten:
    Die ersten und die letzen 3 Warnings kommen meistens durch Copy & Paste... Du hast einfach eine Variable doppelt definiert -> Umbennen
    Die Erros kann mehres bedeuten, dazu bräuchten wir einen Codeauschnitt der entsprechenden Stelle (nicht nur ein Satzzeichen)

    Wie schon gesagt mit einer dauerhaften Positionssetzung wäre es möglich, aber auch nur begrenzt so wie in MTA, ganz davon abgesehen, dass es nciht gerade die beste Möglichkeit ist jede paar ms die Position neu zu setzen und die Postion neu zu berechnen...

    mit strtok nicht direkt, aber mit dieser Funktion
    IsNumeric(const string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
    }


    Zitat

    Hi, ich suche wieder mal nach etwas xD
    Ich würde in meinen script gerne einen joblock einbauen.


    Dann musst du einen Timestamp erstellen bei der Befehlseingabe und diesen dann einfach überprüfen lassen. Es gab letzens schon mal das gleiche Theme, nur da gings um Timeban, war aber das gleiche Problem.
    Unter Windows holst du den altuellen Timestamp mit new timestamp = gettime();, unter Linux findest du irgendwo ne Funktion im englischen Forum, da bei Linux die gettime FUnktion nicht richtig nfuntionieren will und falsche Zeiten ausliefert

    Das lieht daran, das idplayer ein Integer ist und kein string, ändere dazu
    new idplayer;
    in new idplayer[30]; // 30 sollte locker reichen, ist ja nur ein Name so wie ich das sehe
    Allerdings ist dein Code eh falsch, um Parameter mit strtok auslesen, musst du es so machen
    string = strtok(cmdtext, idx); // string kann auch idplayer heissen, spielt keine Rolle, hauptsache es wurde als string erstellt (siehe oben)
    if(string[0] == 0) return SendClientMessage(...);// Keine Eingabe, da kein "erster" Buchstabe vorhanden ist
    variable =strtval(string);
    // oder für User user = ReturnUser(string);
    Die Reigenfolge ist vor allem wichtig und auch nicht wie bei dir einmal idplayer und einmal tmp...

    Nein macht doch weiter, liest sich wie eine Abendlektüre mit teilweise ein paar keineren Geschichtslektionen. Wenn ihr mir die Erlaubnis gebt, veröffentliche ich das Buch unter dem Namen "Neon (Ex - oder wie auch immer) vs Rest". Korrigiert mich bei diesem Namen, aber in Wirklichkeit habe ich das Thema nur überflogen, die Abendlektüre war doch ein wenig zu einseitig und zu wenig informativ für mich :), zwischendurch habe ich zwar gelesen, aber war mit den Gedanken schon wieder wo anders, also habe ich dann teilweise auch "la la la" gelesen, manchmal etwas über Hitler und manchmal wieder eine Diskussion bei der es bald Blutige gibt, wenns so weiter geht...


    Na ja damit keiner behaupten kann mein Thema war nur wieder sinnlos, was es bisher auch tatsächlich war, muss ich nun auch noch etwas zum eigentlichen Thema schreiben. Ich sehe das Ganze so an, dass MTA sicherlich weiter entwickelt ist und sicherlich auch mehr Schnick Schnack bietet als SAMP (jeweils bieten wird ?!), trotzdem haben leider ein paar wenige Leute den Zug verpasst und mussten deshalb mit dem nächsten Zug fahren, weshalb die ganzen vielen Leute im ersten Zug natürlich Vorteile gegenüber den anderen hatten. Na ja inzwischen sind ein paar Leute aus dem ersten Zug in den Späteren umgestiegen, was aber auch teilweise verständlich ist bei einem solchen Zugfahrer und der Menschenmenge, wo man ja im ersten Zug gar keinen Sitzplatz mehr kriegt.
    Die Leute im späteren Zug hatten mehr Platz ihre ganze Technik auszubauen auf der unendlichen Zugfahrt und kamen deshab schneller voran und mussten auch weniger an den Haltestellen halten, da viele schon in den früheren Zug aufgesprungen sind un dieser somit mehr Zeit gebraucht hat an der Haltestelle. Da beide Züge aber auf dem gleichen Gleis fahren und Züge zur Zeit noch nicht fliegen können, bleibt der spätere Zug nun mal der spätere Zug, auch wenn er inwzischen aufgeholt hat durch die oben stehenden Umstände und natürlich auch weiter entwickelt ist. Das hat auch den Grund, warum der Umstieg von Samp zu MTA einfacher ist als umgekehrt.


    Das war mein unabhängier Beitrag zu dem ganzen Thema hier, ich denke meine Geschihte ist verständlich erzählt, bei Verbesserungsvorschlägen und Fragen stehe ich geren bereit

    Wenn du keine selber machen willst/kannst, dann such dir doch eine, es gibt genug, sch z.B. mach nach "Speedometer" (da gibts auch sicherlich welche mit Tankanzeige und Kmhanzeige" oder nach "Tankanzeige" oder wie auch immer...

    Dein SELECT Befehl muss wie oben erwähnt mit einer ID versehen werden und dann das query mit samp_mysql_query abgeschickt werden, nicht mir samp_mysql_real_escape_string...
    format(query, sizeof(query), "SELECT ... FROM TICKETS WHERE ID=%d", TicketId);
    samp_mysql_query(query);
    [...]
    Wenn du außerdem result am Ende aus gibts, dann bekommst du die einzelnen Werte mit einem "|" getrennt ausgegeben. Also in deinem Beispiel "Spielername|Du hast ein Ticket". Du müsstest also es nocheinmal aufsplitten, damits auch "richtig" ausgegeben wird.


    samp_mysql_real_escape string benötigst du z.B. wenn du keine server_log mehr benutzen willst, sondern die Log auch in deine Datenbank eintragen willst. Dann solltest du bevor du den Text des Spielers, welcher er im Chat schrebt, vorher durch real_escape_string laufen lassen, da sonst jemand mit ein bisschen Denken dein query verändern könnte und so z.B. deine Datenbank o.ä löschen könnte...

    Warum setzt du nicht einfach nur die Score, irgendwie Geld bekommt? Das kannst du dann auch gleich mit einem Antimoneycheat verbinden und es ist sicherlich besser, da dann wirklich nur die Score gesetzt wird, wenn auch Geld transferiert wird. Ersetz dazu einfach alle deine GivePlayerMoney mit z.B. GiveUserMoney und dann so etwas


    stock GiveUserMoney(playerid, amount)
    {
    GivePlayerMoney(playerid, amount);
    // Anticheat Variable hochzählen usw.
    SetPlayerScore(playerid, GELD DES SPIELERS); // Entweder du benutzt hier GetPlayerMoney(playerid) anstatt GELD DES SPIELERS oder falls du ein Anti Money Cheat hast die Variable dieses System
    }

    Kann ruhig 128 sein ;)
    Sinnloser Post, warum sollte man für die Ip eine string mit der Größe 128 erstellen. Die Länge einer IP hat niemals 128 Zeichen, eine Größe von 15 würde dort auch schon locker reichen...



    Ja du kannst es auch für GF machen, genauso wie für jedes andere Script. Du musst dazu einfach die IP beim ausloggen in deiner .ini speichern und beim Connect dann überprüfen, ob diese gleich der aktuellen ist, falls ja einfach automatisch einloggen...

    Natürlich bei deinem /enter Befehl, woe die Position gesetzt wird...
    Da muss eine PlayerToPoint abfrage sein (Punkt draußen) und ein SetPlayerPos innerhalb dieses PlayerToPoint (drinnen). Das Gleiche umgedreht auch bei /exit

    Oktabius, falls das auf meinen Post bezogen war, kann ich deinen Satz nicht nachvollziehen. Meins war lediglich eine Verbesserung von deinem Post, nichts weiter.
    Außerdem bekommt man nicht automatisch eine neue IP, das kommt auf den Anbieter an, außerdem gibt es Leute, die sich morgens und mittags und abends oder nach dem gamecrash einloggen, diese haben dann mit Sicherheit noch die selbe IP, falls sie nicht ständig am Router rumspielen...