Guten Abend liebe Breatfisher,
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
CreateObject - Streamer JA/NEIN?
- VanillaGamer
- Geschlossen
- Erledigt
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
-
-
?? Was ist daran ein Streamer?
-
Für gewöhnlich arbeitet ein Streamer doch mit "CreateDynamicObject" oder nicht?
-
Ach mist, der hat das eben einfach gepostet.. ich stell die frage mal anders: Brauch ich einen Streamer bei CreateObject(..., 300.0); ?
-
Für gewöhnlich arbeitet ein Streamer doch mit "CreateDynamicObject" oder nicht?
Zumindestens der von Incognito...
Und ja, es wäre sinnvoll einen Streamer zu nutzen, wenn du sehr viele Objekte auf deinem Server hast!
-
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.
ZitatAch 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. -
Also kann ich einfach ohne Bedenken 3.000 - 4.000 Objects damit laden?
-
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
-
Wo bekomme ich den Icognitos-streamer her?
-
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
mfg.
PS: Glaube es kann mehr als 400 Objekte erstllen
-
-
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.
-
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 Scriptmfg.
-
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.Dann bist du bei der Skinauswahl wahrscheinlich nicht nah genug an den Objects dran.
Mit CreateObject kann man 1000 erstellen (http://wiki.sa-mp.com/wiki/Limits)
Mit einem Streamer locker über 10000. -
An meinem Script? Woran könnte es z.B liegen?
-
An meinem Script? Woran könnte es z.B liegen?
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ässtmfg.
-
Ja an dem zweiten bestimmt.. Habe ich aber auch schon versucht das zu ändern, aber ich habe es leider nicht hinbekommen...
-
Ja an dem zweiten bestimmt.. Habe ich aber auch schon versucht das zu ändern, aber ich habe es leider nicht hinbekommen...
Dann setz sie alle in OnGameModeInit rein und die Sache hat sich. -
Darf ich den Code hier veröffentlichen? Weil dann würde ich dich mal fragen wie du das meinst..
-
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.
-
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); -
-
breadfish.de
Hat das Thema geschlossen.