PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kollision zwischen Waffen Kugel und Mensch



blackeye
18.03.2004, 23:21
Ich hab ein Problem
ich mache ein GTA Spiel,da mir das GTA Script gefallen hat.

Also meine Frage:
Ich habe Waffen eingebaut (erstmal eine normale Pistole.)
Und bekanntlich wird der aufprall mit einem Event(Mensch) durch Fork´s geregelt
und jedem Event das getroffen werden soll eine Variable gegeben,
meine Frage,
gibt es einen einfachen Weg den aufprallzu klären?Ich meine folgendes:
<Mensch 1X = Kugel x>
<Mensch 1Y = Kugel y>
mensch 3,4,5,6,7,8,9,10 u.s.w.
bei 160 Menschen wäre das ein bisschen umständlich.Ich brauche dringend Hilfe.

Mephisto
19.03.2004, 00:10
nein, eine anderen, einfacheren weg gibt es hierbei nicht... aber ich kann dir nen tipp geben, wie du es machen kannst. frag ab, in welchem gebiet du bist. und dann setzt du dem gebiet entsprechend die charas. also ich mein das jetzt so: es brauchen doch nicht immer ALLE charas angezeigt werden. wenn du jetzt ganz oben bist, dann brauchen doch ganz unten keine charas sein. also du fragst jetzt ab, ob du oben bist - wenn ja, dann teleportierst du die charas die unten sind nach oben und umgekehrt. dann kannst du deine charas in zaum halten. wenn du dieses verfahren komplex skriptest, dann könntest du die charas leich unter 50 halten... :)

blackeye
19.03.2004, 00:14
Könntest du mir mal erklären wie ich das machen soll?
oder schick mir einfach nen Quellcode!

Mephisto
19.03.2004, 00:35
hmmm... überprüfs einfach so



change var: 0001 -hero x
change var: 0002 -hero y
fork condition: var 0002 - below z.B 30
note: held ist weit oben
fork condition: var 0001 - below 50
note: held ist linksoben
set event palce: mensch 1 - irgendwo links oben
set event place: mensch 2 - irgendwo links oben
... usw... also einfach alle menschenevents nach links oben ;)
else case
note: held ist rechtsoben
set events place: mensch 1 - irgendwo rechts oben
.... diesmal halt nur rechts oben plazieren
end case
end case
Fork condition: var 0002 - below 60
hled ist irgendwo in der mitte
fork condition: var 0001 - below 50
note: held ist linksmitte
diesmal alle menschenevents nach links mitte plazieren
else case
note: held ist rechtsmitte
diesmal alle nach rechtsmitte
end case
end case
fork condition: var 0002 - below 90
held ist ganz unten irgendwo
fork condition: var 0001 - below 50
held ist irgendwo unten links
alle events nach linksunten
else case
held ist irgendwo rechts unten
alle events nach rechtsunten
end case
endcase


diesen code kannst du für eine 100 * 90 map hernehmen... wenn du die map größer bzw kleiner wilst musst du die zahlen halt verändern. der code kann noch ausgeschmückt werden, damit man die überganze zu einem anderen gebiet nicht so mitkriegt ;) ach ja, ich hba die map in 6 teile aufgeteil... wie du ja sehen kannst ;)

cya
Mephi

edit: hmm... hatte nen fehler drinnen... ist nun weg

blackeye
19.03.2004, 00:45
Dankeschön Mephisto!

Dereknor
19.03.2004, 01:52
Ich kenn mich mit dem GTa skript nicht aus, aber habe zur Zeit ähnliche sachen in meinem AKS

Ich würde es so machen:

Du machst einen parallel Event, der ständig die X und Y Koordinaten der Kugel speichert (das wait am ende des Parallel events nich vergessen ;) )

Dann legst du eine art "datenbank" ein. Du gibst jedem Menschen einen Parallel event, der entweder die ganze zeit läuft oder nur am anfang des Levels. Dieser sieht wie folgt aus:

(Menschnummer) = ...
(Variablenzeiger) = (Menschnummer)
(Variablenzeiger) + 100

(Menschen X) = This Event X
(Menschen Y) = This Event Y
(Menschen ID) = EventID von Mensch X / Mensch Y
(Var(Variablenzeiger)) = (Menschen ID)

Du mußt nur am anfang die nummer der PErson eingeben, damit er weiß wo er es speichern muß. Der Variablenzeiger zeigt dann sozusagen auf die Stelle, an der die Event ID gespeichert wird. Die +100 kann auch anders sein. Das bedeutet nur, daß er ab Variable 101 anfängt die Event ID's zu lagern.

Nun mußt du einfach nur einen Parallel Event starten, der immer die Event ID der aktuellen Kugelposition auswertet. Sollte dort kein Event sein, so ergibt das einfach nur 0. Ist aber ein event auf der selben position wie die Kugel, so soll dieser Parallel Event die 160 Variablen von 101 - 260 durchschauen, ob da diese Event ID vorkommt, und schon weißt du ob du einen dieser Menschen getroffen hast oder nich.

Aber wie gesagt, ich weiß nicht genau wie du es programmiert hast, aber so ähnlich mache ich es mit meinen Events immer, daß ich alle genutzen Events speichere und abrufen kann