Warcraft III resources & community, 2003–2006 · archived

As suspected... I need help with my scripts.

46 posts
#31
I have no idea how to understand your last sentence. ^^
Anyway, I registered to X-Fire (and even yet I do not like it ~~) and sent you an "invitation to become my friend".

Strange it is, I think, to call somebody I barely know about more than the fact of his very existence "friend"...
#32
lol...

anyways, heres a translation

Zsar give Poot time go on XFire DL map

(caveman lol)

Give me a time that I should be on X-Fire at to DL the map
#33
Ah, well then, if you are living in GMT - 5, you should have a good chance to catch me around eight (am) till one (pm) o'clock.
As I sense, that you will have schoolish work to do this time, I could also arrange half an hour starting from one (am) o'clock.

Does not sound very comfortable, does it? ^^
#34
nah, since exams are done, its perfect
#35
There is a lot of unfinished stuff inside.
"Triggers\Sonstiges\" is the directory, you should look inside mainly.

If you want me to explain a certain triggers work, do not hesitate to ask.
#36
There is a lot of unfinished stuff inside.
"Triggers\Sonstiges\" is the directory, you should look inside mainly.

If you want me to explain a certain trigger's work, do not hesitate to ask.
#37
all that light is really annoying... and how am i supposed to access the "cats"?

i guess ill just give suggestions

try removing the DisableTrigger line from ControlCat1, because the trigger is already disabled so that is unneeded.

thats all for now
#38
Huh? ... No.
In "gg_trg_Katze_Bau.Trig_Katze_Bau_Actions" I enable these triggers:
"gg_trg_Katze_Steuerung_1"
"gg_trg_Katze_Steuerung_1_Hilfe"
"gg_trg_Katze_Steuerung_1_Streifzug"

Thus, I have to disable "gg_trg_Katze_Steuerung_1" and "gg_trg_Katze_Steuerung_1_Streifzug" for preventing them from interrupting the cat's attack move.
The trigger "gg_trg_Katze_Steuerung_1_Hilfe" reactivates them after the target has been killed.
... Or should reactivate them. Due to the little problem, that they are never deactivated and the target is never attacked, the trigger will never fire.
... And it does not need to. ~~
#39
I am not sure, but this is not supposed to work at all....
call ForForce(udg_Force[0],function Trig_trainCat_Subactions1)

Are you using a function from another trigger at this spot?
You can't...
You would have to put it into the header, because if you disable the Trigger consisting of this function, that function will also be gone...
As for the rest...
I think there are far too global many triggers for this......and we don't have to use so many as are not in GUI, aren't we?
BTW, I still don't know what it is supposed to do, please explain in your own words...
Oder sogar auf Deutsch :>
#40
Ah, das ist eine große Erleichterung. ^^
Ich habe zwar kein Problem damit, muntere Reden beliebiger Länge auf Englisch zu halten, aber die Schilderung spezifischer Problemstellungen ist dann doch etwas problematisch.

Schauen wir einmal...
Zunächst:
Dein Verweis auf das "GUI" ist berechtigt - diesen Komplex begann ich, bevor ich auch nur ansatzweise JASS verstand und habe ihn erst später konvertiert, weil ich mit den Beschränkungen des "GUI" nicht weitergekommen bin.
Da er nicht funktioniert, habe ich ihn noch nicht gänzlich rationalisiert, weil ich nicht prüfen könnte, ob ich dabei wohl eventuell einen oder mehrere Fehler gemacht hätte und sich also die Suche nach der Ursache des nicht-Funktionierens verkompliziert hätte.

Der Komplex (der nur teilweise hier geschildert ist) hat folgende Ziele:

- Erfassung des Baus eines spezifischen Einheitentyps durch eine spezifische Spielergruppe (funktioniert)
- Speicherung der fertiggestellten Einheit im Array "udg_Katze[]" gemäß ihrer Seriennummer (funktioniert)
- Zuordnung der fertiggestellten Einheit zum Spieler "Neutral passiv" (funktioniert)
- Streifzug der Einheit über die Karte (funktioniert)
- Unterbrechung des Streifzuges der Einheit bei Annäherung an ein definiertes Ziel und Angriff dieses Zieles (funktioniert nicht!)
- Wiederaufnahme des Streifzuges nach Tötung des Ziels (ungeprüft, da Streifzug nie eingestellt)

Bekannte Symptome der Fehlfunktion:
Keine Aktion des Auslösers "gg_trg_Katze_Steuerung_x" (x={1,...,6}) wird ausgelöst, sobald der Entfernungsgrenzwert zu einem definierten Ziel unterschritten wurde.

