Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
22.02.2002, 20:28
[HUI]-Tiger-



Hi, ich habe das Problem hier schonmal erwähnt, hab es aber bereits bestehenden Themen angeschlossen und das hat anscheinend niemand so richtig gesehen (ausser Rockefeller ;-) ). Also mein Problem ist folgendes:
Ich habe eine brush-based entity gecodet und diese wird auch initialisiert (anhand von alerts geprüft). Der Touch-teil wird aber nie aufgerufen !! Ich bekomm keine Fehlermeldung oder so.
Der Code sieht inzwischen so aus, hab schon ne Menge Möglichkeiten ausprobiert:

class CTriggerConsoleEntity : public CBaseEntity
{
public:
void KeyValue(KeyValueData *pkvd ); //Funktion zum Abruf der Parameter
void Spawn( );
void EXPORT MFETouch( CBaseEntity *pOther );
char bef;
};
LINK_ENTITY_TO_CLASS( trigger_console, CTriggerConsoleEntity );

void CTriggerConsoleEntity::KeyValue(KeyValueData *pkvd)
{
...
}

void CTriggerConsoleEntity :: Spawn( )
{
Precache( );
pev->solid = SOLID_NOT;
pev->movetype = MOVETYPE_FLY;

UTIL_SetOrigin(pev, pev->origin);
UTIL_SetSize(pev, pev->mins, pev->maxs);
SET_MODEL(ENT(pev), STRING(pev->model) );
pev->frame = 0;
SetTouch(MFETouch);
}

void CTriggerConsoleEntity :: MFETouch( CBaseEntity* Player )
{
ALERT(at_console, "Touch");
...
}

--

.-.-.-.
cya Tiger

zum Seitenanfang zum Seitenende Profil || Suche
001
22.02.2002, 20:30
Archangel



hm, versuch mal pev->solid auf SOLID_TRIGGER zu setzen..

--

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
002
22.02.2002, 20:35
[HUI]-Tiger-



thx for fast reply, hab ich schonmal probiert, aber dann versuch ichs halt nochmal... ;-)
is ja mal krank, jezze gehts, es lag wohl an einer kombination mit einem anderen pev-> ... auf jedenfall thx !

--

.-.-.-.
cya Tiger


Dieser Beitrag wurde am 22.02.2002 um 20:39 von [HUI]-Tiger- bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
22.02.2002, 23:22
[HUI]-Tiger-



noch ne Frage: Another1 hat mir mal gesagt, wie man nen Consolenbefehl aus führt:
CLIENT_COMMAND(edictForClient,"Command");
Das ging absolut nich und ich hab dann folgendes gemacht:

edict_t *pClient;
pClient = g_engfuncs.pfnPEntityOfEntIndex( 1 );
CLIENT_COMMAND(pClient, "echo test");

das lässt sich dann compilen, aber im Spiel gibt es ne Fehlermeldung. Hat jemand ne Idee ??

wenn ich ne variable übergeb, muss das dann so aussehn ?

CLIENT_COMMAND(pClient, &variable);

--

.-.-.-.
cya Tiger

zum Seitenanfang zum Seitenende Profil || Suche
004
23.02.2002, 17:23
Another1



*hüstel*

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
005
23.02.2002, 17:49
The_Overmind



Ööööhm Jungz

Afaik haben Brush-based Entities KEINE Touch Funktion.
Das is ja auch grad das Problem bei den Vehicles, oder habt ihr etwa bei CS noch nie ein Auto gesehen was in die Wand reingefaheren ist ?

Man muss die Touch Funktion anhand von Tracelines vorgaukeln.

Zum Command.

Du hast bei dem Index die Nummer festgelegt. Ich könnt mich irren, aber die Nummern bei den Indexen fangen bei 0 an. Wenn du Singleplayer spielst wirst du somit niemals "angesprochen" und wenn du Multiplayer spielst kriegt immer wer anders das Command, es sei denn du wärst der zweite Spieler auffem Server.

[-XHP-]The Overmind

--

zum Seitenanfang zum Seitenende Profil || Suche
006
23.02.2002, 17:59
Archangel



natürlich haben brushbased ents ne touch, wie sollen sonst trigger_once/trigger_multiples funzen ?

