Du kannst entweder mit SetPlayerWorldBounds() arbeiten (sofern der Spieler nur in einem Bereich sich befinden soll), oder per OnPlayerKeyStateChange() nach KEY_SPRINT prüfen und dann ggf. die Animation abbrechen oder den Spieler neusetzen -> sollte theoretisch funktionieren.
Beiträge von Douq
-
-
Du kriegst den Fehler, da der Code nie erreicht werden kann.
-
-
Willst du das Tutorial verändern oder erst einmal deaktivieren?
-
okey Vielen Dank, dasd einzige was mich noch Stört ist das Tutorial
Wenn du etwas klarer wirst, kann man dir sicherlich weiterhelfen.
-
Derzeit erhält der Räuber 30.000$ fest + einen Bonus zwischen 0 - 29999. Diesen Betrag kannst du beliebig ändern - wenn du auf die random Funktion verzichtest, erhält der Spieler immer einen festen Betrag.
-
Includ: Das ist bei seinem Skript bereits gegeben.
Da der Code falsch formatiert ist, ist der Code kaum lesbar - trotzdessen:
Der Code SetTimer("Rob_Reset",3600000,0); ruft nach 60 Minuten eine Funktion auf, wodurch die globale Variable rob auf 0 gesetzt wird. Um statt nach 60 Minuten, nach 30 Minuten einen Raub wieder ausführen zu können, musst du lediglich den Intervall ändern (Angabe in Millisekunden). 30 Minuten * 60 Sekunden * 1000 Milisekunden (= 1800000). Logischerweise kann man auch die derzeitige Zeit (60 Minuten) durch zwei teilen, wollte nur aber einmal das Prozedere erklären.
Der Code zum Geld sollte innerhalb der Funktion Rob_UnFreeze zu finden sein - diese wird nämlich nach zwei Minuten aufgerufen.
Gruß
-
1.
1. Supporter
2. Moderator
3. Server Leiter
4. DevelopmentSo weiter machen denn ?
Wenn du den Lösungsansatz von Mogly weiterverfolgst, Ja.
-
Wenn es dir wirklich nur darum geht, die Anzahl der Einträge einer Tabelle (in diesem Fall der Spieler) zu zählen, würde ich auf die COUNT() Funktion zurückgreifen. Durch die jetzige Variante werden sämtliche Datensätze der Tabelle an den Server gesendet und dann von diesem durchgezählt - sofern die Daten nicht ausgegeben werden, wäre die Zählung per COUNT() besser.
Der Query würde dann folgend aussehen:
INFO: Du kannst auch statt COUNT(*) dein primary key (z.B. id) verwenden => COUNT(id).
Beinhaltet dann die Anzahl der Einträge in der Tabelle.
-
Möchte gewinnen, damit @John Trust nicht gewinnt
-
Guten Abend,
Ich habe eine frage,
Wie lasse ich am besten z.b Car ID 460 19.1 Verbrauch / 100 km
Jedes Fahrzeug hat ein anderen Verbrauch wie mache ich das am besten das ich das pro Fahrzeug anders abziehen lasse?Würde es über ein Array machen, wenn du wirklich für jedes einzelne Fahrzeug einen individuellen Verbrauch haben möchtest.
moin 2 probleme.
einmal beim ersten dialog kommt bei abbrechen immer der einzahlen dialog
und einzahlen funktioniert garnicht.
ocmd:bank(playerid,params[]) { if(!IsPlayerInRangeOfPoint(playerid,2,2316.2927,-12.7943,26.7422)) return SendClientMessage(playerid,FehlerRot,"Du bist nicht am Bankschalter!"); ShowPlayerDialog(playerid,BANK,DIALOG_STYLE_LIST,"Was möchten sie tun?","Einzahlen\nAuszahlen\nKontostand\nLeaderfunktionen","Auswählen","Abbrechen"); return 1;}
if(dialogid == BANK) { { switch(listitem) { case 0: ShowPlayerDialog(playerid,BANK2,DIALOG_STYLE_INPUT,"Einzahlung","Geben sie den Betrag ein den sie Einzahlen möchten!","Einzahlen","Abbrechen"); case 1: ShowPlayerDialog(playerid,BANK3,DIALOG_STYLE_INPUT,"Auszahlung","Geben sie den Betrag ein den sie Auszahlen möchten!","Auszahlen","Abbrechen"); case 2: ShowPlayerDialog(playerid,BANK4,DIALOG_STYLE_MSGBOX,"Kontostand","Ihr Kontostand beträgt %s$","Schließen","Zurück"); case 3: if(sSpieler[playerid][Leader] > 0) return ShowPlayerDialog(playerid,BANK5,DIALOG_STYLE_LIST,"Leaderfunktionen","Fraktionskontostand\nFraktionskonto Einzahlen\nFraktionskonto Auszahlen","Auswählen","Abbrechen"); } return 1; } }if(dialogid == BANK1) { { if(response == 1) { if(strlen(inputtext) > 0) { new geld = strval(inputtext); new text[100]; new bank = sSpieler[playerid][Bank]; format(text,sizeof(text),"Du hast %s$ eingezahlt",geld); format(text,sizeof(text),"Dein aktueller Kontostand: %s$",bank); GivePlayerMoney(playerid,-geld); sSpieler[playerid][Bank] += geld; SendClientMessage(playerid,Weiß,text); return 1; } if(response == 0) { SendClientMessage(playerid,Weiß,"Du hast den Vorgang abgebrochen!"); } } } }return 1;}
nicht wundern ich befolge den rat der profis und versuche es erstmal allein
Dir wird der Dialog auch immer angezeigt, weil du vergisst abzufragen, ob er wirklich den linken Button klickt (per if(response) realisierbar). Den zweiter Fehler ist dadurch begründet, dass du als dialogid BANK2 angibst, aber dein Code zur Einzahlung nur ausgeführt wird, wenn die Dialogid BANK1 lautet.
-
Entscheidend ist, ob er wirklich den Server verlässt oder ob er disconnectet?
Wenn er den Server verlässt, würde ich meinen dir fehlt entweder die *.rec oder die *.amx Datei vom NPC in npcmodes. Sollte er gekickt werden, kann es verschiedene Ursachen haben, z.B. verlangt dein Skript bei jedem Spieler ein LogIn und kickt Spieler, wenn sie es nicht sind. Oftmals wird da die Differenzierung zwischen Spieler und NPC vergessen.
-
@Douq gegen Mods wie GTA:N wurden bereits rechtliche Schritte eingeleitet. Der Macher von FiveM hat damals die Gerichtsunterlagen geleaked.
Aber wurde bisher nicht nur gegen FiveM rechtliche Schritte eingeleitet, weil FiveM GTA:O modifiziert hatte und dadurch bereits gg. die Nutzungsbestimmungen verstoßen hatte? So hatte ich das zu mindestens irgendwo aufgeschnappt
-
LSPD:FR ist ein SP Mod und T² macht damit weder Gewinn noch Verlust also, was SP angeht, machen sie das nicht wegen Profit. (Auch ist mir neu das man in GTA:O mit gemoddeten Fahrzeugen / Modifikationen spielen kann)
Was Mods/Cheats angeht die für GTA:O sind und was umgehen um Vorteile zu bekommen kann ich es allerdings nachvollziehen ^^.
Sie schießen sich selber ins aus und vergraulen die restlichen Spieler.Ihn geht es wohl weniger um solche Modifikationen, als solche wie GTA:Network etc. Ich denke auch kaum, dass sie rechtliche Schritte wegen solchen Mods angehen, sondern sich lediglich eine Grundbasis für die obengenannten Mods schaffen wollen, um diese Schritt für Schritt aus dem Verkehr zu ziehen. Ist jetzt zu mindestens meine Vermutung
-
Die Variante mit / müsste eigentlich auch bei Windows gehen.
Würde trotzdem zwangsläufig eine Änderungen der ganzen Includes fordern, was ich ja eigentlich verhindern möchte. Andersrum also keine Idee?
-
Hallo, ich benutze Sublime 3 sowohl bei macOS als auch Windows. Die Problematik die ich habe ist, dass ich Includes nicht in Ordner-Strukturen verteilen kann, da Windows und macOS sich bei der Pfadangabe unterscheiden:
WINDOW: YSI\y_commands
MAC: YSI/y_commandsGibt es da eine Möglichkeit, dass Sublime bei macOS auch die Angabe von Pfaden wie bei Windows versteht? Zwar könnte ich via. tryinclude das System austricken und beide Pfade angeben, aber YSI ist dann doch etwas umfangreich und würde etwas Zeit in Anspruch nehmen .. Vielleicht kennt ja jmd eine Alternative?
-
Du könntest theoretisch SetPlayerMarkerForPlayer auch dafür verwenden, Spieler nicht zu markieren. Sprich alle die in der Fraktion sind machst du (z.B.) Gelb, alle anderen weiß (mit dem Alpha-Code 00). Ob das jetzt so sinnig ist, lass ich mal im Raum stehen.
Wenn mein Ansatz, den ich oben genannt habe nicht funktioniert hat, wirst du woanders SetPlayerColor() noch verwenden, wodurch die Spieler wieder sichtbar werden.
-
Bei negativen Zahlen ist zu beachten, dass -1000 größer (>) ist, als -2000. Das wird vermutlich dein Fehler sein, weswegen dir gesagt wird, dass du in keiner Zone bist. Überprüfe einfach, ob du bei den Koordinaten min / max ein Fehler gemacht hast.
-
Dann musst du irgendwo (z.B. beim Connecten) die Spieler per SetPlayerColor(playerid, 0xFFFFFF00); setzen. Dann sind alle Spieler weiß im TAB, aber auf der Karte nicht zu sehen. Vielleicht hilft dir das weiter: http://wiki.sa-mp.com/wiki/Color_list
-
Schau mal diese beiden Funktionen an
[wiki]ShowPlayerMarkers[/wiki] [wiki]LimitPlayerMarkerRadius[/wiki] hast du die eventuell drin? Die Entfernen oder ggf. den Wünschen nach anpassen