Fehlereingrenzung:
Der parallel zum Auslöser "gg_trg_Katze_Steuerung_x" laufende Auslöser "gg_trg_Katze_Steuerung_x_Streifzug" funktioniert ordnungsgemäß.
->
Der Auslöser, der die Auslöser "gg_trg_Katze_Steuerung_x", "gg_trg_Katze_Steuerung_x_Streifzug" und "gg_trg_Katze_Steuerung_x_Hilfe" bei Fertigstellung der Einheit aktivieren soll, funktioniert ordnungsgemäß.
->
Der Auslöser "gg_trg_Katze_Steuerung_x" ist zum Zeitpunkt der Überprüfung nicht inaktiv.
->
Die Ereignisregistration sollte bei Unterschreitung der Grenzwertentfernung zwischen udg_Katze[x] und einem definierten Ziel reagieren.
->
Die Aktionen des Auslösers sollten in diesem Moment ausgeführt werden.

...

Die Zeile, die du zitierst, stammt aus dem Auslöser "gg_trg_Katze_Bau" wie auch die Funktion "Trig_Katze_Bau_Subactions1".
#41
Ach weisst du, kack auf GUI >_>...
Mach wie ich das gemacht hab, soll heissen:
Du speicherst die Einheit via "SetHandleHandle" in den Trigger mit der RegisterUnitInRange:

local trigger cat_help_trg = null
local unit cat
set cat = GetTrainedUnit()//GetSoldUnit()//oder CreateUnit(...), wie dus haben willst
if (GetUnitTypeId(cat) == 'H001') then//cat1
set cat_help_trg = gg_trg_controlCat1
elseif (GetUnitTypeId(cat) == 'H002') then//cat2
//...
//etc...
endif
if (cat_helper_trg != null ) then
call TriggerRegisterUnitInRangeSimple(cat_helper_trg,1000,cat)
call SetHandleHandle(cat_helper_trg,"Cat",cat)
endif

Das ist der Trigger fuer verkaufte/tranierte cats...
du hast dann 6 mal gg_trg_controlCat1(2,3,4,5,6),
die dann die verkauften Units mit "GetHandleUnit" aufnehmen und verarbeiten koennen.

local unit cat = GetHandleUnit(GetTriggeringTrigger(),"Cat")

Die Handle-Funktionen hatte ich dir im anderen Thread gepostet, muessten reichen.[/jass]
#42
1.
Warum benutzt du die BJ-Funktion "TriggerRegisterUnitInRangeSimple"?

2.
Dass das nicht funktionieren wird, sehe ich mit geschlossenen Augen. ^^
Der Typ meiner Katzen ist nämlich immer und ausschließlich 'ndog' - da ändert sich nicht ein Bit.
#43
Oder halt...
TriggerRegisterUnitInRange(trig, whichUnit, range, null)

Ach und, du hast immer die selbe Einheit des gleichen Types?
Hmm....
Tja, dann musst du jedes mal einen lokalen Trigger erstellen, statt globale Trigger zu benutzen.

function cat_trg_action takes nothing returns nothing
local unit cat = GetHandleUnit(GetTriggeringTrigger(),"Cat")
...
endfunction
function ??? takes nothing returns nothing
...
local trigger cat_help_trg = CreateTrigger()
...
local unit cat
set cat = GetTrainedUnit()//GetSoldUnit()//oder CreateUnit(...), wie dus haben willst
call TriggerRegisterUnitInRange(cat_helper_trg,1000,cat,null)
call TriggerAddAction(cat_helper_trg,function cat_trg_action)
call SetHandleHandle(cat_helper_trg,"Cat",cat)
...
endfunction

Wenn die Aktion der "angenaehrten Katze" immer die selbe ist(was ich mal hoffe), solltest du die Funktion "cat_trg_action" in den header packen...
#44
... Ich glaube, ich habe den Fehler gefunden...

Die Variable "udg_Katze[0]" wird mit dem Wert "null" initialisiert...
Der Auslöser wird also mit dem Ereignis "TriggerRegisterUnitInRange(Auslöser,null,Radius,Fallunterscheidung)" initialisiert.
Und also kann da nichts passieren, weil niemals eine Einheit einen Abstand von x - sei es reele oder selbst komplexe Zahl - zu nichts einnehmen kann.

Himmel!
Was mache ich den da...
Ich kann dies beim ersten Mal durch "Ereignis hinzufügen" umgehen - aber wenn diese erste Katze getötet wird, kann ich das entsprechende Ereignis nicht mehr entfernen!
Was tun!?

Nachtrag:
Ich habe es getestet - das ist der Fehler.
Fatal!

As this may be important for others too, here is the translation of my report... At least a try to translate it:

The variable "udg_Katze[0]" is being initialised with the value "null" on start of the map.
So, the trigger is initialised with the event "TriggerRegisterUnitInRange(trigger,null,range,boolean expression)".
Thus, there cannot happen anything, as never a unit comes in any range to nothing!

The problem may be solved on the first activation by adding the event then instead of on map start.
But if or when the cat is killed, there seems not to be a way to remove this event!
So, there would be a whole lot of "dead" events in the trigger, which would decrease effectivity...
What may I do?
#45
Ach, echt?
Hast du ueberhaupt meinen Post gelesen?
Ausserdem ist es ueberhaupt nicht schlimm, dass die Katze getoetet wird. Im schlimmsten Fall Removest du jede Katze die tot ist, und der Event bleibt fuer immer da, ohne was zu machen.