und das problem mit dem auto wäre durch ne touch nich gelöst, da die touch nur aufgerufen wird wenn ein entity, und kein worldbrush mit der bbox des entities collidet

--

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
007
23.02.2002, 18:45
R2-D2



waere es wirklich nicht, aber mit tracelines schon eher :P

was deine touch-funktion angeht, schreib sie nicht in die definition von deinem entity, sondern in der definition von CBaseTrigger

--

®2-D2
Believe in Retrieve :)

Projects:
Monkey-Strike (Leader/Coder)
Water Wars (Head Coder)
Mixed Mod (Coder)

zum Seitenanfang zum Seitenende Profil || Suche
008
24.02.2002, 15:38
[HUI]-Tiger-



meine Touch Funktion geht doch jezze ?! mein Prob is nur noch der Befehl, und mit 0 geht es nicht...
@Another1 sorry, dass ich son n00b bin :(

--

.-.-.-.
cya Tiger

zum Seitenanfang zum Seitenende Profil || Suche
009
24.02.2002, 20:39
[HUI]-Tiger-



wird doch wohl einer wissen...!?
plz helft einem n00b...

--

.-.-.-.
cya Tiger

zum Seitenanfang zum Seitenende Profil || Suche
010
24.02.2002, 21:29
Another1



nun du musst schon wissen welcher client den befehl ausführen soll!
also, du musst irgendwas haben was klarmacht welcher player, so wie nen pPlayer pointer, oder nen edict_t pointer oder sowas, oder nen entity index

wenn du nen playerpointer hast, dann musstu
pPlayerPointer->edict() machen um den edict zum playerentity zu bekommen, wenn du nen entity index hast, dann musstu
g_engfuncs.pfnPEntityOfEntIndex( DeinEntityIndex ); benutzen
wenn du schon nen edict_t pointer hast, dann kannst du den direkt benutzen ... naja ... so .. ca. geht das =)

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
011
24.02.2002, 21:48
[HUI]-Tiger-



thx, ich poste hier nachma den code, den ich schomma entworfen hab:

edict_t *pClient;
pClient = g_engfuncs.pfnPEntityOfEntIndex( 1 );
CLIENT_COMMAND(pClient, "echo test");

Im spiel kommt dann folgendes:
"Tried to stuff bad command echo test"

Hat jemand ne Idee ?

kleine Anmerkung noch: Des is nen Singleplayer-Only Mod, daher gibt es ja immer nur einen Client (und der is nicht 0 !) und von daher kann man das ganze vielleicht vereinfachen, gibts vielleicht nen Pointer auf den einzig aktiven playa oda so...

--

.-.-.-.
cya Tiger

zum Seitenanfang zum Seitenende Profil || Suche
012
25.02.2002, 12:29
Another1



da muss erstmal noch nen \n ans ende des commands, und 2.
versuch mal einfach kill, kA vielleich mag er das echo nit

--

Another1

...relaxing..atm =)
... und Schweiz suckt!

zum Seitenanfang zum Seitenende Profil || Suche
013
25.02.2002, 13:53
[HUI]-Tiger-



noch nie war ich so froh in hl abzukratzen *lol*
also gut, das mit dem steuerzeichen war das problem. thx !

nu muss ich ne Variable an CLINET_COMMAND übergeben.
das geht indem ich
CLIENT_COMMAND(pClient,&bef);
mache.(wenn ich nur "bef" ohne & übergebe dann gibts compile error)
Nu muss ich da dass \n anhängen und das geht nicht !
CLIENT_COMMAND(pClient,&bef<<'\n');
klar, denn an einen Pointer kann man nix anhaegen :-(

ebenso kommt raus wenn ich davor folgendes mache:
bef=bef<<'\n'
error C2064: term does not evaluate to a function

noch n hint ?

--

.-.-.-.
cya Tiger

zum Seitenanfang zum Seitenende Profil || Suche
014
25.02.2002, 14:22
hausi



strcat...

--

zum Seitenanfang zum Seitenende Profil || Suche
015
26.02.2002, 14:31
[RMen]OneStone



Quellcode:
strcat(szCommand, "\n");

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
016
27.02.2002, 12:27
[HUI]-Tiger-



thx @ all!

--

.-.-.-.
cya Tiger

zum Seitenanfang zum Seitenende Profil || Suche