[quake3] Een radar maken...

Pagina: 1
Acties:

  • Virgil
  • Registratie: November 2001
  • Laatst online: 09-09 19:10

Virgil

We're not alone

Topicstarter
Ik wil graag een radar maken die wijst naar de quad damage of als er geen quad damage is naar mega health en anders naar red armor. etc.

maar Ik weet neit waar en hoe ik deze moet gaan implementeren in de source.

Ik hoef alleen maar de variabelen te hebben van deze objecten zodat ik ze kan laten checken of ze er wel zijn in de map. En mijn radar ernaartoe kan laten wijzen.

Ik heb al gezocht.
Hier en op google.
Op de quake3 forum staat ook niets...

Ik was heel, heeeel vroeger SeRRveR


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Oei, tijd geleden dat ik dat ik met quake3 source aan het knoeien ben geweest...

Als eerste zul je de positie van het gewenste object moeten gaan moeten bepalen. Je hebt functies om naar objecten te zoeken of objecten af te lopen in een loopje of iets dergelijks. Vervolgengs moet je dan wel het object nog kunnen identificeren. Het heeft dacht ik wel iets als een type, hoewel je natuurlijk ook kunt kijken of het bijbehorende model dat van de red-armor is.

Een object heeft een origin (vector). Die vector min jouw origin is een richtingsvector naar het object toe. Door hierbij alleen naar de x en y componenten te kijken kan je de hoek voor je radar bepalen.

Verder moet je de radar dan ook nog op het scherm zetten. Hoe je dat doet zou ik eigenlijk niet weten. Je kan de hoek in je player-struct plaatsen en de gui-code aanpassen die ook je health-balk enzo tekent, of je kan een apart model voor je radar aanmaken en deze met je karakter mee laten lopen precies voor je neus. Maar ik denk dat er wel een betere oplossing voor is.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Infinitive: als ik SeRRveR goed begrijp is het probleem niet die radar, maar het vinden van het object :)

SeRRveR: cheater ;)
* .oisyn pakt even zijn q3 mod erbij (en tiept aan de hand van zijn bevindingen :))

in g_spawn.c heb je een functie G_CallSpawn (), die wordt aangeroepen voor elk item dat zich in de map bevindt. Zoals je kunt zien heeft elke entity een classname, dus aan de hand daarvan kun je zien of het een quad damage oid is

oh ik zie trouwens dat daar een referentie naar bg_itemlist staat (een array met classnames en spawnfuncties van alle items), die is gedeclareerd in bg_public.h... daaronder staan 4 functies:
code:
1
2
3
4
gitem_t *BG_FindItem( const char *pickupName );
gitem_t *BG_FindItemForWeapon( weapon_t weapon );
gitem_t *BG_FindItemForPowerup( powerup_t pw );
gitem_t *BG_FindItemForHoldable( holdable_t pw );

wellicht dat je met 1 van die 4 je items kunt vinden :)

.edit: ben even verder gaan kijken, die array staat dus in bg_misc.c, en daarin staan van alle items de classname, models, en pickup names. Die pickupname kun je weer gebruiken voor de functie BG_FindItem ()

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Virgil
  • Registratie: November 2001
  • Laatst online: 09-09 19:10

Virgil

We're not alone

Topicstarter
Op dinsdag 19 maart 2002 20:57 schreef OiSyN het volgende:
Infinitive: als ik SeRRveR goed begrijp is het probleem niet die radar, maar het vinden van het object :)
--yup Yup--


SeRRveR: cheater ;) Oooh, nie waar :P Is voor modificatie >:)
* Virgil pakt even zijn q3 mod erbij (en tiept aan de hand van zijn bevindingen :))

in g_spawn.c heb je een functie G_CallSpawn (), die wordt aangeroepen voor elk item dat zich in de map bevindt. Zoals je kunt zien heeft elke entity een classname, dus aan de hand daarvan kun je zien of het een quad damage oid is

oh ik zie trouwens dat daar een referentie naar bg_itemlist staat (een array met classnames en spawnfuncties van alle items), die is gedeclareerd in bg_public.h... daaronder staan 4 functies:
code:
1
2
3
4
gitem_t *BG_FindItem( const char *pickupName );
gitem_t *BG_FindItemForWeapon( weapon_t weapon );
gitem_t *BG_FindItemForPowerup( powerup_t pw );
gitem_t *BG_FindItemForHoldable( holdable_t pw );

wellicht dat je met 1 van die 4 je items kunt vinden :)
Yep dit lijkt me ook zo.
Ik ben aan het zoeken naar die regeltjes want somehow doet find infiles het niet bij mij :( En ik heb alles al zo geedit dat alles door elkaar staat >:)

