JunkStream [Objektstreamer] v1.1 (Update!)

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 einen kleinen Objektstreamer gescriptet. Es ist mein erstes Include.
    Er wird mit Sicherheit sehr hilfreich für Scriptanfänger sein, die nicht wissen, wie man einen scriptet. ;)


    Funktionen



    stock JunkObj(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) //Erstellt ein Objekt
    stock MoveJunkObj(objid, Float:x, Float:y, Float:z, Float:Speed) //Verschiebt ein Objekt
    stock SetJunkObjPos(objid, Float:x, Float:y, Float:z) //Setzt die Position eines Objekts
    stock GetJunkObjPos(objid, &Float:x, &Float:y, &Float:z) //Gibt die Position eines Objekts aus
    stock DesJunkObj(objid) //Löscht ein Objekt
    stock IsValidJunkObj(objid) //Prüft ob valides Objekt
    stock JunkObjToPlayer(modelid, playerid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
    stock JunkObjToVehicle(modelid, vehicleid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)


    Auch wenn es viel Arbeit wird: Spätestens ab Version 4.0 wird es einen InGame Mapeditor geben.
    Im Moment ist es ja nur ein einfaches Include, da es mein erstes ist, konnte ich noch nicht so viele Funktionen scripten.


    Anpassungen


    Anzahl der maximalen Objekte (zu hohe Zahlen lassen die Dateigröße sehr in die Höhe steigen!)
    #define OBJECTS 5000 //5000 ist die maximale Objektanzahl
    Stream Weite (Empfohlener Wert für Reallife Server: 250 - 350)
    #define STREAM_RANGE 999 //999 ist die Stream Weite


    Bitte "JunkStream();" unter OnGameModeInit im Gamemode einfügen, um das Streamen zu erlauben. :)


    Was darf ich?


    Du darfst...
    - das Include editieren/verbessern
    - das Include verwenden
    - Mirrors angeben
    Du darfst nicht...
    - die Credits entfernen
    - das Include etwas editieren und als deins ausgeben


    Download


    Version 1.0
    http://www.file-upload.net/dow…74459/JunkStream.inc.html
    Neueste Version (1.1)
    http://junkman.cwsurf.de/download/JunkStream.zip


    Pastebin


    Version 1.0
    http://pastebin.com/RWTbHEYB
    Neueste Version (1.1)
    http://junkman.cwsurf.de/codes/JunkStream.txt
    (Eigener Server)
    http://pastebin.com/NavU19B0 (Mirror auf pastebin.com)

    Updates


    Version 1.1
    - if-Abfrage entfernt
    - Stream Weite niedriger gestellt
    - Neue Funktion: JunkObjToPlayer
    - Neue Funktion: JunkObjToVehicle


    Überarbeitungen


    (1) Downloadlink vergessen. ;)
    (2) Pastebin Link auch hinzugefügt.
    (3) Pastebin Link anklickbar gemacht.
    (4) Update auf Version 1.1.
    (5) Editor hat einen Zeilenumbruch vergessen. :P

  • Fällt dir hier etwas auf?


    if(IsPlayerInRangeOfPoint(i, STREAM_RANGE, ObjPos[o][0], ObjPos[o][1], ObjPos[o][2]))
    {
    if(StreamObject[o][i] == 0)
    {
    ObjectID[o][i] = CreatePlayerObject(i,ObjectModel[o], ObjPos[o][0], ObjPos[o][1], ObjPos[o][2], ObjRotate[o][0], ObjRotate[o][1], ObjRotate[o][2]);
    StreamObject[o][i] = 1;
    continue;
    }
    }else if(!IsPlayerInRangeOfPoint(i, STREAM_RANGE, ObjPos[o][0], ObjPos[o][1], ObjPos[o][2]))
    {
    if(StreamObject[o][i] == 1)
    {
    DestroyPlayerObject(i,ObjectID[o][i]);
    StreamObject[o][i] = 0;
    continue;
    }
    }


    Die Abfrage nach dem else Statement ist Sinnlos, warum sollte ich 2 mal Prüfung ob der Spieler in reichweite ist oder nicht?


    IsPlayerInRangeOfPoint gibt dir den Wert 1 zurück wenn er in reichweite ist und 0 wenn nicht, also ein ganz normales "else" ohne eine "if" abfrage danach hätte es auch getahn.


    if(IsPlayerInRangeOfPoint(i, STREAM_RANGE, ObjPos[o][0], ObjPos[o][1], ObjPos[o][2]))
    {
    if(StreamObject[o][i] == 0)
    {
    ObjectID[o][i] = CreatePlayerObject(i,ObjectModel[o], ObjPos[o][0], ObjPos[o][1], ObjPos[o][2], ObjRotate[o][0], ObjRotate[o][1], ObjRotate[o][2]);
    StreamObject[o][i] = 1;
    continue;
    }
    }else{
    if(StreamObject[o][i] == 1)
    {
    DestroyPlayerObject(i,ObjectID[o][i]);
    StreamObject[o][i] = 0;
    continue;
    }
    }


    Somit sparst du eine Sinnlose abfrage und sparst im Endeffekt ein paar Milisekunden, Rechne dir den Profit mal bei 500 Spielern aus. :thumbup: