Autor |
|
n00bert
Bard
  
Dabei seit: März 2004
Geschlecht: 
Herkunft: SinnCity (Hessen)
Beiträge: 36
 |
|
|
20.05.2004, 21:45 |
|
HaggY
Oceanic
 

Dabei seit: Juli 2003
Geschlecht: 
Herkunft: Erde
Beiträge: 1543
 |
|
gibt es, heisst mark & recall.
__________________ "Er verliert die Balance... "
|
|
20.05.2004, 21:47 |
|
n00bert
Bard
  
Dabei seit: März 2004
Geschlecht: 
Herkunft: SinnCity (Hessen)
Beiträge: 36
 |
|
lol du weißt wie ich das meine 
Soll einen zu verschiedenen (mehreren) neuen "Gebäuden" in einem kleinem Mod bringen.
Und das soll dann eben genau so wie "Almsivi Intervention" funzen. Also das ich dann bei dem lande was mir grad am nächsten liegt.
|
|
20.05.2004, 21:56 |
|
Fennias Maxim
Slave of the system
Verwarnung: 1 User gesperrt


Dabei seit: August 2003
Geschlecht: 
Herkunft: Technodrome
Beiträge: 1456
 |
|
Da brauchst du diese objekte für!
Die die vor dem tempel stehn!
Mach dir so einen, geb im das selbe Mesh aber nenn ihn anders, dann machste nen zauber der das selbe macht wie almsivi nennst ihn aber auch anders.
Und dann suchst du das script iin dem der effect des zaubers steht.(lol)
__________________ overload
|
|
20.05.2004, 22:13 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Wenn man des Spielers Position auf der Weltkarte detektieren könnte per Script (geht nicht also brauch man ein externes Programm) wäre es möglich...ansonsten bleibt nur eine Möglichkeit: Es geht nur in Exteriors.
EDIT: Hundertstes Post!
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 20.05.2004, 23:37 Uhr editiert.
|
|
20.05.2004, 22:17 |
|
LordKain
Crusader
  

Dabei seit: August 2003
Geschlecht: 
Herkunft: Bamberg
Beiträge: 265
 |
|
das wird wohl nicht gehen, da das "script" oder besser der code für diese funktion im quellcode des spiels ist
__________________

|
|
20.05.2004, 22:18 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9257
 |
|
Zitat: Original von Fennias Maxim
Da brauchst du diese objekte für!
Die die vor dem tempel stehn!
Mach dir so einen, geb im das selbe Mesh aber nenn ihn anders, dann machste nen zauber der das selbe macht wie almsivi nennst ihn aber auch anders.
Und dann suchst du das script iin dem der effect des zaubers steht.(lol)
nette Idee - nur leider sind sowohl die zwei markertypen als auch die zaubereffekte fest im code verdrahtet, da kommt man nicht wirklich ran, sondern muss workarounds scripten - die ermittlung des nächsten zielpunktes kann eventuell onkel pythagoras übernehmen, wenn die quadrate der abstände nicht zu gross für das long-format werden.
Das erwähnte mark&recall - plugin benötigt allerdings tribunal oder höher - mit vorher (vom Autor) gewählten zielpunkten kommt man wohl mit 1.2 - scripting aus.
__________________ drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen 
|
|
20.05.2004, 23:46 |
|
Fennias Maxim
Slave of the system
Verwarnung: 1 User gesperrt


Dabei seit: August 2003
Geschlecht: 
Herkunft: Technodrome
Beiträge: 1456
 |
|
Logo, ist ja sobald man den CS startet schon da.
Aber bei deiner Lösung könnte man es interior anwenden.
Warum suchen sich leute immer das aus was nicht geht?
__________________ overload
|
|
20.05.2004, 23:53 |
|
ReneMiner
Crusader
  
Dabei seit: Januar 2004
Geschlecht: keine Angabe
Herkunft:
Beiträge: 260
 |
