Dann printe dir mal deine Position und die, die du eingegeben hast und vergleiche diese.
Bzw checke ob OnPlayerCommandText aufgerufen wird ![]()
Irgendwo muss ja der Fehler sein ![]()
Dann printe dir mal deine Position und die, die du eingegeben hast und vergleiche diese.
Bzw checke ob OnPlayerCommandText aufgerufen wird ![]()
Irgendwo muss ja der Fehler sein ![]()
aber es klappt trotzdem net das Tor geht nicht auf
Dir ist klar, dass du diese X, Y und Z Koordinaten auch mit echten Koordinaten ersetzen musst?
So macht dein Code mehr Sinn:
//Pack das mal ganz nach oben
if(PlayerInfo[playerid][pTot] == 1) return SendClientMessage(playerid, COLOR_GREY, "Tote können keine Befehle nutzen!");
if(newkeys & KEY_CTRL_BACK)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER))
{
if(IsPlayerInRangeOfPoint(playerid,10.0, X, Y, Z)) OnPlayerCommandText(playerid,"/gate");
else if(IsPlayerInRangeOfPoint(playerid,10.0, X, Y, Z)) OnPlayerCommandText(playerid,"/gate2");
}
else OnPlayerCommandText(playerid, "/enter");
}
Alles anzeigen
IsPlayerConnected ist da komplett überflüssig, da der Spieler ja online sein muss..um zu hupen...wird für offline Spieler eher schwierig haha xD
Und dann ein else if darauf anzuwenden..macht auch keinen Sinn...
Achte mehr auf Code-Logik ![]()
Weil es zu einem Fehler kommt und zwar geht die Schleife MAX_PLAYERS durch und nicht bis zum maximalen PizzaTextdraw.
Und da sprengt das natürlich das Array.
Aber lass mich dir noch weitere Dinge empfehlen:
Die Schleife also einfach so schreiben:
PS: Sehr schöner Post! Guter Debug, gefällt mir! ![]()
Hier mal ein Beispiel ![]()
//Oben im Skript
new lastHotDog[MAX_PLAYERS];
//Im Command ganz oben:
if(lastHotDog[playerid] > gettime()) return SendClientMessage(playeird, -1, "* Sie können den Befehl noch nicht wieder verwenden!");
//Im Command wenn er etwas bekommt:
lastHotDog[playerid] = gettime()+10; //Nur alle 10 Sekunden
Da du ja Dinge ausgibst bzw Clientseitig machst, kann der Header nicht nachträglich irgendwie noch darein geschoben werden.
Nutze eine Clientseitige Weiterleitung wie z.B.:
Die 15 steht für die Sekunden, wie lange gewartet werden soll.
Das kommt darauf an, was du vor hast.
Google mal nach Taxi System, da kommen ganz viele schon.
Daran kannst du dich orientieren und tutorials zu NPCs gibts auch massig.
Vor 6 Jahren hatte ich da mal ein System zu geschrieben sogar hahaha ![]()
Wie die Zeit vergeht ![]()
Ist es Möglich das ein Actor als "Taxifahrer" umfährt den man per Anruf rufen kann?
Nein, Actor kann man leider nicht in ein Fahrzeug setzen ![]()
Sowas wäre aber mit NPCs möglich ![]()
Wie füge ich das richtig ein?? @Kaliber
Lies nochmal meinen Text...
ich habe nirgends etwas von einer Gang Abfrage geschrieben...wieso schickst du mir das?! ![]()
OnPlayerDeath überlist es die Gang/Mafia Mitglieder
2 Möglichkeiten:
Da du ja schon crashdetect geladen hast, zeig uns mal den server.log, da steht eine genauere Fehlerbeschreibung drinnen ![]()
Also es gibt hier viele Möglichkeiten das zu realisieren, aber mal hier eine ganz simple:
Und ich hab das mal mit Tab-Headers gemacht den Dialog, das finde ich schöner (Aber kannst auch nur DIALOG_LIST verwenden, das macht für den Code keinen Unterschied) ![]()
if(dialogid == 73)
{
if(!response) return 1;
if(listitem == 0)
{
new str[18*13] = "Waffenname\tSchuss",tmp[16],c;
for(new i,w,a; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, w, a);
if(w > 0 && a > 0)
{
format(str, sizeof(str), "%s\n%s\t%d", str, WaffenNamen[w], a);
}
}
ShowPlayerDialog(playerid, 74, DIALOG_STYLE_TABLIST_HEADERS, "Waffen", str, "Auswählen", "Beenden");
return 1;
}
return 1;
}
if(dialogid == 74)
{
if(!response) return 1;
for(new i,w,a,c; i<13; i++)
{
GetPlayerWeaponData(playerid, i, w, a);
if(w > 0 && a > 0 && c++==listitem)
{
//Das ist die Waffe, die er ausgewählt hat
GivePlayerWeapon(playerid,w,a);
break;
}
}
return 1;
}
Alles anzeigen
Hier noch wenn du es hören magst ein kleiner Optimierungsvorschlag, die dialogid nicht mit if prüfen. Da der ja dann 74 if-Abfragen erstmal durchgehen muss, bis der zu deinem Dialog kommt und je mehr du noch machst, desto länger dauert das. Da 74 eine Konstante ist, kannst du hier mit switch arbeiten, was du unbedingt tun solltest, da das eine jumptable ist und der Code dann direkt dahin springt. Dann hast du nicht O(x), sondern O(1) und das ist natürlich wesentlich besser ![]()
O-Notation: https://de.wikipedia.org/wiki/…le#Beispiele_und_Notation
ob ich das Ganze hier jetzt richtig verstanden habe, aber müsste denke ich so gehen
Das ist so aus mehreren Gründen falsch:
Das Thema war (hoffentlich) schon erledigt, hatte ihm das eigentlich versucht ausführlich zu erklären in mehreren Posts.
Achso, dann geht auf deren Servern die Uhr falsch.
3 Möglichkeiten das jetzt zu beheben:
an was kann das liegen
Dein SA:MP-Server bezieht seine Uhrzeit von deinem Server (der dahinter steht).
Scheint so, als ob die Uhrzeit da falsch gehen würde, also einfach mal die synchronisieren ![]()
Ja und da ist dein Fehler...wenn die Länge stimmt, rufst du den Abschnitt auf, wo gesagt wird, dass es nicht stimmt...
Also musst du die Logik umkehren:
if(!(Kontonummer[playerid] >= 10000 && Kontonummer[playerid] <= 99999))
...ja, aber wie sieht der Code darunter aus.
Denn ich vermute, du hast eine umgekehrte Logik in deinem Code, sonst würden ja nur die Nummern zwischen 10.000 und 99.999 funktionieren...weil die Abfrage ist ja eindeutig ![]()
Jetzt gehen alle, außer Kontonummern, die 5 Zeichen lang sind
Wie sieht denn dein Code mit der Abfrage aus usw.
Und welche Pin-Nummer gibst du ein?
Da Jeffry dir zu Intgern geraten hat, kannst du keine Kontonummern benutzten, die mit 0 beginnen, also wirklich nur reine Zahlenwerte die größer als 10000 sind.
So fragst du ja auch ab, ob die Nummer kleiner 11111 und größer 99999 ist...das ist ja ein Widerspruch, das geht ja nicht xD
Meine Frage ist nun, wie hast du Kontonummer deklariert?