new Carlist[MAX_PLAYERS][ahCar];
ZitatCarlist[carowner]
[slot][CarPos_x] = XX2;
new Carlist[MAX_PLAYERS][ahCar];
ZitatCarlist[carowner]
[slot][CarPos_x] = XX2;
Es heißt schon mal connectionHandle, nicht SconnectionHandle.
Das kannst du aber auch einfach in der mitgelieferten *.inc prüfen ( a_mysql.inc müsste es sein ).
Da ich nicht weiss welches MySQL Plugin du verwendest kann ich dir auch nicht sagen, wie der Funktionskopf aussehen muss. Das findest du aber wie gesagt in der *.inc bei "forward OnQueryError(...)".
Ich gehe mal davon aus,dass du den Code nicht selber geschrieben hast. Sonst würdest du sowas nicht fragen.
Zitattimer1 = SetTimerEx("BENZIN",4000,true,"i",playerid);
Erste Vermutung wäre diese Zeile. 4000 steht für 4 Sekunden, bis die Funktion BENZIN aufgerufen wird. Ein kleinerer Wert wäre, was du beschreibst.
Du solltest dir außerdem mal überlegen ob es nicht schlauer ist, den Timer in einem Array spielerbezogen ( timer1[playerid] ) zu speichern.
Würden mehr als 2 Spieler hintereinander das Tanken starten, wird es zu Problemen kommen. Du überschreibst nämlich immer den alten Wert hinter timer1.
Joooo
Die Fehlermeldung sagt alles
Zitaterror 075: input line too long (after substitutions)
Du kannst die Abfrage auf mehrere Zeile aufteilen. Um die Übersicht zu behalten, würde ich jeweils nach dem ODER in die nächste Zeile spingen.
//Edit:
Warum nimmst du PlayerToPoint und IsPlayerInRangeOfPoint? PlayerToPoint ist entweder aus dem Plugin oder eine Pawn Version.
Nimm IsPlayerInRangeOfPoint, ist sowieso ein SA:MP Eigene Funktion.
Weil er erst alle auf den vollständigen (strcmp ) Namen prüfen möchte und danach alle auf den Namen teilweise ( strfind ).
Bei dir wird jeder Spieler einzelnt erst vollständig und direkt danach teilweise geprüft.
Das Ergebnis bei dir würde wie in diesem Beitrag nicht dem entsprechen,was Jeffry dort geschrieben hat.
ZitatID 0 = Jeffry
ID 1 = Jeff
Bei "Jeff" würdest du immer Jeffry erhalten ( ID 0 ) , nicht Jeff ( ID 1 ).
Rufst du denn unter OnPlayerRequestClass auch die Funktion SetupPlayerForClassSelection auf ?
Das du es formatierst sehe ich ( habe ich immerhin auch zitiert ). Die Frage ist aber, mit welchen Parametern es formatiert wird.
Ausgehende von deinem Quellcode aus dem 1. Post:
In Zeile 4 benutzt du format mit sStats[playerid][sRolePlay]
In Zeile 36 formatiert du erst sStats[playerid][sRolePlay] und legst dort den Spielernamen ab.
Heißt also, du benutzt erst sStats[playerid][sRolePlay], formatierst aber dessen Inhalt erst viel später ( Wenn überhaupt der Code bis dahin kommt ).
In Zeile(n) 11,17,23 und 29 behandelst du inputtext so als wäre es der Name. Daher denke ich,dass du in Zeile 4 hättest inputtext nutzen müssen. Das kann ich aber nicht wissen,da du meinem Tipp mit der Erklärung von inputtext und sStats[playerid][sRolePlay] nicht nachgekommen bist. Genau so wenig wie auf die Frage, bei welcher Abfrage es scheitert.
Du kannst aber auch einfach das Gegenteil belegen, in dem du zwischen Zeile 4 und 5 mal per print sPfad ausgeben lässt.
Du prüfst die falsche Datei ( behaupte ich mal).
Zitatnew sPfad[128];
format(sPfad, sizeof(sPfad), "/Acc/RolePlay/%s.ini",sStats[playerid][sRolePlay]);
Im Quellcode belegst du sStats[playerid][sRolePlay] erst in Zeile 35.
Ich glaube du müsstest inputtext nehmen, denn dort prüfst du nämlich auch auf den Unterstrich ( _ ).
Falls nicht, solltest du mal sRolePlay und inputtext genauer für uns definieren oder welche konkrete Fehlermeldung es bei dir ( ClientMessage ).
Zitatnew lala[MAX_PLAYERS][4] = { "none", "none", "none", "none", "none" };
Überleg nochmal was du möchtest. Für mich sieht es nämlich so aus, als möchtest du folgendes:
Du möchtest für jeden Spieler ( MAX_PLAYERS ) 4 Einträge anlegen, in denen jeweils ein String ( ["none"] MAX_PLAYER_NAME ) sein kann.
Also 3 Dimensionen : MAX_PLAYERS - 4 - MAX_PLAYER_NAME.
Deine Variable hat nur 2 Dimensionen, dir fehlt die 3 für den String.
Es wäre einfacher, die Werte auf "none" bei OnFilterscript/GamemodeInit bzw OnPlayerConnect zu setzen.
Du hast bereits 715 Forenbeiträge und packst in deine Beiträge fast gar keine Informationen oder Nettigkeiten.
Warum es crasht ? Keine Ahnung, dazu gibst du ja nichts an.
Installier das Plugin, damit kriegt man mehr Informationen:
CrashDetect 4.13
Wie man es korrekt installiert steht in diesem Thread.
Zitatformat(query,sizeof(query),"INSERT INTO autohaus (vID,x,y,z,c1,c2) VALUES ('411','3.5','3.4','3.3','3','3'");
Da fehlt zumindest im String eine ) um VALUES abzuschließen.
e_auto müsste dem o.g. zu Folge die Variable sein und a_x,a_y und a_z jeweils als Float: im enum.
Da fehlt vor a_x,a_y und a_z das Tag Float.
Du gehst sehr sparsam mit Informationen um.
Die Warnung kommt bestimmt von diesem Ausdruck
e_auto[i][a_x] // bzw a_y,a_z
Also zeig mal e_auto und das enum, welches du dort verwendest.
e_auto müsste dem o.g. zu Folge die Variable sein und a_x,a_y und a_z jeweils als Float: im enum.
Übrigens:
Zitatfor(new i; i<=MAX_AUTOS; i++) {
Mit <= holst dir bestimmt ein Fehler. <= solltest du nicht machen, wenn das Array eine Größe von MAX_AUTOS hat.
Steht dort doch:
Zitatundefined symbol "Spielername"
Ich sehe dort nirgendwo:
"new Spielername[64]"
Stattdessen hast du Sdatei.
//Edit:
SDdatei.
Wie würde was gehen ?
Gleichzeitig mehrere Anfragen versenden und haben ?
Du müsstest mit einem Array arbeiten Freundschaftsanfrage[playerid][0...5 zB ].
Das ist aber nicht ganz so einfach:
- Beim Anfrage senden einen leeren Slots suchen und dort die Freundschaftsanfrage speichern.
- Bei /friendrequests das Array abgehen und alle Einträge auflisten
- Bei DIALOG_FRIENDS vom listitem ( inputtext ) auf den Spieler(namen) zurückschließen. Ich würde es über inputtext machen. Außerdem irgendwo zwischenspeichern, wessen Spielers Freundschaftsanfrage du verarbeitest.
- DIALOG_FRIENDS1 den ausgewählte Spieleranfrage verarbeiten
Zitatformat(string1,sizeof(string1),"Freundschaftsanfrage von %s");//Hier soll ausgelesen werden auf welche Person man im DIALOG_STYLE_LIST geklickt hat.
Das wird nicht gehen, da du es so vom Code ausgelegt hast, dass jeder Spieler gleichzeitig nur 1 Freundschaftsanfrage haben kann.
Siehe im Code Zeile 8.
Er kann also immer nur auf den Spieler geklickt haben,der sowieso hinter Freundschaftsanfrage[playerid] steht bzw listitem 0.
Für Zeile 33 und 37 gillt das Gleiche. Es kann nur Freundschaftsanfrage[playerid] sein.
Wenn du als Platzhalter e ( für enum ) benutzt,dann brauchst und kannst du nicht jede Variable einzelnt angeben.
Mach den e-Platzhalter dort weg.
Warum nicht ?
Muss man nicht jedes mal den gleichen Code unter jeden Befehl kopieren. Ob es wirklich public sein muss, ist eine Andere Sache.
Mich würde ja mal interessieren, ob du /sfair aus dem Fahrzeug ( Fahrer- oder Beifahrersitz) oder zu Fuß aufrufst. Probier doch mal diese 3 Szenarien aus.
Zu Fuß sollte nichts passieren, als Fahrer sollte es klappen und als Beifahrer wirst du ohne Fahrzeug teleportiert.
Bekommst du denn auch die ClientMessage, dass du dich nach /sfair geportet hast?
Zitatpublic OnGameModeExit()
{
SpielerSpeichern(MAX_PLAYERS);
return 1;
}
Das funktioniert so nicht.
Du musst eine Schleife verwenden und dann für jede ID einzelnt SpielerSpeichern aufrufen.
Er möchte wohl bTextstr aus der Variable BInfo ziehen.
Zitatenum bizinfo
{
...
bTextstr[256],
...
};
Es wäre dann:
BInfo[id][bTextstr]
Einen String brauchst du dort aber gar nicht ( Außer du willst den Text auch tatsächlich auslesen und nicht nur setzen ).
Leg doch einfach innerhalb der Funktion ( von der du Ausschnitte gezeigt hast), einen String an und verwende diesen.
Den kannst du einfach bTextstr nennen, dann musst du aber den Eintrag bTextstr aus dem enum bizinfo entfernen und es sollte klappen.
Dann debugge doch mal tank_verlust().
So viele Möglichkeiten gibt es ja nicht,wieso es nicht funktioniert.
1. tank_verlust() wird nicht aufgerufen.
2. In tank_verlust() klappt die Motor[] == false Abfrage nie ( Motor[] ist nicht true )
Du bist dir auch ganz sicher,dass du die Variable Motor[] auf true / 1 setzt ? Zeig doch mal das Abschnitt dazu.
Trotzdem würde ich dir empfehlen,dir debugge mal genauer anzusehen.
ZitatAber es wird nichts abgezogen an Tank. Tank[...] bleibt dennoch immer auf dem wert in "Fahrzeugtank"...
Das weisst du woher ? Vllt stimmt nur die Anzeige nicht.
//Edit: Blödes [i]