|
Zitat: Original von GreyWanderer
Wenn man des Spielers Position auf der Weltkarte detektieren könnte per Script (geht nicht also brauch man ein externes Programm) wäre es möglich...ansonsten bleibt nur eine Möglichkeit: Es geht nur in Exteriors.
Natürlich lässt sich mit GetInterior feststellen ob der Spieler drin oder draussen ist, und es ist auch kein Problem ihn rauszubringen - nach Position 0 0 0 0 geht immer 
Auch lassen sich mit GetPos prima die aktuellen Koordinaten ablesen,
die Zielkoordinaten sollten ja bei einer Art Almsivi-Intervention immer bekannt sein. Den Abstand zwischen Player-> GetPos X und allen Zielpos X vergleichen, genauso Y - und die kleinste Differenz gewinnt.
Das Teleportieren lässt sich auch mit SetPos machen -
(Position/PositionCell akzeptieren keine Variablen)
kleines Manko dabei:
Die entsprechende Zelle wird nicht geladen und der Spieler landet in einem rechteckigen Loch in der Landschaft.
Abhilfe - der CellUpdate-Befehl funktioniert nicht - mit
FixMe
das geht aber nur in Ego-Perspektive also vorher
Force1stPerson
danach mit SetPos nochmal an die richtige Stelle bringen
Force3rdPerson danach ist sinnlos - das funktioniert auch nicht - es lohnt sich daher nicht sich die alte vom Spieler gewählte Ansicht zu merken.
__________________ Mess them Meshes up
|
|
21.05.2004, 00:56 |
|
Fennias Maxim
Slave of the system
Verwarnung: 1 User gesperrt


Dabei seit: August 2003
Geschlecht: 
Herkunft: Technodrome
Beiträge: 1456
 |
