Komisches Actor Problem..

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
  • Hey Breadfisher,
    Ich habe mir für mein Script ne handvoll Actor erstellt und lasse sie über folgenden Codeschnipsel deklarieren & initialisieren:


    enum ActorInfos
    {
    ac_name[128],
    Float:ac_x,
    Float:ac_y,
    Float:ac_z,
    Float:ac_a,
    ac_skin
    }
    new acInfo[][ActorInfos] = {
    {"Manfred",1580.2587,-1634.2482,13.5624,2.5657,281},
    {"Walter",1084.1152,-1733.1531,13.9940,93.2694,187},
    {"Mr. Proper",1759.4100,-1695.9329,13.4570,91.6363,46},
    {"Mr. Fisher",361.0420,-2085.5820,7.8359,269.7024,259},
    {"Uman - Car Thief",2796.8269,-1416.2595,16.2500,202.4690,66},
    {"Machete - Gun Dealer",2793.2759,-1415.7928,16.2500,175.8121,242},
    {"El Contrabando - Materials Salesman",2801.9304,-1416.2172,16.2500,172.9686,30},
    {"Cid - Thief",2787.7561,-1417.3113,16.2500,224.0425,29}
    };


    Unter OnGameModeInit:
    for(new i = 0; i<sizeof(acInfo); ++i)
    {
    CreateActor(acInfo[i][ac_skin],acInfo[i][ac_x],acInfo[i][ac_y],acInfo[i][ac_z],acInfo[i][ac_a]);
    Create3DTextLabel(acInfo[i][ac_name],COLOR_GOLD,acInfo[i][ac_x],acInfo[i][ac_y],acInfo[i][ac_z]+1.0,15,0,1);
    }


    Was zur Hölle läuft da falsch? Der Code ist fehlerfrei, keine Probleme beim kompilieren. Wenn ich den Server hier und da neustarte stehen sie mal richtig, dann mal falsch, dann steht die Hälfte richtig, die andere Hälfte dafür falsch.
    Kommt der Server damit nicht klar das so viele Actor gespawned werden? Sollte ich sie ohne Schleife vom Script initialisieren, oder soll ich nach dem Motto "Doppelt hält besser" noch die SetActorPos in die Schleife hauen, obwohl das völliger unsinn wäre?
    Habt ihr damit auch Erfahrung gemacht, das sie mal je nach restart mal richtig oder falsch stehen?


    //EDIT
    Habe die Erstellung der Actor unter OnPlayerConnect gelegt, dann war der Fehler jedoch immernoch nicht beseitigt. Derzeitige Lösung dafür: Die Position der Actor in einer seperaten Schleife setzen.
    An sich ist das Problem zwar jetzt weg, jedoch will ich doch wissen ob euch das auch schon passiert ist, oder wie ihr es gelöst habt.

  • oder wie ihr es gelöst habt.


    Da gibt es diesen Callback:


    public OnActorStreamIn(actorid, forplayerid)
    {
    SetActorPos(actorid,acInfo[actorid][ac_x],acInfo[actorid][ac_y],acInfo[actorid][ac_z]);
    SetActorFacingAngle(actorid,acInfo[actorid][ac_a]);
    return 1;
    }


    Dir sollte aufgefallen sein, dass das 3DTextLabel immer richtig sitzt, aber der Actor nicht.


    Das liegt daran, dass die Positionen zwar richtig geladen werden, der Actor an sich aber aSynchron ist und du ihn somit immer richtig setzen musst :)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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