CreateObject - Streamer JA/NEIN?

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
  • Guten Abend liebe Breatfisher, :D
    ich habe nur eine kurze und knappe Frage: und zwar bin ich mir gerade nicht sicher ob ich 'CreateObject(..., 300.0)' sich als Streamer eignet bzw ohne verwenden kann? oder ob ich lieber Streamer benuztze wie xObjects etc.
    LG VanillaGamer

  • Eigentlich nutz mann ein Streamer z.b. für CreateDynamicObject(....); Damit der Server die Objecte Schneller Lädt und Somit weniger Laggs auftauchen. Soweit habe ich es Verstanden.

    Zitat

    Ach mist, der hat das eben einfach gepostet.. ich stell die frage mal
    anders: Brauch ich einen Streamer bei CreateObject(..., 300.0); ?


    Nein brauchst du nicht.

  • Du kannst beides verwenden


    CreateObject wird schneller geladen (z.B - Wenn du Autos auf ein gemapptes Objekt spawnen lässt wäre es sinnvoller dass der Boden mit CreateObject erstellt ist damit die Autos nicht durchfallen)


    Mit CreateObject kannst du maximal 400 Objekte erstellen und mit Icognitos Streamer ca. 4000

  • Also:


    CreateObject ist eine Standart Funktion aus dem samp include.


    CreateDynamicObject ist eine Funktion die ein Plugin benötigt, was von Icognito geschrieben wurde.


    OpaObjects ist auch eine Funktion die von OpaSchlumpf glaube ich geschrieben wurde ^^


    Aber ich finde eigentlich CreateObject gut und es reicht auch völlig aus :D


    mfg. :thumbup:


    PS: Glaube es kann mehr als 400 Objekte erstllen :P

    ast2ufdyxkb1.png


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

  • Ich benutze zur zeit xObjects, läuft alles super, aber was mich stört ist das die Objecte bei der Skin auswahl nicht geladen werden, sondern erst nach dem Spawn.


    Das liegt nicht an dem Streamer sondern an deinem Script :D


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • An meinem Script? Woran könnte es z.B liegen? 8|


    Also als 1. das was Mellnik gesagt hat, aber es könnte auch daran liegen, dass du die Objecte erst nach der Skinauswahl kreieren 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

  • Darf ich den Code hier veröffentlichen? Weil dann würde ich dich mal fragen wie du das meinst..


    Du sollst alle Sachen die mit CreateObject anfangen unter den Callback OnGameModeInit kopieren ^^


    PS: es ist erlaubt, aber wenn du es jetzt hier so zeigst, merkt man, das du zu "faul/blöd" bist um STRG + X & STRG + V zu drücken ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Nur das blöde ist da ist nicht soo viel mit unter OnGameModeInit kopieren:
    #include <a_samp>


    forward Timer();
    forward SetPlayerPosWithObjects(playerid,Float:x,Float:y,Float:z);
    enum object_info
    {
    modelid,
    Float:ox,
    Float:oy,
    Float:oz,
    Float:orx,
    Float:ory,
    Float:orz,
    Float:viewdist
    }
    new Objects[][object_info] = {
    {8040, -391.2100, 2520.1600, 178.2700, 0.0000, 0.0000, 0.0000, 450.0},
    {13648, -8.2300, 2520.8700, 15.4800, 0.0000, 0.0000, 90.0000, 450.0},
    };


    enum player_info
    {
    objid[sizeof(Objects)],
    bool:view[sizeof(Objects)]
    }
    new Player[MAX_PLAYERS][player_info];


    //------------------------------------------------------------------------------


    bool:IsInReach(Float:x,Float:y,Float:z,Float:x2,Float:y2,Float:z2,Float:dist)
    {
    x = (x > x2) ? x - x2 : x2 - x;
    if(x > dist) return false;
    y = (y > y2) ? y - y2 : y2 - y;
    if(y > dist) return false;
    z = (z > z2) ? z - z2 : z2 - z;
    if(z > dist) return false;
    return true;
    }


    //------------------------------------------------------------------------------


    new timer;


    public OnFilterScriptInit()
    {
    timer = SetTimer("Timer",500,1);
    return 1;
    }
    //==============================================================================
    public OnFilterScriptExit()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    for(new o = 0; o < sizeof(Objects); o++)
    {
    if(Player[i][view][o])
    {
    Player[i][view][o] = false;
    DestroyPlayerObject(i,Player[i][objid][o]);
    }
    }
    }


    KillTimer(timer);
    }
    //==============================================================================
    public OnGameModeInit(playerid)
    {
    for(new i = 0; i < sizeof(Objects); i++) Player[playerid][view][i] = false;
    }


    public OnPlayerDisconnect(playerid)
    {
    for(new i = 0; i < sizeof(Objects); i++)
    {
    if(Player[playerid][view][i])
    {
    Player[playerid][view][i] = false;
    DestroyPlayerObject(playerid,Player[playerid][objid][i]);
    }
    }
    }
    //==============================================================================
    public Timer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    if(IsPlayerConnected(i))
    PlayerObjectUpdate(i);
    }


    PlayerObjectUpdate(playerid)
    {
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    for(new i = 0; i < sizeof(Objects); i++)
    {
    if(!Player[playerid][view][i])
    {
    if(IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
    {
    Player[playerid][view][i] = true;
    Player[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelid],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]);
    }
    } else if(!IsInReach(pos[0],pos[1],pos[2],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
    {
    Player[playerid][view][i] = false;
    DestroyPlayerObject(playerid,Player[playerid][objid][i]);
    }
    }
    }
    //==============================================================================
    public SetPlayerPosWithObjects(playerid,Float:x,Float:y,Float:z)
    {
    for(new i = 0; i < sizeof(Objects); i++)
    {
    if(!Player[playerid][view][i])
    {
    if(IsInReach(x,y,z,Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
    {
    Player[playerid][view][i] = true;
    Player[playerid][objid][i] = CreatePlayerObject(playerid,Objects[i][modelid],Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][orx],Objects[i][ory],Objects[i][orz]);
    }
    } else if(!IsInReach(x,y,z,Objects[i][ox],Objects[i][oy],Objects[i][oz],Objects[i][viewdist]))
    {
    Player[playerid][view][i] = false;
    DestroyPlayerObject(playerid,Player[playerid][objid][i]);
    }
    }
    SetPlayerPos(playerid,Float:x,Float:y,Float:z);
    }
    //==============================================================================
    public OnPlayerSpawn(playerid)
    PlayerObjectUpdate(playerid);

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