View previous topic :: View next topic |
Author |
Message |
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 29.03.2005, 18:52 Post subject: Mod-Programmierung |
|
|
Hi
hab mich mal an den letztens besprochenen Mod gesetzt und hab dabei ein Problem:
Ich zähle die Treffer, die man gemacht hat ("Kills") und die Treffer, die man bekommen hat ("Deaths"),
in einem eigenen Array (auf jedem Rechner, also Client und Server)
auf dem Server berechne ich jetzt, ob man getroffen wurde:
- durch OnServerObjectCollide (Kollision mit einer Waffe)
- durch OnServerObjectShieldsChange (Kollision mit Lava/Schadenswelle)
nun ist leider das Array nur auf dem Server aktuell und ich muss es an die einzelnen Clients senden
hat jemand Erfahrung mit den Paket-Funktionen StartPacket/SendPacket/RegisterPacketReceiver
BTW kann man irgendwie herausfinden, ob man von einer Explosion (Rakete neben Schiff) getroffen wurde?
(ausser durch die Schildänderung)
Eagle
Last edited by VEX-Eagle on 29.03.2005, 19:03; edited 1 time in total |
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 29.03.2005, 19:37 Post subject: |
|
|
Quote: | hat jemand Erfahrung mit den Paket-Funktionen StartPacket/SendPacket/RegisterPacketReceiver |
Ja, hat jemand,
aber am Besten untersuchst Du mal den Entropy und Assault Mod.
Da kannst Dir das alles abschauen.
Quote: | ob man von einer Explosion (Rakete neben Schiff) getroffen wurde?
(ausser durch die Schildänderung) |
Unabhängig davon was dich trifft, es hat eine type, id, handle
darüber kannst du ermittlen was es war.
Dein OnServerCollide beinhaltet ja 'it_obj' darüber kannst Du nun ermittlen was für ein typ das war
und welche id es hatte. Dann vergleichst Du deine Wunschkanditaten damit.
Evtl gibt es auch bereits eine fertige D3-Routine, kenn aber im Moment leider keine.
|
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 29.03.2005, 19:44 Post subject: |
|
|
Atan wrote: |
aber am Besten untersuchst Du mal den Entropy und Assault Mod.
Da kannst Dir das alles abschauen.
|
hab ich 1:1 gemacht, klappt nicht (bin aber immer noch am rumprobieren)
Quote: |
Unabhängig davon was dich trifft, es hat eine type, id, handle
|
haben die "Schadenswellen" die ID _SHOCKWAVE oder _FIREBALL?
wenn ja, wird das Collide-Event nicht mit denen ausgewertet
bei Entropy wird eine Funktion CallClientEvent benutzt, die funktioniert aber auch nicht
(weiss jemand, wie sie funktionieren sollte?)
|
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 29.03.2005, 21:10 Post subject: |
|
|
Die Schockwelle ist ja mehr ein Waffeneffekt, kein Typ Waffe.
Eine Concussion z.B. ist eine Erschütterungsrakete vom Schadenstyp GD_CONCUSSIVE
Aber die Waffe an sich ist halt die Concussion.
Da gibt es dann 2 Schadenswerte, Schaden am Spieler und Schaden durch Auftreffen am Spieler.
Berechnet wird der Schadenswert wohl letzlich von der Engine anhand einiger Parameter mehr.
Die Frage die sich mir stellet, ist ob sich der Aufwand lohnt das Problem zu erforschen,
ist es denn wichtig ob die Ursache des Schadens ein direkter Treffer durch z.B. der Concussion ist,
oder eine berechnete Schadenswirkung durch den Nahtreffer dieser Rakete?
Der Verursacher war m.E. in jedem Fall diese Concussion und die kannst Du ja abfragen und vergleichen.
conc_id = DLLFindObjectIDName("Concussion"); (id == conc_id) ?
Oder unterscheidet D3 das noch weiter? Ich weiss es nicht im Moment, da müsste ich wohl erst ein paar Versuchsreihen durchführen.
|
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 30.03.2005, 18:35 Post subject: |
|
|
ne das meine ich nicht
schreib mal in OnServerObjectCollide rein: me_obj->shields = 100;
starte eigenes Spiel Lokal -> wenn du mit concs gegen ne wand schiesst bekommst du schaden
die shockwave wird nicht von der funktion ausgewertet
|
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 30.03.2005, 19:14 Post subject: |
|
|
Sorry, aber lass mich lieber nochmals nachfragen.
Wenn ich das richtig verstehe,
dann willst Du inerhalb der Funktion OnServerObjectCollide durch me_obj->shields = 100
das PlayerShild auf 100 setzen. Dann gegen die Wand ballern und Du erwartest, das das Shild sich dabei eigentlich nicht verringern sollte. (weil Du es ja auf 100 setzt)
Verstehe ich Deinen Gedankengang jetzt richtig?
|
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 31.03.2005, 18:49 Post subject: |
|
|
haargenau
hab keine andere möglichkeit gefunden, die explosionen auszuwerten
|
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 31.03.2005, 20:55 Post subject: |
|
|
Das Problem ist hier, dass man ein 'wenig' schräge denken muss.
Edit:
Rest des Beitrages wurde gelöscht, da leider am Thema vorbei.
Last edited by Atan on 01.04.2005, 19:59; edited 1 time in total |
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 01.04.2005, 19:26 Post subject: |
|
|
wenn das jetzt noch netzwerk-sicher ist, dann ist das gut - aber nicht die lösung
ich wollte wissen, wem die rakete gehört, die die explosion ausgelöst hat, von der man getroffen wurde
|
|
Back to top |
|
|
Atan Moderator
Joined: 27 Jul 2001 Posts: 876
|
Posted: 01.04.2005, 19:55 Post subject: |
|
|
Quote: | ..Verstehe ich Deinen Gedankengang jetzt richtig? |
ergab:
nun kommt:
Quote: | ... - aber nicht die lösung
ich wollte wissen, wem die rakete gehört, die die explosion ausgelöst hat, von der man getroffen wurde |
Stellt sich mir nun doch glatt die Frage: 'Wo stand das denn bitte?'
Sorry, aber auf der Basis kann ich Dir nicht helfen.
|
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 01.04.2005, 20:05 Post subject: |
|
|
das haargenau bezog sich auf "inerhalb der Funktion OnServerObjectCollide"
weil dann kann man durch me_obj->handle den spieler herausfinden
anders sehe ich keine möglichkeit
also neue "aufgabenstellung"
im netzwerkspiel: ein Mortar explodiert neben einem (nicht tödlich) und der name des schützen soll ausgegeben werden
das bekomme ich nicht hin, also plz help
|
|
Back to top |
|
|
VEX-Eagle Falschparker
Joined: 04 Feb 2003 Posts: 807
Location: Stelle (Hamburg)
|
Posted: 02.04.2005, 10:38 Post subject: |
|
|
funktioniert deine routine (die du gelöscht hast) auch, wenn man eine mega ins gesicht gedrückt bekommt?
die macht ja ~400 Schaden
Wenn du das in OnServerObjectShieldsChanged(object *obj, float amount) einbaust, musst du nur noch den Spieler herausfinden, dem das Objekt gehört und dann DoDamageToPlayer(plr,-amount) eingeben
kannst du deinen gelöschten code noch mal posten? würd den mal gerne ausprobieren
Last edited by VEX-Eagle on 02.04.2005, 16:49; edited 1 time in total |
|
Back to top |
|
|
|