Maar dit lijkt me wel een goede oplossing.
Ook die oplossing van Infinite lijkt me wel ok. Kijken of het bijbehorende model de juiste model is.
Alleen zal dit een probleem worden als je een map hebt waarmee de entity niet aan de model zit.
.edit: ben even verder gaan kijken, die array staat dus in bg_misc.c, en daarin staan van alle items de classname, models, en pickup names. Die pickupname kun je weer gebruiken voor de functie BG_FindItem ()
Aha net als BG_FindIten ( WP_ROCKET_LAUNCHER );

ofzoiets. Moet ik ff kijken.

Ik was heel, heeeel vroeger SeRRveR


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

offtopic:
je vroeg om een auth request op icq, en toen vroeg ik er een terug, maar je accept niet... :? Ja het maakt mij niet uit hoor, maar ik moet je wel waarschuwen dat ik me icq zo heb ingesteld dat ie beriggies van mensen niet in mijn contact list ignored :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Virgil
  • Registratie: November 2001
  • Laatst online: 09-09 19:10

Virgil

We're not alone

Topicstarter
code:
1
2
Searching for 'gitem_t  *BG_FindItem( const char *pickupName '...
Cannot find the string 'gitem_t *BG_FindItem( const char *pickupName '.

zegt genoeg lijkt me...

Ik was heel, heeeel vroeger SeRRveR


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Let wel op spaties enzo! En de declaratie kan iets anders zijn dan boven gegeven (regeleinden).
Als je iets als visual studio hebt moet je maar eens source-brouwsing aanzetten :)

Ik heb voor de gein de source-code ook maar weer eens gedownload... het is nu een jaar of wat geleden... ik raad je aan om maar eens goed naar de source te kijken. Door het openen van drie filetjes kwam ik binnen een minuut op de volgende dingen die misschien wel handig zijn:
item = BG_FindItem( "Red Flag" );
gitem_t*item;
ent->r.currentOrigin
Dingen in g_weapon.c of g_item.c zijn wel de moeite waard om eens goed naar te kijken.

[edit] source-brouwing aan... rechter klik op een aanreop van BG_FindItem... find definition... aha... kijk eens in bg_misc.c regel 710 :)

Bovendien is het niet echt cheaten, want probeer maar eens een server te vinden waar je je code vervolgens kan gebruiken. Bovendien weet je zelf toch ook wel waar de items te vinden zijn.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

[offtopic]

Heeeeeeel flex ID

[offtopic]

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op dinsdag 19 maart 2002 22:29 schreef Infinitive het volgende:
Als je iets als visual studio hebt moet je maar eens source-brouwsing aanzetten :)
of visual assist installeren >:) (www.wholetomato.com)
een VS plugin met een gigantisch goeie intellisense en uitgebreidere syntaxcoloring, en je kunt zo naar de definities van een bepaalde variabele/type springen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
of visual assist installeren >:)
Hey, bedankt. Ik ga dat eens proberen... Als je nog meer van dit soort plugins wellicht handige plugins weet, feel free to let me know.

Maar goed, SeRRveR, ik ben nu wel benieuwd hoe je straks die radar gaat tekenen als je bijvoorbeeld de red armor hebt gevonden.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Op dinsdag 19 maart 2002 23:37 schreef Infinitive het volgende:
Hey, bedankt. Ik ga dat eens proberen... Als je nog meer van dit soort plugins wellicht handige plugins weet, feel free to let me know.
wndtabs is ook rete handig..

  • Virgil
  • Registratie: November 2001
  • Laatst online: 09-09 19:10

Virgil

We're not alone

Topicstarter
Op dinsdag 19 maart 2002 23:37 schreef Infinitive het volgende:

[..]

Hey, bedankt. Ik ga dat eens proberen... Als je nog meer van dit soort plugins wellicht handige plugins weet, feel free to let me know.

Maar goed, SeRRveR, ik ben nu wel benieuwd hoe je straks die radar gaat tekenen als je bijvoorbeeld de red armor hebt gevonden.
Ik zit eraan te denken om de variable of iets wat de positie van de powerup aangeeft en dan laat ik met behulp van die positie minus self->parent de afstand weten en welke kant hij uitgaat.

(z, y en of x)

Ik was heel, heeeel vroeger SeRRveR


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
als je alleen naar de x en y component van de verschilvector tussen target.origin en self.origin heb je in dus van bovenaf gezien een pijl van jouw positie naar de target positie. Zoiets kan je dan gebruiken (je zou zelfs naar een hoek kunnen gaan via de tangens als dat makkelijker blijkt).

Maar goed, waar ik nu nieuwschierig naar ben is niet zozeer de berekening, maar de manier waarop je het op het scherm denkt af te beelden.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik heb nooit wat gedaan met de interface code hoor, maar is dat niet gewoon een kwestie van een cirkeltje op het scherm zetten (texturemap) en bijvoorbeeld streepjes erin of driehoekjes eromheen zetten, getransformeerd aan de hand van de richting waar het object zich bevindt?

