Panzer mit X Schuss....

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
  • 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
    :)

  • 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. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • 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 nicht ^^


    Ich will das man die Munition irgendwie sieht,
    sry war etwas ungenau


    @Saiwn okay, gut gedacht :D


    So:


    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ässt :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S


  • 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


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • 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 gedacht ^^


    Wie 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 lassen ^^


    Dieses 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. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich frage mich nur: Wie will man dem Panzer verbieten "normal" zu schießen, sobald die Munition leer ist? Der Rest ist ja Kinderkram.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • 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 TextDraw


    Dann 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 bekommen


    PS: 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. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich denke nicht das man die Taste mit return 0; sperren kann da diese Tastenbelegung Standard ist.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen