Hey Leute, ich möchte was in meinen Server einbauen wobei ich
bedenken habe ob das funktioniert, also ich möchte das ein Panzer
eine bestimmte Anzahl von Munition bei sich tragen kann, und wenn
sie Leer ist muss man sie auffüllen in der Base natürlich für Geld.
Habt ihr eine Idee wie man das mit der Munition machen kann?
Wäre nett wenn ihr mir helfen könntet,
Mfg Metro
Panzer mit X Schuss....
- [FR]Metro
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Könntest mal sowas probieren:
//oben im Script
new munition[MAX_PLAYERS];//Halt dem Spieler irgentwo munition geben
//unter OnPlayerKeyStateChange
if(newkeys == KEY_FIRE)
{
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 432 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(munition[playerid] == 0) return 0;
munition[playerid] -= 1;
return 1;
}
}Bin mir nur nicht sicher, ob das mit dem return 0; funktioniert, könnte aber klappen
Wenn nicht, kannste ja auch machen, dass er aus dem Fahrzeug geschmissen wird oder so...mfg.
-
Noch eine Frage wie kann ich das mit einem Textdraw ausgeben
habe noch so meine Probleme mit Textdraws... -
Noch eine Frage wie kann ich das mit einem Textdraw ausgeben
habe noch so meine Probleme mit Textdraws...
Was willst du denn mit dem TextDraw Anzeigen lassen -
Was willst du denn mit dem TextDraw Anzeigen lassen
ich denk marestmuni/Maxmuni
oder so -
Ich will das man die Munition irgendwie sieht,
sry war etwas ungenau.//edit: also so ungefähr 300/500 Munition
-
ich denk ma
aktuelle muni/Maxmuni
oder so
Ja, du denkst, vielleicht will er auch die Maximale Anzahl an Panzern auf dem Server anzeigen lassen, man weiß es nichtIch will das man die Munition irgendwie sieht,
sry war etwas ungenau
@Saiwn okay, gut gedachtSo:
new str[64];
format(str, 64,"%d/100 Munition",munition[playerid]);
TextDrawSetString(DeinTextDrawName,str);
Das musst du in einen Callback schreiben, den du mit einem Timer aufrufen lässtmfg.
-
So:
PAWN Quelltext1
2
3new str[64];
format(str, 64,"%d/100 Munition",munition[playerid]);
TextDrawSetString(DeinTextDrawName,str);Das musst du in einen Callback schreiben, den du mit einem Timer aufrufen lässt
mfg.
Warum sollte er dafür einen unnötigen Timer laufen, wenn er die Zahl einfach im OnPlayerKeyStateChange erneuern kann, sobald der Panzer geschossen hat/schießt -
Wie sieht das nur der, der im Panzer sitzt?
-
Warum sollte er dafür einen unnötigen Timer laufen, wenn er die Zahl einfach im OnPlayerKeyStateChange erneuern kann, sobald der Panzer geschossen hat/schießt
Noch besser, daran habe ich gar nicht gedachtWie sieht das nur der, der im Panzer sitzt?
CreatePlayerTextDraw
und dann halt einfach mit der Show Funktion sobald man im Panzer sitzt dem Spieler anzeigen lassenDieses Feature ist aufjedenfall möglich.
Dies habe ich schon in der 0.3c Version auf einem Server entdeckt.Cooles Feature!
MfG
Wärst du so freundlich uns mal den Abschnitt aus deinem Script zu posten ?mfg.
-
Ich frage mich nur: Wie will man dem Panzer verbieten "normal" zu schießen, sobald die Munition leer ist? Der Rest ist ja Kinderkram.
-
Konnte man die Taste nicht irgendwie sperren?
-
So ih erkläre dir es komplett mit deinen TextDraws und der Munition...
Als erstes definieren wir den TextDraw mit.
new Text:PanzerMunition[MAX_PLAYERS];
new Munition[MAX_VEHICLES];Dann gehen wir unter OnPlayerConnect(playerid) und fügen folgendes ein.
PanzerMunition[playerid] = TextDrawCreate(50.000000,325.000000, " ");
TextDrawBackgroundColor(PanzerMunition[playerid], 255);
TextDrawFont(PanzerMunition[playerid], 1);
TextDrawLetterSize(PanzerMunition[playerid], 0.32, 0.97);
TextDrawColor(PanzerMunition[playerid], -1);
TextDrawSetOutline(PanzerMunition[playerid], 0);
TextDrawSetProportional(PanzerMunition[playerid], 1);
TextDrawSetShadow(PanzerMunition[playerid], 1);
So jetzt haben wir die Position des TextDraws und Design definiert.
Weiter Infos zum TextDrawDann gehen wir unter OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) und fügen folgendes ein
if(vehicleid == 432 && !ispassenger)
{
TextDrawShowForPlayer(playerid,PanzerMunition[playerid]);
}
Hiermit lassen wir den Textdraw sichtbar machen.Dann gehen wir zu OnPlayerStateChange(playerid, newstate, oldstate)
if(newstate == PLAYER_STATE_ONFOOT)
{
TextDrawHideForPlayer(playerid, PanzerMunition[playerid]);
}
Somit lassen wir den TextDraw verschwinden, wenn er aussteigt.Dann machen wir mal das mit der Munition
bei OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
if(newkeys == KEY_FIRE)
{
new vid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(vid) == 432 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(Munition[vid] >= 1){ Munition[vid] -= 1; }
else { return 0; }
new str[64];
format(str, 64,"%d/100 Munition",Munition[vid]);
TextDrawSetString(PanzerMuntion[playerid],str);
return 1;
}
}so das war es nun...
Den Textdraw solltest du über der Minimap angezeigt bekommenPS: Das ist ungetestet aus dem Kopf her geschrieben, sollte aber funktionieren
EDIT: Fehler ausgebessert und PS hinzugefügt
/EDIT: Noch ein Fehler gefunden und beseitigt -
Dann machen wir mal das mit der Munition
Nicht ganz korrekt, so ist es richtig:if(newkeys == KEY_FIRE)
{
new vid = GetPlayerVehicleID(playerid);
if(GetVehicleModel(vid) == 432 && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(Munition[vid] == 0) return 0;
Munition[vid] -= 1;
new str[64];
format(str, 64,"%d/100 Munition",Munition[vid]);
TextDrawSetString(PanzerMuntion[playerid],str);
return 1;
}
}Konnte man die Taste nicht irgendwie sperren?
Probiere es doch mal mit return 0;Wenn das nicht geht, kannst du dich ja an [GP]Master wenden, der das ja anscheinend in seinem Script hat
mfg.
-
Danke Leute, ich probiere es in einer Stunde.
-
Ich denke nicht das man die Taste mit return 0; sperren kann da diese Tastenbelegung Standard ist.
-
Kaliber das ist prinzipiell das gleiche ich relativ wie er es macht... ist beides gleich und die selbe funktion
-
Bei mir wird kein Textdraw angezeigt und ich kann so oft Schießen wie ich will....
-
if(GetVehicleModel(vehicleid) == 432 && !ispassenger)
{
TextDrawShowForPlayer(playerid,PanzerMunition[playerid]);
} -
Ich habe bereits ein anderes Textdraw was
nun statt der Munitions anzeige da steht
wie kann ich ein 2tes machen?, sry habe
nur einmal ein Uhr Textdraw gemacht...