| Autor |
Nachricht |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
Hi leute,
also um erstmal die fragen zu beantworten... :
* Wie gut kennst du dich mit der WARCRAFT III Scriptsprache aus?
Es geht so, ich erkenne ähnlichkeiten zu php, womit ich mich sehr gern beschäftige.
* Wie gut kennst du dich im allgemeinem mit programmieren aus?
Hab da drin zwar keine schulische Ausbildung, aber ich habe mir einiges aneignen können, allein durch php.
* Welches WARCRAFT verwendest du(Originalversion oder mit Expasion)?
Originalversion ohne Expansion set
jetzt zu meiner frage:
Ich hab folgendes problem. ich mache grad ne funmap und hab wirklich kein platz für bäume zum abholzen. ich dachte mir also, dass ich einen bereich auf meiner karte erstelle, wo sich Arbeiter (von allen rassen) hinstellen können, um Holz zu fördern. Klappte eigentlich auch soweit, pro arbeiter wurde 1 holz gefördert, pro 0.70 sekunden. Jetzt macht das ja wenig sinn, wenn ich die arbeiter abziehe und trotzdem weitergefördert wird. Ich habs dann auch mit Variablen probiert (also wenn arbeiter das gebiet betritt, setze Variable Betreten auf 1. Nur wenn Betreten 1 ist, dann fördern...). das funktioniert aber auch nur fast. ich weiss nich ob mir da einer helfen kann, aber ich dachte, post ichs einfach mal hier rein.
wer aber ne bessere idee hat zum holzabbauen und dabei auch noch platz zu sparen weiss, dann bin ich dafür gern offen
grüße
DarkSnake
|
|
|
|
|
|
|
     |
 |
Google
|
|
| |
|
 |
MokkaMan
Titan


Alter: 24
Anmeldungsdatum: 20.12.2002
Beiträge: 1311
Wohnort: München

|
|
Na, du bräuchtest dann natürlich für jeden Arbeiter eine solche Variable.
Du könntest einerseits (Punktwert einer Einheit) dazu verwenden (weiß jetzt nicht, ob das so funktioniert).
Andererseits könntest du das so machen:
| Code:
|
Ereignis: Zeit - (alle x sekunden)
Bedingung: keine
Aktion:
Pick all units in (abbaugebiet) and do actions:
if ((((picked unit) is of unit-type (arbeiter mensch)) or ((picked unit) is of unit-type (arbeiter ork))) or ...))
Spieler: Increase (owner of (picked unit))'s Wood by (y)
|
Das erhöht das Holz von jedem Spieler um (y) * Anzahl der Arbeiter, die er dortstehen hat. Wahrscheinlich stimmt der genaue Wortlaut nicht.
|
|
|
|
_________________ In mir brennt die Rache...
Es ist mehr Holz erforderlich!
<== ICH BIN DER TITAN!
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
klappt sogar, nich schlecht, danke.
was wenn ich jetzt ne grüne +1 über dem kopf der arbeiter auftauchen und wieder verschwinden sehen will?
das hab ich mich schon immer mal gefragt, wie das geht.
|
|
|
|
|
|
|
     |
 |
MokkaMan
Titan


Alter: 24
Anmeldungsdatum: 20.12.2002
Beiträge: 1311
Wohnort: München

|
|
Da hab ich leider keine Ahnung. Ich glaube auch nicht, dass es das als Spezialeffekt-Animation gibt, weil die Zahl ja variabel ist.
|
|
|
|
_________________ In mir brennt die Rache...
Es ist mehr Holz erforderlich!
<== ICH BIN DER TITAN!
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
das gibts schon.
allein wenn man sich Tower Defense Funmaps anschaut. Da fliegt bei jedem getöteten monster eine +1 über dem kopf hoch. bloß dass es kein holz sondern gold ist. theoretisch müsste es auch bei dem holz gehen, frage ist bloß "Wie?". ich glaub das ist ne chatfunktion. bin mir aber net sicher
EDIT:
und wie ich grade gesehen habe, die Tower Defense map wo ich meinte hat das zwar, aber es gibt kein anzeichen dafür im Auslöser editor... sehr komisch die sache.
grüße
DarkSnake
|
|
|
|
|
|
|
     |
 |
MokkaMan
Titan


Alter: 24
Anmeldungsdatum: 20.12.2002
Beiträge: 1311
Wohnort: München

