Purzel Posted Wednesday at 12:50 AM Posted Wednesday at 12:50 AM (edited) Hallo, gibt es eine Möglichkeit, eine Runway als Ziel für einen Runway-Strike zu definieren? Mit Gebäuden geht es ja über "assign as..." wenn man hinklickt, nur bei der Runway finde ich den Klick-Punkt für "assign as" nicht. Ich brauche eine Abfrage, ob die Startbahn wirklich getroffen wurde, damit ich einen Funkspruch an alle Spieler ausgeben kann. Ich habe auch schon mehreres probiert, wie z.B.: - Empfindliches Objekt draufstellen, das man dann halt zerbombt und der Trigger fragt das Objekt ab, ob zerstört, aber ich kriege die Dinger nicht unsichtbar, auch mit den 3 Häkchen bei "Hidden" nicht. - Mein zweiter Ansatz war eine Triggerzone mit Bedingung "Bombe in Zone", aber dann müsste ich alle (!) Bomben als Bedingung eintragen, und wenn eine Bombe 90° zur Landebahn in 50m Höhe durch die Triggerzone fliegt und abseits explodiert löst ja auch nur das Durchfliegen der Triggerzone auch aus, ob wohl die Bedingung ja nur dann auslösen soll, wenn die Bombe im Asphalt explodiert. Gibt es eine elegante sexy Lösung, die ich nicht kenne? Dann her damit! Gruß Purzel Edited Wednesday at 07:33 PM by Purzel
kotor633 Posted Wednesday at 07:32 AM Posted Wednesday at 07:32 AM Guten Morgen, einfach mal youtube fragen: Eventuell ist es ja das, was du gesucht hast? ************************************** DCS World needs the Panavia Tornado! Really! **************************************
Purzel Posted Wednesday at 10:10 AM Author Posted Wednesday at 10:10 AM (edited) Danke für Deine Hilfe, aber das habe ich nicht gesucht, ich suche eine Abfrage, ob die Runway getroffen wurde. (Habe ich oben auch nochmal ergänzt, um keine Missverständnisse aufkommen zu lassen.) Die Wegpunkt-Funktion "runway-attack" (mit dem Dreieck auf der Runway) ist mir bekannt, es spielen aber Clients und dafür brauche ich eine Abfrage. Was die zwei Videos da oben zeigen ist für KI-Piloten... Ich möchte abfragen, ob die Runway von den Spielern getroffen wurde und dazu dann einen Trigger auslösen, dass alle flights wissen, dass die Runway auch getroffen wurde. Greetz Purzel Edited Wednesday at 10:14 AM by Purzel
AirWolf D Posted Wednesday at 12:41 PM Posted Wednesday at 12:41 PM Hey, hast du die Zone rechteckig oder rund ? das Rechteck kannst du doch genau an die RWY anpassen, wenn daneben die Bombe explodiert sollte das doch nicht zählen, CU you in the * AIR * ^AirWolf PC > BE QUIIET Power 1000 W ATX 3.0 * ROG STRIX Z690-F * i7-12700 KF * DDR5-6000 64 GB * M.2 980 EVO PRO 2 TB * RX 7900 XTX 24 MB XFX MERC 310 BLACK EDITION *
buur Posted Wednesday at 12:58 PM Posted Wednesday at 12:58 PM Also ein event 'Bomb hit runway' kenn ich jetzt nicht. Am besten wie von AirWolf beschrieben eine rechteckige Zone um die Runway machen und abfragen mit dem Trigger 'Bomb in Zone'. Ist für viele Spieler und unterschiedliche Bomben etwas nervig abzufragen, aber wenn du das vermeiden willst must du zu Moose oder Mist wechseln.
kotor633 Posted Wednesday at 01:23 PM Posted Wednesday at 01:23 PM Hi, ah, okay. Oder du schaust dir mal DML an, ob dich das weiter bringt. ************************************** DCS World needs the Panavia Tornado! Really! **************************************
coyote79 Posted Wednesday at 01:26 PM Posted Wednesday at 01:26 PM (edited) Dazu möchte ich erwähnen, dass nicht die Explosion in der Zone als Auslöser dient, sondern Bombe XY muss sich länger als eine Sekunde in der Zone befinden. Das geht natürlich, funktioniert aber nicht so zufriedenstellend. Also der Trigger kann also auch ausgelöst werden, wenn die Bombe neben der Runway einschlägt, aber vorher durch die Zone geflogen ist. Ebenso kann es sein, dass zwar die Runway mittig getroffen wurde, aber sich die abgeworfene Bombe davor zu kurz in der Zone aufgehalten hat. Edited Thursday at 02:52 PM by coyote79 1
AirWolf D Posted Wednesday at 02:40 PM Posted Wednesday at 02:40 PM Hey, so ist das wirklich nicht zufriedenstellend, hab mich schön öfter gewundert, nicht gewusst das es auch beim Durchflug zählt, vielleicht für die Zone "Erfolgreiche Einheiten Treffer" nehmen, dann kann man ja für jeden der was reinwirft den Namen definieren und mit oder mehrere eintragen, dann dürfte ja nur die Bedingung zählen in der Zone, werd ich auch mal check! CU you in the * AIR * ^AirWolf PC > BE QUIIET Power 1000 W ATX 3.0 * ROG STRIX Z690-F * i7-12700 KF * DDR5-6000 64 GB * M.2 980 EVO PRO 2 TB * RX 7900 XTX 24 MB XFX MERC 310 BLACK EDITION *
AirWolf D Posted Wednesday at 07:17 PM Posted Wednesday at 07:17 PM Hey, dachte man kann es so kombinieren, geht auch nicht, Treffer sind auf Einheiten bezogen und geht nicht mit Zone, vielleicht findet man ja noch etwas ! CU you in the * AIR * ^AirWolf PC > BE QUIIET Power 1000 W ATX 3.0 * ROG STRIX Z690-F * i7-12700 KF * DDR5-6000 64 GB * M.2 980 EVO PRO 2 TB * RX 7900 XTX 24 MB XFX MERC 310 BLACK EDITION *
buur Posted Wednesday at 07:26 PM Posted Wednesday at 07:26 PM Scheint nur über ein event hit zu gehen. Hier hat das mal jemand beschrieben. 1
Purzel Posted Wednesday at 07:45 PM Author Posted Wednesday at 07:45 PM Ja, das ist wohl nicht so einfach. Mit den Programmier-Sprachen kenne ich mich halt so gar nicht aus. Wo mache ich das mit dem Eventhandler im Mission Editor?
buur Posted Wednesday at 08:14 PM Posted Wednesday at 08:14 PM einfach als doscript mit Missionsbeginn starten. Würde das letzte Script in dem Thread nehmen. Musst du nur die Base-ID raussuchen, ist zwei-drei Beiträge vorher beschrieben. Wenn's nicht klappt sag bescheid, dann bastel ich dir eine Beispielmission 1
Purzel Posted Thursday at 10:01 AM Author Posted Thursday at 10:01 AM (edited) Zitat dann bastel ich dir eine Beispielmission Hi @buur , Ja gerne, dieses Definition-Script läuft, für die Syrien-Map wäre "Shayrat" der Flugplatzname mit der ID "36", Eine Mission wäre zum Anschauen schon mal eine Hilfe... Danke für Dein Angebot! Ich bekomme beim Missionsstart keine Fehlermeldung, aber irgendwie muss ja da ein Flag gesetzt werden, dass ich später damit arbeiten kann. Ich weiß bloss nicht, wie ich aus dem Script das Flag auslesen kann, bzw. wo das im Script definiert wird. (evtl. ist "morto" oder "morte" der Flagname? "morte" = Der Tod, "morto" = tot ). Und wie frage ich das dann ab? Flag equals oder Flag is true? Also ich hab es schon probiert, bekomme aber die Abfrage für die Zerstörung der Runway irgendwie nicht hin. Wäre klasse, wenn Du mir eine Mission dazu erstellen könntest... Der Einfachheit halber kopiere ich Dir die Scripte aus dem anderen Thread hier her: Airbase und ID auslesen: Spoiler local baseaerea2 = world.getAirbases() local teste = {} for a, b in pairs(baseaerea2) do if b:getCategory() == 4 then teste[#teste+1] = "\n ID: " .. b:getID() .. " / Name: " .. b:getName() end end trigger.action.outText(table.concat(teste), 60) Runway-Script: Spoiler nome = {Shayrat} -- Name of base including FARP, e.g. Shayrat idNome = {36} -- ID of base including FARP, e.g. 36 local baseaerea = world.getAirbases() -- All bases including FARP for a, b in pairs(baseaerea) do if b:getCategory() == 4 then idNome[#idNome+1] = tostring(b:getID()) nome[#nome+1] = b:getName() end end function atrasar(i) -- delay at start -- i[1] = nome da função -- i[2] = tabela de valores da função -- i[3] = tempo de delay timer.scheduleFunction(i[1], i[2], timer.getTime() + i[3]) end function CheckBase(Check, time) -- damaged runway -- Check[1] = Nome da base aérea -- Check[2] = Flag if trigger.misc.getUserFlag(Check[2]) == 11 then return nil else local base = Airbase.getByName(Check[1]):getLife() -- check health of base local function arredondar(x, n) n = math.pow(10, n or 0) x = x * n if x >= 0 then x = math.floor(x + 0.5) else x = math.ceil(x - 0.5) end return x / n end if base < 3600 and base >= 1 then local num = base/3600 local numfinal = (1 - arredondar(num, 1))*10 if numfinal == 10 then trigger.action.setUserFlag(Check[2], numfinal) return nil else trigger.action.setUserFlag(Check[2], numfinal) return time + 25 end else return nil end end end function morte(morto) trigger.action.setUserFlag(morto, 11) end local Event_Handler = {} function Event_Handler:onEvent(Event) if Event.id == 1 then -- Shot local WeaponShoot = Event.weapon:getDesc() local categoria = WeaponShoot.category if categoria == 1 then local mcategoria = WeaponShoot.missileCategory if mcategoria ~= 1 and mcategoria ~= 2 and mcategoria ~= 4 and mcategoria ~= 6 then for c, d in pairs(nome) do local detalhes = {} detalhes = { nome[c], idNome[c] } atrasar({CheckBase, detalhes, 1200}) end end elseif categoria ~= 0 and categoria ~= 4 then for c, d in pairs(nome) do local detalhes = {} detalhes = { nome[c], idNome[c] } atrasar({CheckBase, detalhes, 30}) end end elseif Event.id == 8 and Event.initiator ~= nil then -- dead local InitiatorObject = Event.initiator local InitiatorName = InitiatorObject:getName() local InitiatorCategory = InitiatorObject:getCategory() if InitiatorCategory == 4 then for e, f in pairs(nome) do if f == pista then local identidade = "" identidade = idNome[e] atrasar({morte, identidade, 30}) end end end end end world.addEventHandler(Event_Handler) Und schonmal ein fettes Dankeschön im Vorraus! Edited Thursday at 10:40 AM by Purzel
buur Posted Thursday at 10:56 AM Posted Thursday at 10:56 AM Hi @Purzelhier ist die MissionPurzelRWYDamaged.miz Wenn du Namen in ein Script einträgst immer in Anführungszeichen. Also 'Shayrat' Das Skript erzeugt eine Flag mit der Nummer der Airbase, also hier 36. Diese kannst du dann mit einem Trigger Flag more abfragen. 2
Purzel Posted Thursday at 11:54 AM Author Posted Thursday at 11:54 AM (edited) Uih! Das ging ja schnell, gleich mal probieren... @buur Ja klappt! Saugeil! Danke! Ich füge hier morgen noch eine Zusammenfassung ein. Edited Thursday at 05:46 PM by Purzel
buur Posted Thursday at 05:58 PM Posted Thursday at 05:58 PM vor 6 Stunden schrieb Purzel: Ja klappt! Saugeil! Danke! Ich füge hier morgen noch eine Zusammenfassung ein. Bedank dich nicht bei mir, sonders beim Autor des Skriptes. Der freut sich bestimmt Ich habs ja nur in ne Mission gepackt.
Recommended Posts