Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
05.07.2002, 17:12
TTJ



Moin !

Ich versuche gerade für mein kleines Projekt ein neues Entity zu erstellen.

http://www.planethalflife.com/ttj/galileo/

Man kann im Spiel mit Hilfe von +camin/+camout den Abstand der Kamera zum Spieler verändern. Ich würde das aber lieber über einen point entity machen damit ich beim Level designen mehr Kontrolle über die Kamera habe.

Folgende Idee:
Ich benutze z.B. einen trigger_once welcher mein neues entity env_camera ansteuert. Die Funktion des Entities muß nur die cvar cam_idealdist auf dem im env_camera angegebenen Wert ändern.

Der fgd-code sieht so aus:

@PointClass base(Targetname) = env_camera : "Camera Distance"
[
distance(string) : "Camera distance" : "250"
]

Ich hab allerdings noch nie ein HL Point entity gecodet, deshalb ein paar Fragen.
Geht das so überhaupt ?
Wie lese ich der Wert aus dem env_camera entity aus und wie kann ich dann am besten den Wert an die cvar cam_idealdist übergeben ?
Wo kommt der Code für point entities hin ???

--

Level"TTJ"Design

http://www.planethalflife.com/ttj

zum Seitenanfang zum Seitenende Profil || Suche
001
06.07.2002, 10:53
Rockefeller



Das Problem ist: Entities sind serverside, die ganzen Renderinggeschichten, also auch die Cams, sind Clientside. Du musst also ne Message vom Server zum Client schicken mit den neuen Werten für Cam, und das ganze dann am Client auslesen.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
06.07.2002, 11:23
TTJ



Habs fast hinbekommen :)

Die Idee mit dem point entity war nicht so dolle ich habs jetzt mit einem modifizierten trigger_multiple hinbekommen:

-------fgd eintrag----------------
@SolidClass base(Trigger) = trigger_zoom : "Trigger: Change cam distance"
[
wait(integer) : "Delay before reset" : 10
distance(integer): "Camera distance" : 250
]
-------mein code-----------------
class CTriggerZoom : public CBaseTrigger
{
public:
void Spawn( void );
void ChangeDistance( CBaseEntity *pOther );
};

LINK_ENTITY_TO_CLASS( trigger_zoom, CTriggerZoom );

void CTriggerZoom :: Spawn( void )
{
InitTrigger();

SetTouch( ChangeDistance );
}

void CTriggerZoom :: ChangeDistance( CBaseEntity *pOther )
{
SERVER_COMMAND("cam_idealdist 100\n");
}

Funktioniert wunderbar allerdings gefällt mir der Code überhaupt nicht da ich zur zeit für jede Kameraeinstellung einen veränderten trigger_zoom benutzen muß.
Weiß den keiner wie ich den Wert der in meinem trigger_zoom eingetragen wird auslesen kann ?? Außerdem krieg ich die Eingabe ohne den server_command makro nicht hin. Weiß irgendjemand wie ich die funktion g_engfuncs.pfnServerCommand ohne den makro ansteuern muß ???

--

Level"TTJ"Design

http://www.planethalflife.com/ttj

zum Seitenanfang zum Seitenende Profil || Suche
003
06.07.2002, 12:30
Archangel



-------fgd eintrag----------------
@SolidClass base(Trigger) = trigger_zoom : "Trigger: Change cam distance"
[
wait(integer) : "Delay before reset" : 10
distance(integer): "Camera distance" : 250
]

Quellcode:
class CTriggerZoom : public CBaseTrigger
{
public:
    void Spawn(void);
    void KeyValue(KeyValueData *);
    void ChangeDistance(CBaseEntity *);
private:
    int distance;
};

LINK_ENTITY_TO_CLASS( trigger_zoom, CTriggerZoom )

void CTriggerZoom::Spawn(void)
{
    InitTrigger();
    SetTouch(ChangeDistance);
}

void CTriggerZoom::KeyValue(KeyValueData *pkvd)
{
    if(FStrEq(pkvd->szName, "distance")) {
        distance = atoi(pkvd->szValue);
        pkvd->fHandled = TRUE;
    }
    else
        CBaseTrigger::KeyValue(pkvd);
}

void CTriggerZoom::ChangeDistance(CBaseEntity *pOther)
{
    SERVER_COMMAND(UTIL_VarArgs("cam_idealdist %d\n", distance));    // es gibt da iirc noch ne (g_engfuncs ?) funktion, die ein client command ausführt, der muss allerdings ein edict_t pointer übergeben werden (pOther->edict())
}

bin gerade zu faul ins hlsdk zu gucken, also keine garantie, dass es funktioniert

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
004
06.07.2002, 14:41
TTJ



Danke für das Grundgerüst !
Habs jetzt hinbekommen :)

Übrigens hattest du recht es funktionierte nicht gleich.

--

Level"TTJ"Design

http://www.planethalflife.com/ttj

zum Seitenanfang zum Seitenende Profil || Suche