|
|
Das wird bei Einheiteneigenschaften eingstellt (Beute) / Gibt Beute, oder so.
So eine Einheit ist wie ein Creep (neutrales Monster). Beim Töten kriegst du Geld, und das Spiel zaubert automatisch die Goldzahl drüber. Das wird leider nicht im Editor geregelt.
Höchstens die Animation mit den klimpernden Münzen (ohne die Zahlen, leider) könntest du abspielen. Sonst wüsste ich nichts.
|
|
|
|
_________________ In mir brennt die Rache...
Es ist mehr Holz erforderlich!
<== ICH BIN DER TITAN!
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
Schade das. naja was solls. aber danke für die info
noch ne frage:
gibt es ein besseres system fürs ersetzen als das?
Ereignis:
unit betritt (gebiet)
Bedingung:
unit-type of (entering unit) gleich (bestimmte unit)
Aktion:
kill entering unit
creat 1 (eigene unit) in center of (gebiet)
ich muss ziemlich viele units so ersetzen können, eigentlich alle kampfunits von allen rassen. wäre recht viel arbeit mit den auslösern. lässt sich das auch einfacher lösen?
grüße
DarkSnake
|
|
|
|
|
|
|
     |
 |
Gummigeschoss
Arbeiter

Anmeldungsdatum: 12.01.2005
Beiträge: 21
|
|
Theretisch ja... musst nur wissen, was anstrengender ist...
Erstmal die ganzen Gebiete erstellen, die die Spieler habe sollen... IN das gebiet packst du dann im Editor die Einheit rein, die gewählt werden kann! Am besten gibst du sie Spieler Neutral Passiv
| Code:
|
E: A Unit Enter Region x y z oder welche auch immer... (Hier müssen ALLE Ereignisse auf einmal aufgelistet werden, tritt dann 1 davon in Kraft werden die Trigger ausgelöst! Also gilt der Trigger für ALLE gebiete!
B: Wie du willst...
A: Kill entering Unit
Pick all Units in Region matching Owner of Unit = Neutral Passiv (damit auch nur der gewählt wird, der replaced werden soll, da er Spieler Neutral Passiv gehört, ist er die einzigste Unit, die gepicked wird.)
Einheit - Change ownership for picked Unit to Owner of Entering Unit wechseln Farbe
|
soo dürfte das gehen, allerdings kann dann JEDER JEDEN Helden allerdings nur EINMAL nehmen!
|
|
|
|
_________________ Line Tower Wars - Advanced
|
|
|
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
gut ok, so direkt meinte ich das jetzt nicht.
es ist eher ein upgrade prozess, den ich da machen will. man baut einheiten und schickt diese in ein gebiet. der auslöser soll erkennen, welche einheit das ist und dazu die upgradeversion erstellen, nebenbei aber die andere einfache einheit töten.
beispiel:
Soldat wird gebaut. Soldat läuft ins Upgradegebiet - Soldat stirbt - Neue Einheit Super Soldat erscheint.
es ist, wie gesagt, nicht das problem, dass es nicht geht, sondern will ich mir einbisschen arbeit ersparen bei den auslösern. Denn ich habe zwei solcher Upgradegebiete und da muss ich dann pro einheit einen auslöser erstellen...
grüße
DarkSnake
|
|
|
|
|
|
|
     |
 |
MokkaMan
Titan


Alter: 24
Anmeldungsdatum: 20.12.2002
Beiträge: 1311
Wohnort: München

|
|
Naja, ich denke kaum, dass man da was ändern kann.
Aber is ja mal ruckzuck gemacht, dauert sicher nicht länger als 10 Minuten, zumal du die Auslöser ja kopieren und einfügen kannst
Ich persönlich würde aber statt töten was anderes machen.
Wenn ich eine Einheit upgrade, soll ja mal nicht unbedingt Blut und ne Leiche nacher rumliegen (bei mir zumindest nicht ).
Also hätte ich das so gemacht:
| Code:
|
Set (Punkt-Variable) to (Position of (einheit))
Spezialeffekt - Create (ein kleiner Effekt) at position of (einheit)
wait (0.10) seconds
Einheit - Remove (einheit) from the game (nicht kill, also ohne Blut)
Einheit - Create new (neuerEinheitentyp) at (Punkt-Variable).
|
.
Für den Effekt würde ich beispielsweise diese kleine blitzende Wolke hernehmen, die erscheint, wenn ein Scharfseher Wölfe beschwört.
Die Wolke verdeckt die Einheit (sagen wir innerhalb von 0.10 Sekunden), dann kannst du sie auswechseln, ohne dass man was merkt 
|
|
|
|
_________________ In mir brennt die Rache...
Es ist mehr Holz erforderlich!
<== ICH BIN DER TITAN!
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
|
     |
 |
MokkaMan
Titan


Alter: 24
Anmeldungsdatum: 20.12.2002
Beiträge: 1311
Wohnort: München

|
|
Nimm doch einfach deinen Auslöser mit Timer drin, und mach als erste Aktion:
Auslöser - Deactivate (this trigger)
Damit deaktivierst du den Auslöser, sodass er nicht ein zweites Mal aufgerufen wird
Zu der Wolke: Sollte "Feral Spirit" oder "Geist der Wildnis" heißen. Du hast ja da so ein schönes Auswahlmenü, einfach mal durchgucken, vielleicht gefällt dir auch was anderes 
|
|
|
|
_________________ In mir brennt die Rache...
Es ist mehr Holz erforderlich!
<== ICH BIN DER TITAN!
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
also ich weiss nich,
das mit dem timer funktioniert irgendwie net.
hier mal mein timer:
Auslöser: Start Timer (Aktiviert, zu beginn ein)
| Code:
|
Ereignis:
Zeit - Elapsed game time is 1 seconds.
keine Bedingungen
Aktionen:
Countdown-Timer - Creat timer window for (last created timer) with title Invasion:
Countdown-Timer - Zeigen (last created timer)
Countdown-Timer - Start (last created timer) as a Einmaliger timer that expire in (60.00 x 10.00) seconds
Auslöser - Add Start Invasion <gen> to the trigger queue (Überprüfe conditions)
|
Auslöser: Start Invasion (Aktiviert, nicht zu beginn ein)
| Code:
|
keine Ereignisse
keine Bedingungen
Aktionen:
If ((Remaining time for (last created timer)) Kleiner als 61.00) then do (Countdown-Timer - Change the title of (last created timer window) to !!WARNING!!) else do (do nothing)
If ((Remaining time for (last created timer)) Gleich 0.00) then do (Countdown-Timer - Pause (last created timer)) else do (do nothing)
If ((Remaining timer for (last created timer)) Gleich 0.00) then do (Countdown-Timer - Destroy (last created timer window)) else do (do nothing)
If ((Remaining timer for (last created timer)) Gleich 0.00) then do (Auslöser - Run Creat Invasion <gen> (checking conditions)) else do (do nothing)
If ((Remaining timer for (last created timer)) Gleich 0.00) then do (Auslöser - Remove (This trigger) from the trigger queue) else do (do nothing)
|
Auslöser: Creat Invasion (Aktiviert, nicht zu beginn ein)
| Code:
|
keine Ereignisse
keine Bedingungen
Aktionen:
Einheit - Creat 20 Zergling for Spieler 9 (Grau) at (Center of Start Zerg1 <gen>) facing (Position of (Triggering unit))
Einheit - Creat 20 Zergling for Spieler 11 (Dunkelgrün) at (Center of Start Zerg2 <gen>) facing (Position of (Triggering unit))
Einheit - Creat 10 Marine for Spieler 10 (Hellblau) at (Center of Start Terraner1 <gen>) facing (Position of (Triggering unit))
Einheit - Creat 10 Marine for Spieler 12 (Braun) at (Center of Start Terraner1 <gen>) facing (Position of (Triggering unit))
|
Also, den Title "Invasion:" ändert er in "!!WARNING!!" um, aber alles andere macht er nicht. woran liegt das nur...?
grüße
DarkSnake[/code]
|
|
|
|
|
|
|
     |
 |
M1-OVERK!LL
Ritter


Alter: 23
Anmeldungsdatum: 20.08.2004
Beiträge: 442
Wohnort: Club Coco Cabana
|
|
Gib mal bei "last created Timer" ne Variable mit nem Namen für den Timer an. Weil du dann viel besser auf das ding scripten kannst (so ist es bei mir zumindest)
|
|
|
|
_________________ Ihr lacht über mich, weil ich anders bin.
Ich lache über euch, weil ihr alle gleich seid.
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
funktioniert leider auch nicht,
jetzt macht er nichteinmal das !!WARNING!! mehr... 
|
|
|
|
|
|
|
     |
 |
Abyhsen
Moderator

Alter: 29
Anmeldungsdatum: 26.10.2001
Beiträge: 602
Wohnort: Wien Umgebung

|
|
Es könnte aber (SEEEEEEEHHHHHHHHHRRRRR wahrscheinlich) daran liegen dass dein Timer zerstört wird bevor du den Trigger aufrufen willst, daher gibt es ihn nichtmehr und er Ignoriert die Bedingungen. Also den Timer würd ich erst zerstören nachdem alles erledigt ist. Für was brauchst du die Triggerqueue ? Hab selber ne Towerdefencemap gemacht und die Queue nie gebraucht. Und du solltest bei der erstellung des Timers der Timervariable den Timer zuweisen sonst kann er ihn auch nicht finden.
Und dann würd ich noch den Erstellungstrigger verändern.
Ich habs so gemacht:
| Code:
|
Timerstart
Ereignisse
Zeit - Elapsed game time is 0.10 seconds
Bedingungen
Wellennummer Kleiner gleich 51
Aktionen
Countdown-Timer - Start Wellentimer as a Einmalig timer that will expire in Wellenwartezeit seconds
Countdown-Timer - Create a timer window for Wellentimer with title (Welle + ((String(Wellennummer)) + Ankunft:))
Set Wellentimerfenster = (Last created timer window)
Countdown-Timer - Zeigen Wellentimerfenster
|
| Code:
|
Monsterankunft
Ereignisse
Zeit - Wellentimer expires
Bedingungen
Wellennummer Kleiner gleich 50
Aktionen
Countdown-Timer - Destroy Wellentimerfenster
For each (Integer i) from 1 to Gegnerzahl[Wellennummer], do (Actions)
Schleifen - Aktionen
-------- Nur zum Debugging --------
If ((EinfallendeGegner[Wellennummer] is empty) Gleich True) then do (Einheitengruppe - Add Pingi 0000 <gen> to EinfallendeGegner[Wellennummer]) else do (Do nothing)
-------- Ende Debugging --------
Set WellenGegner = (Random unit from EinfallendeGegner[Wellennummer])
Wait 0.50 seconds
Einheit - Create 1 (Unit-type of WellenGegner) for Gegner at (Gegner start location) facing (Center of Wegpunkt1 <gen>)
Einheitengruppe - Add (Last created unit) to Gegnerunterwegs
|
Dann noch der
| Code:
|
Bewegungstrigger
Ereignisse
Einheit - A unit enters Wegpunkt2 <gen>
Bedingungen
(Owner of (Entering unit)) Gleich Spieler 2 (Blau)
Aktionen
Einheit - Order (Entering unit) to Bewegen nach (Center of Wegpunkt3 <gen>)
|
Den letzten musste halt für jedes Gebiet machen, ich hab an jeder Kurve, bzw. Abzweigung so ein Gebiet gemacht.
Der Erstellungstrigger hat halt den Vorteil dass nicht alle Monster gleichzeitig spawnen sondern einzeln hintereinander. Schaut meiner Meinung nach besser aus als so ein Haufen der läuft.
So far
|
|
|
|
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
also funktionieren tuts bei mir immer noch nich so ganz.
wo (in welchem auslöser, mit welchem ereignis) definierst du eigentlich die Variable "Wellentimer"? womöglich könnte mir das weiterhelfen
grüße
DarkSnake
|
|
|
|
|
|
|
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
hey leute, ich nehm auch gern noch andere vorschlage an :/
ich bekomm das script wohl nie hin -.-
|
|
|
|
|
|
|
     |
 |
Abyhsen
Moderator

Alter: 29
Anmeldungsdatum: 26.10.2001
Beiträge: 602
Wohnort: Wien Umgebung

|
|
Ganz genau hier. Du definierst einfach eine Timervariable und über die rufst du dann deinen Timer auf. So wird automatisch die Variable zu dem Timer....
Countdown-Timer - Start Wellentimer as a Einmalig timer that will expire in Wellenwartezeit
|
|
|
|
|
|
 |
     |
 |
DarkSnake
Grunzer

Anmeldungsdatum: 08.03.2005
Beiträge: 36
|
|
|
     |
 |
|
|