Mordred
|
18.10.2010 20:49 1029 mal angesehen |
Kanonenkrater
So, ein neuer Skriptmod :)
Kleine Kanonen hinterlassen kleine Krater, Eisenkanone + Ballistaturm mittelgroße, Kanonentürme große und Belagerungskanonen sehr große Krater.
Gibt es Meinungen dazu?
Bei Interesse schreibe ich den Code noch dazu.
Auf das Bild klicken, um es in Originalgröße zu sehen (184,90 KB)
Kommentare
Tjuri
|
20.10.2010 17:40 |
Wow echt cool
kindofthewold
|
20.10.2010 13:34 |
@ Mordred
er meint vermutlich
Logic.SetTerrainVertexColor
Was dasselbe ist, wie wenn Du im Mapeditor auf Map Einfärben klickst.
ja
@ Morderd
Hmm..
Mit Vertexfarbe kann ich momentan nicht arbeiten, weil mich ein Grafikkarten"update" dazu gezwungen hat, Landschaft auf Mittel zu stellen, wo man keine Vertexfarben sieht.
wohl eher ein downdate
Mordred
|
19.10.2010 19:09 |
er meint vermutlich
Logic.SetTerrainVertexColor
Was dasselbe ist, wie wenn Du im Mapeditor auf Map Einfärben klickst.
die-FREIE-enzyklopaedie
|
19.10.2010 18:42 |
Das mit der Grafik is bei mir auch nur dass ich auf ner GTX260 auf niedrig stellen muss
@kindofthewold
die Textur wird ja schon veändert mit:
Logic.SetTerrainNodeType
Mordred
|
19.10.2010 18:28 |
Hmm..
Mit Vertexfarbe kann ich momentan nicht arbeiten, weil mich ein Grafikkarten"update" dazu gezwungen hat, Landschaft auf Mittel zu stellen, wo man keine Vertexfarben sieht.
kindofthewold
|
19.10.2010 17:52 |
super! Sieht richtig echt aus. ich würde aber auch noch eine färbung eingeben. vll. cdass es dann um 25% dunkler wird?
Mordred
|
19.10.2010 16:54 |
In die FirstMapAction()
Allow_CannonCraters()
und diesen Teil unten in das Skript kopieren, nur nicht in eine Funktion
function Allow_CannonCraters() KraterTexture = {14,48,135}--{14,48,135} Trigger.RequestTrigger(Events.LOGIC_EVENT_ENTITY_HURT_ENTITY,"","KraterAngriff",1) end function KraterAngriff() local Ang = Event.GetEntityID1() local Opf = Event.GetEntityID2() local Typ = Logic.GetEntityTypeName(Logic.GetEntityType(Ang)) if (Logic.IsBuilding(Opf) == 0)then if (Typ == "PV_Cannon1" or Typ == "PV_Cannon2" or Typ == "PV_Cannon3" or Typ == "PV_Cannon4" or Typ == "PB_Tower2_Ballista" or Typ == "PB_Tower3_Cannon" or Typ == "PB_DarkTower2_Ballista" or Typ == "PB_DarkTower3_Cannon")then local Pos = GetPosition(Opf) if (Typ == "PV_Cannon1" or Typ == "PV_Cannon2" or Typ == "PB_Tower2_Ballista" or Typ == "PB_DarkTower2_Ballista") then Krater(Pos,30) elseif (Typ == "PV_Cannon3" or Typ == "PB_Tower3_Cannon" or Typ == "PB_DarkTower3_Cannon") then Krater(Pos,50) Logic.SetTerrainNodeType(math.floor(Pos.X/100),math.floor(Pos.Y/100),KraterTexture[math.random(1,table.getn(KraterTexture))]) elseif (Typ == "PV_Cannon4") then Krater(Pos,90) Logic.SetTerrainNodeType(math.floor(Pos.X/100),math.floor(Pos.Y/100),135) end end end end function Krater(_pos,_deep) local posX = math.floor(_pos.X/100) local posY = math.floor(_pos.Y/100) SetEntityName(Logic.CreateEntity(Entities.XD_ScriptEntity,_pos.X+250,_pos.Y,0,1),"Test_Krater1") SetEntityName(Logic.CreateEntity(Entities.XD_ScriptEntity,_pos.X-250,_pos.Y,0,1),"Test_Krater2") SetEntityName(Logic.CreateEntity(Entities.XD_ScriptEntity,_pos.X,_pos.Y+250,0,1),"Test_Krater3") SetEntityName(Logic.CreateEntity(Entities.XD_ScriptEntity,_pos.X,_pos.Y-250,0,1),"Test_Krater4") local _,_,Z1 = Logic.EntityGetPos(GetEntityId("Test_Krater1")) local _,_,Z2 = Logic.EntityGetPos(GetEntityId("Test_Krater2")) local _,_,Z3 = Logic.EntityGetPos(GetEntityId("Test_Krater3")) local _,_,Z4 = Logic.EntityGetPos(GetEntityId("Test_Krater4")) local Z = (Z1+Z2+Z3+Z4)/4 for i=1,4 do DestroyEntity("Test_Krater"..i) end if (Z1 <= Z+25 and Z2 <= Z+25 and Z3 <= Z+25 and Z4 <= Z+25)then Logic.SetTerrainNodeHeight(posX,posY,Z-(_deep+0.5*_deep)) Logic.SetTerrainNodeHeight(posX+1,posY,Z-_deep) Logic.SetTerrainNodeHeight(posX-1,posY,Z-_deep) Logic.SetTerrainNodeHeight(posX,posY+1,Z-_deep) Logic.SetTerrainNodeHeight(posX,posY-1,Z-_deep) Logic.SetTerrainNodeHeight(posX+1,posY+1,Z-_deep) Logic.SetTerrainNodeHeight(posX-1,posY-1,Z-_deep) Logic.SetTerrainNodeHeight(posX+1,posY-1,Z-_deep) Logic.SetTerrainNodeHeight(posX-1,posY+1,Z-_deep) end end
Mordred
|
19.10.2010 16:49 |
@kritiker:
Also, die Funktion hat einige Sicherheitsmaßnahmen.
Zwei Krater entstehen, aber sie können nur eine Bestimmte Tiefe ereichen --> Trifft nicht tiefer als das Terrain(eine riesige Stange erscheint)
Mit dem Wasser ist das ein Problem, aber da das Blocking nicht erneuert wird, kann man durch die entstandenen Pfützen durchlaufen.
Wenn die Kanone nichts trifft, dann gibts keinen Krater, deshalb wäre ich sehr dankbar für einen Tipp in diese Richtung.
Ich habs schon mit CreateEntity und CreateEffekt abfangen versucht, klappt aber nicht.
Nächster Post der (aktuelle) Code, gibts auch auf meinem Profil.
die-FREIE-enzyklopaedie
|
19.10.2010 12:05 |
Ich finde die Funktion super, kommt auch in meine Map
Flodder
|
18.10.2010 23:36 |
Zitat warrior1024:
>>Was passiert, wenn z.B. eine Belagerungskanone einen AoE macht und so 2 Einheiten trifft? Dann wird der Trigger zweimal aufgerufen und es entstehen 2 Krater.<<
wie jetzt?
im umkehrschluss bedeutet das ja, dass die Kanonen !gar keinen! Krater erzeugen, wenn sie keine Einheit treffen, oder hab ich das falsch verstanden, Mordred?
DAS wäre m.E, aber nicht mehr realistisch für Kanoneneinschläge. Einschläge sind Einschläge und zwar auch dann, wenn sie nichts treffen!
Flodder
|
18.10.2010 22:54 |
Ansich keine schlechte Idee Mordred. Sowas ist aber mit Vorsicht zu verwenden.
Warum? Darum:
"reissen" die Kanonen Löcher in Terrain, wo der Grundwasserpegel relativ hoch ist und stehen dort gerade auch noch "spielentscheidende" Figuren, saufen die entweder ab, oder stehen in einem blocking! Das wiederum könnte später zu Abstrüzen führen.
Ich will damit nur sagen, dass man etliches bedenken muss, bevor man vor hat, die Funktion zu veröffentlichen.
Also vorsicht mit sowas.
warrior1024
|
18.10.2010 22:45 |
Da ich mir den Code schon angesehen habe(Siehe Mordred´s Profil), habe ich einen Kritikpunkt:
Was passiert, wenn z.B. eine Belagerungskanone einen AoE macht und so 2 Einheiten trifft? Dann wird der Trigger zweimal aufgerufen und es entstehen 2 Krater.
Ansonsten reife Leistung!
Ivoleon
|
18.10.2010 21:55 |
cool, schreib den code mal dazu.
@legende
ja, ein ziemlich großer bolzen der brennt und explodiert.
-wenn mans ganz genau nimmt
Ivoleon
Legende
|
18.10.2010 21:41 |
als kleine Anregung:
Könnte man dazu noch eine Bodenverfärbung machen?
Etwas dunkler wie vorher...
klasse, 10Punkte!
würde den ballistaturm aber zu den kleinen zäheln, ist ja nur ein Pfeil/Bolzen...
fighty
|
18.10.2010 20:55 |
Wow! Imponierend die Detailtreue bei der Waffenwirkung.