Anyway, dat lijkt mij het probleem niet helemaal, maar juist hoe je dat communiceert naar de client toe (het zoeken naar bijvoorbeeld de quad damage gebeurt in de server code, hoe geef je door aan de client dat het bijvoorbeeld op 53 graden links van je bevindt? Dat lijkt me een aanpassing in het protocol ofzo). Ik heb de interactie client <--> server nooit echt begrepen in q3, maar ik moet zeggen dat ik me er ook niet echt in verdiept heb :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Daar heb ik me eigenlijk ook nooit in verdiept, maar misschien een idee:

Je kan een extra member(s) toevoegen aan zo'n player structure. Maar dat ben je er nog niet... ik denk dat als je dat wilt weten dat je moet kijken naar wat er gebeurt met het struct waar onder andere de health in te vinden is. In een van de damage-functies wordt dat wel eens aangepast en als je dan ziet dat aan het eind van de server code dat struct naar een andere gekopiert wordt, weet je wat je aan moet passen. Aan de gui kant krijg je n.m.l. een ander soort player-struct met informatie dacht ik.

Of kijk naar wat er gebeurd als je je player-naam of kleur wijzigd.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

ja dat lijkt me idd wel een goed aangrijpingspunt

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Virgil
  • Registratie: November 2001
  • Laatst online: 09-09 19:10

Virgil

We're not alone

Topicstarter
Op woensdag 20 maart 2002 20:11 schreef Infinitive het volgende:
als je alleen naar de x en y component van de verschilvector tussen target.origin en self.origin heb je in dus van bovenaf gezien een pijl van jouw positie naar de target positie. Zoiets kan je dan gebruiken (je zou zelfs naar een hoek kunnen gaan via de tangens als dat makkelijker blijkt).

Maar goed, waar ik nu nieuwschierig naar ben is niet zozeer de berekening, maar de manier waarop je het op het scherm denkt af te beelden.
Ik ben dus bezig met alleen x en y. Ben dingen aan het uitproberen enzo.
Enniehouw.
Ik ga hem zo weergeven dat een pijl wordt aangeroepen in ui en die wordt dan per richting getekend.

Dus dat wil dus zeggen per richting (N - NW - W - ZW - Z enz..) een getekende pijl. (Waarbij de andere weg zijn)

Als een kompas dus.
Alleen week nog niet hoe.

Ik was heel, heeeel vroeger SeRRveR


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 10-08 15:15
Eventueel zou je kunnen zoeken naar de source-code van een mod waarbij er interface-elementen verandert zijn.

Er is vast ook wel een of andere quake3-mod-site waar je vragen zou kunnen stellen. Misschien hier eens kijken: http://www.forumplanet.com/planetquake/forum.asp?fid=2892

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • efan
  • Registratie: Januari 2001
  • Niet online
als ie af is, dan wil ik hem ook wel :) super handig zo'n radar...

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Mensen verleen als je blieft geen medewerking aan dit soort lame shit, hoewel ik gerust durf te geloven dat topicstarter geen slechte bedoelingen heeft, is de hele gaming scene verziekt door radars,bots,wallhacks etc.

Kortom hou je liever bezig met nuttige zaken op gebied van gaming.

Verwijderd

De Quake3 protocol is wel dusdanigd beveiligd dat je niet zomaar als client alleen een radar op je scherm kan krijgen. Een radar-mod draait dus op de server, zodat iedereen deze radar heeft, net als CS
Ik weet dat er in de planetquake forums al verscheidene malen een radar-topic langs is geweest, maar volgens mij nog niet met suxes

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 08:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op vrijdag 22 maart 2002 09:37 schreef raptorix het volgende:
Mensen verleen als je blieft geen medewerking aan dit soort lame shit, hoewel ik gerust durf te geloven dat topicstarter geen slechte bedoelingen heeft, is de hele gaming scene verziekt door radars,bots,wallhacks etc.

Kortom hou je liever bezig met nuttige zaken op gebied van gaming.
Wel erg kort door de bocht, denk je ook niet? Bovendien zit je er ook nog eens compleet naast: dit is een mod, en kan daarom ook in geen enkel opzicht worden gebruikt als cheat op normale q3 servers. Dat vereist namelijk dat de server ook de mod moet draaien, wat dus niet het geval is :z

En ik weet niet of je het al wist, maar mods maken is vrijwel de nuttigste zaak op gebied van gaming, het is namelijk een van de betere methoden om inzicht te krijgen in games voor de beginnende game developer.

Dus, hoewel ik begrijp wat je bedoelt, maar aub niet dit soort opmerkingen als je gewoon niet weet waar je het over hebt, het enige wat je ermee bereikt is een eventuele flamewar, en je maakt gewoon een neerkijkende opmerking naar de topicstarter toe die kant noch wal raakt

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1