SetObjectHealth?

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
  • Hallo Breadfish


    Ich wollte wissen ob sowas wie ObjectHealth gibt. Ich würde gerne ein Object erstellen mit 10000 hp
    was auch bei 0 HP Kaputt geht und nach 10 min wieder spawnt z.B eine Tür oder sowas.
    Gibt es sowas bei samp? Wenn ja wie lautet der Code


    MFG

  • habe es mal auf einem dm server gesehen mann musste antenen kapput machen habe den server besitzer gefragt ermeine das er irgendwas mit filterscript gemacht hatt wenn ich das finde melde ich mich

  • Hey,


    du könntest bei
    OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)


    abfragen ob es das Objekt ist und dann einfach eine Variable machen zb new HP = 1000; und immer wenn er es anschießt HP -= 10; oder so machen und bei 0 einfach destroyen das Object

  • Bei deinem Object, das du erstellst direkt ein SetObjectHealth Kommando(wenn es das gibt)
    und bei OnPlayerWeaponShot abfragen, ob es dieses Object ist, mit welcher weaponid
    oder einfach direkt das Objekt zerstören, wenn es die hitid ist.
    Im Public zum Beispiel folgendes abfragen:



    if(hitid == NameDeinesObjektes)
    {
    DestroyObject(NameDeinesObjektes);
    //Weiterer Code z.B. Spieler erhält 1000000 EXP.
    }



    @HandsUper

  • Ich habe alles gepackt bis zu einem Punkt


    Diesen Warning hier was soll ich tun???



    (8131) : warning 219: local variable "hitid" shadows a variable at a preceding level
    public OnPlayerWeaponShot(playerid, weaponid,hittype,hitid,Float:fX, Float:fY, Float:fZ)


    Bei mir im Script steht noch das hier ganz oben.



    new hitid = 999;



    MFG


    @Jeff_Hardy
    @Jeffry

    Einmal editiert, zuletzt von HandsUper ()


  • Wenn du eine Sache definierst oder diese bereits in einem anderen Public definiert ist,
    dann darfst du nicht noch eine, gleichnamige Variable oder sonstiges erstellen. Merk dir:
    Es darf nichts gleichnamig sein.


    Mach statt hitid z.B.
    new hitLife = 999;


    Also:

    if(hitid == DeinObject)
    {
    hitLife--; // hitLife wie ich über diesem Absatz hier schreibe oben im Skript als new hitLife = 999; definieren. Nichts darf gleichnamig sein!
    if(hitLife == 0)
    {
    DestroyObject(DeinObject);
    }



    }



    @HandsUper

  • Ich habe einfach hitid zu hitlife geändert aber nur da wo es von Anfang an war.


    jetzt passt es wie kann ich ein TextLabel an mein Object einfügen wo auch das Leben steht z.B 1000/1000 etc.


    Wenn man aber das Object zerstört hat und nach dem Timer wieder spawnt kann man es nicht mehr kaputt schießen



    forward Spawntresor();
    public Spawntresor()
    {
    CreateObject(1337, -1551.16052, 659.52228, 6.81870, 0.00000, 0.00000, -90.00000); // Beispiel
    return 1;
    }


    Der Timer muss doch gekillt werden oder Killtimer ???
    z.B


    zu



    new SpawntresorTimer[MAX_PLAYERS] = {-1,...};



    SpawntresorTimer[playerid] = SetTimerEx("Spawntresor",60000,0,"i",playerid);//Hier ist der Timer halt wenn die Tür auf 0 Hp ist liegt auch richtig ich poste nur nicht alles halt man kennt alles schon ja




    forward Spawntresor();
    public Spawntresor()
    {
    KillTimer(SpawntresorTimer[playerid]); // Hier bekomme ich aber ein Error = undefined Symbol SpawntresorTimer <<--------------------
    CreateObject(1337, -1551.16052, 659.52228, 6.81870, 0.00000, 0.00000, -90.00000); // Beispiel
    return 1;
    }



    @Kristik47
    @Jeffry

    4 Mal editiert, zuletzt von HandsUper ()

  • Das mit dem 3DTextLabel würde ich eigentlich nicht anders als einfach per /save die Position
    des Objektes einfach dann im Create3DTextLabel einfügen und weiterhin weiß ich um ehrlich
    zu sein selber nicht, was du machen könntest. Das Label höchstwahrscheinlich einfach die ganze Zeit
    updaten per
    Also zuerst das Label erstellen per
    Create3DTextLabel(hitLife, Farbe, x, y, z, 10.0, deinvWelt, obDuWändeLabelSichtbarSeinSoll 0 = nein, 1 = ja);


    Dann bei OnPlayerShot:


    Update3DTextLabelText(labelName, Farbe, hitLife);


    @HandsUper


    Ich weiß leider nicht, ob das so ganz richtig ist, deshalb:


    @Jeffry