Sorry für die späte Antwort, ich war die ganze Woche geschäftlich auf Reise.
(newkeys ==PLAYER_STATE_PASSENGER)
Der Teil hier macht keinen Sinn, das musst du entfernen.
Am besten du entfernst mal den kompletten Teil.
Sorry für die späte Antwort, ich war die ganze Woche geschäftlich auf Reise.
(newkeys ==PLAYER_STATE_PASSENGER)
Der Teil hier macht keinen Sinn, das musst du entfernen.
Am besten du entfernst mal den kompletten Teil.
Lass dir mal folgendes ausgeben:
format(string, sizeof(string), "%s", fuelName[vehDefaultData[idx][e_fuelType]]);
zu:
printf("idx: %d", idx);
printf("fuelType: %d", vehDefaultData[idx][e_fuelType]);
format(string, sizeof(string), "%s", fuelName[vehDefaultData[idx][e_fuelType]]);
printf("string: %s", string);
jedoch sollte man diese auch mit H beenden können.
Soweit ich weiß geht das nicht.
Man muss "Enter" bzw. "F" drücken, damit man wieder ins Fahrzeug kommt.
Meiner Erfahrung nach klappt das aber nur bedingt, zum Teil springt der Spieler dabei manchmal aus dem Fahrzeug.
Zumindest war dies bis 0.3x so, ich nehme aber an, dass dies nach wie vor so ist.
Dieser Code ist getestet und funktioniert.
Gut, dann muss daran auch nichts mehr geändert werden, wenn er funktioniert.
Sprich Wunsch 1 passt dann, nehme ich an. Denn das sagt der Code ja aus.
2. wenn ich "H" drücke holt er zwar die Waffe raus, jedoch wenn ich nochmal "H" drücke, passiert nix.
Das verstehe ich nicht.
Und ist das jetzt ein Wunsch oder ist es aktuell so?
Wenn man "H" drückt geht doch das Fenster runter und der Spieler lehnt sich zum Drive-By raus.
Danach kann man nicht nochmal "H" drücken, was sollte das bringen?
Vielleicht stehe ich auch auf der Leitung...
Seitdem ich diese Sachen ganz oben unter onplayerstatechange habe funktionieren alle Sachen darunter nicht
Du sprengst das Array, dadurch geht der Code darunter nicht mehr.
Lösung siehe hier: Tankvolumen und Treibstoff an Fahrzeugen zuordnen
Ich schlage auch vor, wir bleiben in dem separaten Thread ab jetzt, um nicht an mehreren Stellen gleichzeitig Code stehen zu haben.
Das Tanksystem geht nämlich weit über eine kleine Frage hinaus.
So wie du es mir gesagt hast, ist ja auch richtig so
Nein, ich sagte das muss 0,1,2, ... sein, sonst klappt es nicht. So hatte ich es auch im Beispiel angefangen.
#define FT_DIESEL 0
#define FT_BENZIN 1
#define FT_KEROSIN 2
#define FT_ETHANOL 3
Das dient nur dem Zugriff auf das Array mit den Namen.
Ich habe das Gefühl wir reden irgendwie aneinander vorbei.
Ist dir denn bewusst, was der Code macht, den du jetzt gepostet hast?
Dieser setzt deine Waffe zur Faust, wenn du die Waffe 28, 29, 31 oder 32 in der Hand hast.
Falls du das Drive-By für alle Waffen nutzen willst, dann musst du diesen Code nur löschen, das geht nämlich im Standard schon.
Ansonsten:
Was willst du denn genau als Ergebnis haben? Beschreibe das bitte mal detailliert.
Soll ich die Variable einfach e_Fuel nennen und hier speichern?
Nein, das ist das enum für die Default Daten, diese sind abhängig von der Model-ID, nicht von der vehicleid.
Erstelle dafür ein neues Array:
enum vehDataEnum {
e_fuel
};
new vehData[MAX_VEHICLES][vehDataEnum];
Beim Erstellen des Fahrzeugs machst du dann:
vehData[vehicleid][e_fuel] = vehDefaultData[modelid-400][e_maxFuel];
Habe hier was versucht aber bei der Tankart zeigt er mir garnichts an
Wie hast du die FT_... definiert (#define)?
Ich will aber nicht das es so riesig ist soll ja so sein wie es halt ist
Die PlayerTextDrawTextSize musst du nur bei dem Textdraw erhöhen, das den Text des Fahrzeugs beinhaltet, nicht den der Box.
Einfach gleichsetzen, oder etwas größer machen. Wenn keine Box vorhanden ist, siehst du das auch nicht. Es kommt dann aber kein Zeilenumbruch mehr.
17 ist aber definitiv zu klein.
Sonst wäre er jetzt nicht drin.
Ich dachte Driveby ist standard mässig mit drin.
Was meinst du damit?
Ja, es ist standardmäßig an, für alle möglichen Waffen.
Ich möchte sicher gehen, wenn du den Code aus OnPlayerStateChange entfernst, und es dann (eben für alle Waffen) funktioniert, dass es nicht an einem anderen Code liegt.
Funktioniert es nämlich ohne den Code ebenfalls nicht, dann nimmt dir ein anderer Code die Waffe weg.
Nach diesem anderen Code musst du dann suchen.
Du sollt die Textdraws dort erstellen und nicht anzeigen ._.
Danke dir!♥
for(new i=0; i<MAX_PLAYERS; i++)
Achtung!
Bei OnPlayerConnect nicht den Code mit Schleife für alle Spieler einfügen, sonst wird jedes mal wenn ein Spieler den Server betritt, für alle Spieler ein neues Textdraw angelegt.
Der Code muss so sein:
textdraw[2][playerid] = CreatePlayerTextDraw(playerid, 561.000000, 354.000000, "");
PlayerTextDrawFont(playerid, textdraw[2][playerid], 2);
//etc...
Wenn dort Wörter mit Leerzeichen sind dann ist das so
Erhöhe die 17 bei der PlayerTextDrawTextSize zu 50 oder so.
Wenn du den Code, den du hier gepostet hast, aus deinem Gamemode entfernst, behälst du dann die Waffe, wenn du in ein Fahrzeug steigst?
Außerdem kannst du das so schreiben:
if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER))
{
PlayerTextDrawShow(playerid, textdraw_0[playerid]);
//etc...
}
//hier die andere if-Abfrage
Du musst nicht x mal die gleiche Abfrage hinschreiben, pro Zeile.
Die AK47 ist im Slot 5, daher würde das damit nicht gehen.
Mit der MP5 sollte es klappen. Hast du vielleicht noch einen anderen Code bei OnPlayerStateChange, der die Waffe beim Einsteigen in das Fahrzeug zur Faust setzt? Eventuell in einem Filterscript?
Also kann ich ganz normal mit der Zahl anstatt 57 mit 1 anfangen
Achso, du meinst diese Zahlen. Das ist die Größe des Tanks.
Die Zahlen bei den defines meinte ich.
Das sind doch Playertextdraws da wird doch playerid und maxplayers benutzt?
Das ist nur das Array, sprich die Variable, die die ID des Textdraws speichert. PlayerTextDraws sind separate Textdraws, erstellt mit CreatePlayerTextDraw.
Den Meldungen nach nutzt du weiterhin kein PlayerTextDraw, dann:
PlayerTextDrawSetString
Zu
TextDrawSetString
Wie gesagt sind PlayerTextDraws hierfür eigentlich gedacht.
textdraw_3
Zu
textdraw_3[playerid]
Und ein Komma zwischen playerid und string setzen.
Unter der letzten, vor dem ersten public.
Dort wo du auch andere globale Variablen deklariert hast.
Muss ich alles untereinander schreiben?
Du kannst die Abschnitte auch nebeneinander schreiben, dann aber ohne die Kommentare.
Der hat irgendein Problem
Stehen die defines vor der ersten Nutzung, sprich vor dem enum? Wenn nicht, trage die davor ein.
Kann ich die Modelid auch ganz einfach hier angeben
Nein. Nutze außerdem bitte PlayerTextDraws.
Was bedeuten die Zahlen nach FT_DIESEL
Die stehen für den Index im Array der Tankartenbezeichnung. Die müssen 0, 1, 2 etc sein.
Hast du das Array mit den Fahrzeugnamen auch unter den Includes eingefügt?
Zwecks dem Beifahrer:
if(newstate == PLAYER_STATE_DRIVER && pInfo[playerid][pAutoschein] ==1)
Zu
if((newstate == PLAYER_STATE_DRIVER && pInfo[playerid][pAutoschein] ==1) || (newstate == PLAYER_STATE_PASSENGER))