|
Spielverderber
__________________ overload
|
|
21.05.2004, 01:04 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Zitat: Original von ReneMiner
Zitat: Original von GreyWanderer
Wenn man des Spielers Position auf der Weltkarte detektieren könnte per Script (geht nicht also brauch man ein externes Programm) wäre es möglich...ansonsten bleibt nur eine Möglichkeit: Es geht nur in Exteriors.
Natürlich lässt sich mit GetInterior feststellen ob der Spieler drin oder draussen ist, und es ist auch kein Problem ihn rauszubringen - nach Position 0 0 0 0 geht immer 
Jaja das wusste ich auch...aber Almsivi Intervention bringt einen immer an den Marker, der dem letzten Exterior, in dem man war, am nächsten ist. Und wie man das ohne externes Programm oder hex-coding hinbekommen soll ist mir schleierhaft. Denn stell dir mal vor, wenn man in Vivec im Hohen Tempel ist (interior), dann im Aschland landet und zum näxten Marker teleportiert wird (der evtl. in Ald'ruhn ist), wär das bestimmt sehr doof, nicht?
EDIT: Dafür hast du mich auf ne Idee gebracht...wie wär's damit?: Man überprüft, solange der PC in einem exterior ist, welche Koordinaten er hat. Diese speichert man jedes/jedes 2. oder 3. frame in Variablen. Wenn er dann in ein Interior geht, und den Zauber wirkt, verwendet man diese Koordinaten dann um zu ermitteln, welcher am nächsten ist.
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 21.05.2004, 02:29 Uhr editiert.
|
|
21.05.2004, 01:05 |
|
Fennias Maxim
Slave of the system
Verwarnung: 1 User gesperrt


Dabei seit: August 2003
Geschlecht: 
Herkunft: Technodrome
Beiträge: 1456
 |
|
CellChanged (doch die beshreibung ist unverständlich)
wenn man als resultat markieren würde könnte man den Spieler hierhin teleportieren.
EDIT: Mist ist scheisse wenn er von interior nach interior wechselt.
__________________ overload
Dieser Beitrag wurde von Fennias Maxim am 21.05.2004, 01:15 Uhr editiert.
|
|
21.05.2004, 01:14 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Zitat: Original von Fennias Maxim
CellChanged (doch die beshreibung ist unverständlich)
wenn man als resultat markieren würde könnte man den Spieler hierhin teleportieren.
EDIT: Mist ist scheisse wenn er von interior nach interior wechselt.
Verstehe nicht ganz den Sinn dieses Postings...wozu einen Mark-Slot verschwenden (wie in diesen nervigen Haus-Plugins)???
__________________
Abenteuer Mittel Erde
Please visit us!
|
|
21.05.2004, 01:31 |
|
Fennias Maxim
Slave of the system
Verwarnung: 1 User gesperrt


Dabei seit: August 2003
Geschlecht: 
Herkunft: Technodrome
Beiträge: 1456
 |
|
Zitat: Original von GreyWanderer
Zitat: Original von Fennias Maxim
CellChanged (doch die beshreibung ist unverständlich)
wenn man als resultat markieren würde könnte man den Spieler hierhin teleportieren.
EDIT: Mist ist scheisse wenn er von interior nach interior wechselt.
Verstehe nicht ganz den Sinn dieses Postings...wozu einen Mark-Slot verschwenden (wie in diesen nervigen Haus-Plugins)???
Mark-slot?
Egal, ja mein forschlag ist wohl eines der recourcenfresser.
Er funktioniert nicht richtig.
Wenn sich die celle ändert, mark. dann lege ich dass amulett an, oder was aoch immer und werde "vor die tür" teleportiert.
und von da kann ich ja denn nächsten standpunkt anpeilen und werde dahin teleportiert.
__________________ overload
|
|
21.05.2004, 01:36 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Zitat: Original von Fennias Maxim
Mark-slot?
Egal, ja mein forschlag ist wohl eines der recourcenfresser.
Er funktioniert nicht richtig.
Wenn sich die celle ändert, mark. dann lege ich dass amulett an, oder was aoch immer und werde "vor die tür" teleportiert.
und von da kann ich ja denn nächsten standpunkt anpeilen und werde dahin teleportiert.
Dann wird die Markierung des Spielers allerdings vernichtet...und es geht doch auch ohne! Habe ich doch oben beschrieben....
if ( GetInterior != 1 )
.....if ( timer >= 2 )
..........set timer to 0
..........set LastX to ( player->GetPos, X )
..........set LastY to ( player->GetPos, Y )
..........set timer to ( timer + GetSecondspassed )
.....endif
endif
Damit hat man die letzten Exterior-Koordinaten des Spielers. Die kann man dann abgleichen mit denen der Marker. Der Marker, der am nächsten ist, wird "angepeilt" und der Spieler direkt davor gesetzt.
P.S.: Soviel zu deiner Rechtschreibung....
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 21.05.2004, 01:55 Uhr editiert.
|
|
21.05.2004, 01:43 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9257
 |
|
Zitat: Original von ReneMiner
Den Abstand zwischen Player-> GetPos X und allen Zielpos X vergleichen, genauso Y - und die kleinste Differenz gewinnt.
mathematisch uneindeutig... wie ich schon sagte: Pythagoras! und bevor sich jemand über das wurzelziehen beschwert: wenn c1 > c2 dann ist auch c1^2 > c2^2, zum vergleichen ist die wurzel also unnötig.
__________________ drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen 
|
|
21.05.2004, 02:15 |
|
ReneMiner
Crusader
  
Dabei seit: Januar 2004
Geschlecht: keine Angabe
Herkunft:
Beiträge: 260
 |
|
ich meinte etwa so
... Absolute Differenz von meinX bis Ziel1X
(dazu braucht man doch nur die kleinere Zahl von der grösseren Abzuziehen)
+ Absolute Differenz von meinY bis Ziel1Y
== ist GesamtDifferenz1
GesamtDifferenz2 wäre von meinX bis Ziel2X und meinY bis Ziel2Y
usw.
und die kleinste GesamtDifferenz kriegt am Ende den Zuschlag.
Man braucht doch nicht diagonal herumzurechnen weil es sowieso alles in Kästchen gezählt wird. Wenn ein Punkt von hier aus diagonal 6 Kästchen weit entfernt ist und ein anderer diagonal 7 dann kann ich wenn ich immer nur rechtwinklig gehe nicht schneller bei dem Kästchen in der 7 Reihe sein.
Würd ich sagen. Aber ich habs nicht studiert...
__________________ Mess them Meshes up
Dieser Beitrag wurde von ReneMiner am 21.05.2004, 03:09 Uhr editiert.
|
|
21.05.2004, 02:34 |
|
GreyWanderer
Crusader
  
Dabei seit: Januar 2004
Geschlecht: 
Herkunft: Cuiviénen
Beiträge: 465
 |
|
Nach langem Überlegen (und websuche was ist der Satz des Pythagoras) verstehe ich jetzt was du mit Pythagoras meintest...etwa so hier oder?: (Beispiel mit nur ZWEI Markern)
Begin TeleportSpellNew
long PC_X ; X Position des Spielers
long PC_Y ; Y Position des Spielers
long Ziel1X ; X Position des 1. Zieles
long Ziel1Y ; Y Position des 1. Zieles
long Ziel1Z ; Z Position des 1. Zieles
long Ziel1Rot ; Rotation des 1. Zieles
long Ziel2X ; das selbe wie bei 1 nur statt 1 2 (es is spät und ich bin faul)
long Ziel2Y ; ""
long Ziel2Z ; ""
long Ziel2Rot ; ""
long Dist1X ; Abstand player<-->Ziel1 auf der X-Achse (a1)
long Dist1Y ; Abstand player<-->Ziel1 auf der Y-Achse(b1)
long Dist2X ; Abstand player<-->Ziel2 auf der X Achse(a2)
long Dist2Y ; Abstand player<-->Ziel2 auf der Y-Achse(b2)
long Square1X ; (a1)²
long Square1Y ; (b1)²
long Square2X ; (a2)²
long Square2Y ; (b2)²
long SqareSquare1 ; (c1)²
long SqareSquare2 ; (c2)²
long Distance1 ; c1 (Abstand player<-->Ziel1)
long Distance2 ; c2 (Abstand player<-->Ziel2)
set PC_X to ( player->GetPos, X )
set PC_Y to ( player->GetPos, Y )
set Ziel1X to ( "Ziel1"->GetPos, X )
set Ziel1Y to ( "Ziel1"->GetPos, Y )
set Ziel1Z to ( "Ziel1"->GetPos, Z )
set Ziel2X to ( "Ziel2"->GetPos, X )
set Ziel2Y to ( "Ziel2"->GetPos, Y )
set Ziel2Z to ( "Ziel2"->GetPos, Z )
if ( PC_X < 0 )
.....set PC_X to ( PC_X * -1 )
.....set Dist1X to ( PC_X + Ziel1X )
.....set Dist2X to ( PC_X + Ziel2X )
else
.....if ( Ziel1X < 0 )
..........set Ziel1X to ( Ziel1X * -1 )
..........set Dist1X to ( PC_X + Ziel1X )
.....endif
.....if ( Ziel2X < 0 )
..........set Ziel2X to ( Ziel2X * -1 )
..........set Dist2X to ( PC_X + Ziel2X )
.....endif
endif
if ( PC_Y < 0 )
.....set PC_Y to ( PC_Y * -1 )
.....set Dist1Y to ( PC_Y + Ziel1Y )
.....set Dist2Y to ( PC_Y + Ziel2Y )
else
.....if ( Ziel1Y < 0 )
..........set Ziel1Y to ( Ziel1Y * -1 )
..........set Dist1Y to ( PC_Y + Ziel1Y )
.....endif
.....if ( Ziel2Y < 0 )
..........set Ziel2Y to ( Ziel2Y * -1 )
..........set Dist2Y to ( PC_Y + Ziel2Y )
.....endif
endif
set Square1X to ( Dist1X * Dist1X )
set Square1Y to ( Dist1Y * Dist1Y )
set Squaresquare1 to ( Square1X + Square1Y )
set Distance1 to SquareSquare1->GetSquareRoot
set Square2X to ( Dist2X * Dist2X )
set Square2Y to ( Dist2Y * Dist2Y )
set SquareSquare2 to ( Square2X + Square2Y )
set Distance2 to SquareSquare2->GetSquareRoot
if ( Distance1 <= Distance2 )
.....player->Position "Ziel1X" "Ziel1Y" "Ziel1Z" "Ziel1Rot"
else
.....player->Position "Ziel2X" "Ziel2Y" "Ziel2Z" "Ziel2Rot"
endif
Return
StopScript "TeleportSpellNew"
End
Soweit stimmt das Script doch oder? Wusste erst nicht was ich mit a² + b² = c² anfangen sollte, aber nun...aber ich denke das sprengt die Dimensionen des Spiels extrem. Denke das is nicht möglich. Die Variablen SquareSquare1 und SquareSquare2 sind enorm hoch...würde sagen man muss nen andern weg finden...evtl. wär da sogar GetDistance besser obwohl es nur float ist...aber wie wär's mit der Rechnung(anstatt a² + b² = c²): a1 + b1 = ab1 , a2 + b2 = ab2
if ( ab1 <= ab2 )
.....player->position....usw.
endif
wer den kürzesten "Grenzweg" hat, hat auch die kürzeste Entfernung.
Kleine Vorstellung zu den Dimensionen: bei
a=4, b=3 ist es ja noch relativ ok...4x4=16 + 3x3=9 == 25 (Wurzel davon is 5.) Also c=5.
Aber bei höheren Zahlen wie
a=40.000 b=30.000 wird es schwieriger...
40.000 x 40.000 = 1.600.000.000
30.000 x 30.000 = 900.000.000
1.600.000.000 + 900.000.000 = 2.500.000.000
Wurzel davon ist 50.000.
Bei meinem Weg entstehen nicht so große Zahlen:
40.000 + 30.000 = 70.000
EDIT: Uups sry das geht doch nicht. Man denke an a1=3 b1=3 und a2=1 b2=5...gleicher Weg, krasser Unterschied...aber evtl. vorm Malnehmen ggf. in 10er-Schritten teilen, ausrechnen, dann wieder malnehmen. Das ginge...
__________________
Abenteuer Mittel Erde
Please visit us!
Dieser Beitrag wurde von GreyWanderer am 21.05.2004, 04:21 Uhr editiert.
|
|
21.05.2004, 03:46 |
|
Fennias Maxim
Slave of the system
Verwarnung: 1 User gesperrt


Dabei seit: August 2003
Geschlecht: 
Herkunft: Technodrome
Beiträge: 1456
 |
|
Zitat: Original von GreyWanderer
..und es geht doch auch ohne! Habe ich doch oben beschrieben....
Wie ich meinen Post geschrieben hab stand in deinem Post noch am Schluss das wort "Basta!" 
__________________ overload
|
|
21.05.2004, 09:06 |
|
Garak
Admin
     

Dabei seit: Juli 2002
Geschlecht: 
Herkunft: Cardassia Prime
Beiträge: 9257
 |
|
Zitat: Original von ReneMiner
ich meinte etwa so
... Absolute Differenz von meinX bis Ziel1X
(dazu braucht man doch nur die kleinere Zahl von der grösseren Abzuziehen)
+ Absolute Differenz von meinY bis Ziel1Y
== ist GesamtDifferenz1
GesamtDifferenz2 wäre von meinX bis Ziel2X und meinY bis Ziel2Y
usw.
und die kleinste GesamtDifferenz kriegt am Ende den Zuschlag.
Man braucht doch nicht diagonal herumzurechnen weil es sowieso alles in Kästchen gezählt wird. Wenn ein Punkt von hier aus diagonal 6 Kästchen weit entfernt ist und ein anderer diagonal 7 dann kann ich wenn ich immer nur rechtwinklig gehe nicht schneller bei dem Kästchen in der 7 Reihe sein.
Würd ich sagen. Aber ich habs nicht studiert...
ok, einfaches beispiel: deltaX1 =3, deltaY1 = 3, deltaX2 = 5, deltaY2 = 1 - nach Deiner Methode sind beide ziele gleich weit entfernt (nämlich 6 Einheiten). In wahrheit ist aber der abstand zu ziel 1 4,24...Einheiten, der zu ziel 2 aber 5,09...Einheiten - glaub mir, es macht was aus. Ist übrigens schulstoff, dazu braucht man wirklich nicht zu studieren
@ Greywanderer: klar werden die zahlen extrem.... vieleicht sollte man die differenz durchdie breite einer zelle teilen... das waren so um die 8000-9000 Einheiten, wenn ich mich recht erinner.
Jedenfalls ist getdistance mit vorsicht zu geniessen - zum beispiel hat es probleme mit gegenständen, auf die ein Move-Befehl ausfeführt wurde.
__________________ drei mal dürft ihr raten, wer grade seine Signatur geschrottet hat...geht aber wieder - allerdings solltet Ihr noch die Finger von den Avataren lassen 
|
|
21.05.2004, 12:07 |
|
|