Texturierung(?) funktioniert nicht

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, ich habe mich mal dran gemacht die Straße vor dem Krankenhaus umzutexturieren. Allerdings sieht es, nachdem ich es ja angeblich texturiert habe so aus:



    Hier mal der Code unter OnGameModeInit:
    new khstr1; khstr1 = CreateObject(5794, 1200.90625, -1337.99219, 12.39840, 0.00000, 0.00000, 0.00000); SetObjectMaterial(khstr1, 0, 6322, "airprtrunway_las", "greyground256", 0);



    Und unter OnPlayerSpawn hab ich folgendes:
    RemoveBuildingForPlayer(playerid, 5919, 1200.9063, -1337.9922, 12.3984, 0.25); RemoveBuildingForPlayer(playerid, 5794, 1200.9063, -1337.9922, 12.3984, 0.25);



    Was mache ich falsch?


    MfG


  • Du benutzt den Falschen Material Index. Ausserdem, wo hast du die Textur her? Bei dem Objekt 6322 ist die garnicht dabei, die du angegeben hast.

    Stimmt, ich habe gerade nur die Textur geändert und vergesser die ID zu ändern.


    //edit: es war id 5004, habs grad geändert, aber es ist immernoch so wie oben auf dem Screen..


    MfG

  • Du gehst in dein Script unter OnGamemodeInit, und schreibst da alle Objekte rein. Danach schaust du welches Objekt du Texturen willst und machst das wie folgt:


    Dein Objekt + Koordinaten.
    z.B CreateObject(19440, 1928.34493, 1879.27454, 11.26230, 0.00000, 0.00000, 90.00000);


    Danach wenn du es mit Texturen verschönern willst würde es so aussehen:
    z.B new wand0(Name) = CreateObject(19440, 1928.34493, 1879.27454, 11.26230, 0.00000, 0.00000, 90.00000);(Dein Objekt + Koordinaten)
    SetObjectMaterial(wand0, 0, 18202, "w_towncs_t", "ahoodfence2", 0xFFFFFFFF); (Der Materialname + Farbe)


    wenn du es nachher so stehen hast solltest du nichts falsch gemacht haben.


    P.s Die Removes kommen unter OnPlayerConnect rein.


    Wenn du es immer noch nicht verstehen solltest schau mal hier: http://wiki.sa-mp.com/wiki/SetObjectMaterial


    Gruß Joel/aser

    Einmal editiert, zuletzt von aser ()

  • wenn du es nachher so stehen hast solltest du nichts falsch gemacht haben.


    Doch wird er dann. Erstens wenn du CreateDynamicObject benutzt, musst du natürlich auch SetDynamicObjectMaterial benutzen. Sonst wird das nichts.
    Zweitens ist dein vorgehen viel zu umständlich.


    du erstellst dir eine globale Variable. Wie z.B.
    new textur;
    Danach suchst du dir das Objekt raus.
    CreateObject(5794, 1200.90625, -1337.99219, 12.39840, 0.00000, 0.00000, 0.00000);
    und gibts dem ganzen nen Namen.
    textur = CreateObject(5794, 1200.90625, -1337.99219, 12.39840, 0.00000, 0.00000, 0.00000);
    So nun brauchst du noch den Befehl zum texturieren.
    textur = CreateObject(5794, 1200.90625, -1337.99219, 12.39840, 0.00000, 0.00000, 0.00000);SetObjectMaterial(textur, 2, 5004, "airprtrunway_las", "greyground256", 0);
    Dann noch unter OnPlayerConnect
    RemoveBuildingForPlayer(playerid,5794, 1200.90625, -1337.99219, 12.39840,0.25);


    Schon sieht das ganze so aus.


  • Kann sein das meins etwas umständlich ist, aber es geht. Des weiteren muss es keine Globale Variable oben im Script einfügen er kann die auch beim Code mit einfügen.

  • wieso ist das Objekt immernoch weg, wenn ich das so gemacht habe, wie du's mir geschrieben hast?


    Du erstellt das Objekt als normales CreateObject unter OnGameModeInit, für RemoveBuilding existiert dort das Objekt ebenfalls, RemoveBuilding ist nicht auf die Standard GTA Objekte limitiert.
    Wenn du also das RemoveBuilding aufrufst prüft er an der Koordinate mit dem Radius 0.25 und findet dort 2 Objekte mit der ModelID die er dann natürlich beide löscht.


    Man kann das Umgehen indem man das Objekt Dynamic macht, damit verhindert man das zwar, denn wenn der Spieler Connected wird das da ja nicht gestreamt und selbst wenn ist es ein PlayerObject und wird von RemoveBuilding ignoriert. ( Glaube ich, nie ausprobiert, kA ^^ ). Der nachteil ist das Fahrzeuge durch den Boden fallen wenn du z.B. aus dem Interior kommst weil der Streamer in der Regel langsamer ist.


    Man kann das wiederrum aber auch umgehen indem man ein wenig trickst, du entfernst das Objekt zwar mit RemoveBuilding aber änderst den Radius:
    RemoveBuildingForPlayer(playerid,5794, 1200.90625, -1337.99219, 12.39840,0.0001);
    Die Koordinate stimmt auf mehrere nachkommastellen das sollte also passen. Das neue Objekt erstellst du dann einfach an der gleichen position und verschiebst es dann minimal in eine richtung z.B.:
    CreateObject(5794, 1200.90625, -1337.99219, 12.39740, 0.00000, 0.00000, 0.00000);
    Ich hab die Z von .39840 auf .39740 geändert, damit ist das neue Objekt aus dem RemoveBuilding Bereich raus und das wars. Autos spawnen dann anständig auf dem Boden und alles ist gut.


    Achso, ich würde dir dann noch raten beim erstellen des Objektes die Sichtweite auf 900.0 zu erhöhen, sonst hast du, wenn du weiter weg bist ein blaues Loch im Boden weil das Objekt nicht geladen ist.