Versuchs mit SetPlayerMapIcon und such dir die passende IconID (vielleicht die 41)
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) -
Hast du die gleben Pfeile noch drin oder nicht? mehr Information
-
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...
-
sowas wird nicht möglich sein, außer du sagst es den SAMP Entwicklern, es gibt keine Funktion mit AttachPlayerToVehicle oder sonstiges, außerdem wird die (noch ?!) schlechte Syncro das nicht so richtig zulassen
Man könnte aber Timer nutzen -
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;
}ZitatHi, 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... -
Du kannst sscanf nur einmal anwenden, wenn du also mehre Parameter hast musst du die alle gleichzeitig aufsplitten, in deinem Fall also ein sscanf am Anfang:
if (sscanf(params, "sdd", Aktion, pID, Preis)) -
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...
-
Man kann auch mehr als 999 Munition haben, allerdings wird das dann nciht weiter angezeigt.
Das Problem kann eig. nur an zwei Sachen liegen:
SetPlayerTeam oder sehr unwahrscheinlich, weil du dann alle Waffen dort eintragen müsstest und es auffallen würde: SetDisabledWeapons -
SetTimer("AutoNachricht",300000,1);
return 1;
[...]
(15) : warning 225: unreachable code
Unterhalb deines "return 1;" muss du die Klammer schließen "}", wenn noch irgendwas zwischen deinem "return 1;" und der "}" steht, dann verschieb es über das "return 1;"Bsp.:
// Code
return 1;
// Code
}zu
// Code
// Code
return 1;
} -
Ehm ein bisschen mehr Informationen über dein Problem, welchen Gamemode benutzt du?
Wenn ich raten müsste, würde ich sagen, dass noch ein Befehl zum annehmen des Jobs fehlt, ich denke den musst du och erstellen...
-
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 -
du brauchst dazu lediglich
GetPlayerPos und SetPlayerPos, mehr nicht -
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... -
Warum sollte gettime keine Sekunde ausgeben?
gettime(stunde, minute, sekunde);ein Blick in die Wiki hilft: http://wiki.sa-mp.com/wiki/Gettime
Im englischen Forum gibts ganz viele davon, wenn du es nicht selber schreiben kannst, z.B. hier: http://forum.sa-mp.com/index.php?topic=104387.0.
Ist zwar ohne Sekunden, aber die sind 1. sinnlos und 2. kannst die auch selber hinzufügen