.| Autor | Beitrag |
|---|---|
|
000 25.05.2001, 15:15 Retro |
Ich hab grad mal das Radar nach dem Tutorial gecodes, und es funktioniert auch... Ich möchte das Radar aber auch im Singleplayer einsetzen, also nicht das man alle Monster sieht sondern nur die Soldaten.
Aber wie kann ich das so umbauen das nicht die Player im MP gezeigt werden, sondern bestimmte Monster in SP? [EDIT]
shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |
|
001 27.05.2001, 12:36 Prefect |
Naja, so schwer wird das doch nicht sein dass man nicht selber drauf kommt, oder? Du hast doch sicher in dem MP-Radar irgendwo eine Schleife, in der alle Spieler durchgeloopt werden und dann deren Koordinaten an den Client geschickt werden.
Die schnelle Lösung ist, dass du einfach pev->classname (also den Entitytypnamen) z.B. mit monster_hgrunt vergleichst. Wenn der classname gleich ist, zeigst du die Entity auf dem Radar, in dem du sie an den Client schickst, ansonsten läßt du die Entity einfach weg. Die gute Lösung ist, dass du in CBaseEntity eine neue Funktion einbaust, die ungefähr so aussieht:
Dann rufst du in deiner Schleife durch alle Entities einfach für jede Entity diese Funktion auf (also pEnt->ShowOnRadar(this) wenn pEnt die Entity ist und du gerade im CBasePlayer bist - wenn du damit Probleme hast geb ich auf), und wenn sie einen Wert ungleich 0 (also true) zurück gibt, schickst du die Entity zum Radar, wenn nicht dann halt nicht.
Jetzt fragst du dich sicher, wozu soll ich den pPlayer als Parameter übergeben. Nun, das muß nicht unbedingt sein, aber du kannst damit sicher ein paar nette Sachen anstellen, z.B. könntest du je nach Spieler (falls du MP-Coop mit Monstern machst) bestimmte Monster zeigen oder auch nicht. Oder du kannst das ganze gleich auf Multiplayer erweitern, in dem du ShowOnRadar zum CBasePlayer hinzufügst:
cu,
Widelands - Gemütliche Aufbaustrategie, Free Software |
|
Profil || Suche |
|
002 27.05.2001, 14:59 Retro |
Ja, verstanden hab ich jetzt soweit alles!
Ich werd da lieber die Elegantere lösung nehmen. Leider hab ich jetzt das Radar schon wieder aus dem Code entfernt, weil ich so dumm war und nicht mehr auf eine Antwort gehofft hab... *g* Na gut, kommts halt wieder rein und zwar mit deinen tipps! Thx - eigentlich dürfte ich das hinkrigen, bin halt nur relativer Newbie in HL-Coding bzw. C++ --shielding people from their own stupidity is an evolutionary step backwards anyway. /* God is dead!............Nietzsche */ |
|
Profil || Suche |

