DVS_Battle

» Settlers Map Source Forums » Siedler DEdK Script Forum » DVS_Battle

Pages: 1 2 Next page

Zedeg
#1
10-04-2015 22:21
Posts: 428

DVS_Battle

Da es mit den SCV 2.0 neue Möglichkeiten zur Veränderung von Entitäten gibt, habe ich in Zusammenarbeit mit Kantelo DVS_Battle entworfen.
Im Gegensatz zu bisherigen Attributsänderungen werden die richtigen Werte einer Entität wirklich verändert und nicht nur simuliert.

Vorteile
- die Anzahl der Gefolgsleute veränderbar
- der Sichtradius veränderbar
- alte Kampfskripte weiterhin problemlos verwendbar (DVS_Battle ist eher als Ergänzung zu sehen)
- Rechenaufwand nur bei Veränderung der Werte, nicht bei Verwendung (!)
- es muss immer nur der Wert bestimmt werden, der verändert werden soll (man muss also nicht alle Werte auf einmal verändern)

Nachteile
- Änderungen erst ca. eine Sekunde nach Aufruf wirksam; Mehrfachaufrufe innerhalb dieser Sekunde unproblematisch. (Aber mit einem simplen GUI-Hack braucht sowas doch kein Spieler zu erfahren, nicht wahr? )
- nicht alle Funktionen sind für alle Entitäten benutzbar

Hier ist die Dokumentation der Funktionen, eigentliche Funktion untenstehend (gründlich durchlesen ):

--[[
    DVS_Battle
    Version 1.1
    Script by Zedeg and Kantelo

    Mit diesen Komfort-Funktionen ist es möglich, folgende (Kampf-)Eigenschaften einer speziellen Entität direkt zu verändern:
    - Schaden
    - Rüstung
    - maximale Anzahl des Gefolges
    - Sichtradius
    - Regenerationspunkte

    Zudem kann folgende Kampfeigenschaft eines Entitätentyps verändert werden:
    - maximale Lebensenergie
    - Geschwindigkeit der Regeneration

    Folgende Funktionen werden benötigt:

    Funktion    : DVS_Battle_SetUp
    Beschreibung: Muss vor allem anderen als Callback der InitAdressEntity aufgerufen werden; leitet alles nötige ein.

    Funktion    : DVS_Battle_GUIAction_RestartMap_New
    Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.

    Funktion    : DVS_Battle_MainWindow_LoadGame_DoLoadGame_New
    Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.

    Funktion    : DVS_Battle_QuitGame_New
    Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.

    Funktion    : DVS_Battle_QuitApplication_New
    Beschreibung: Wird automatisch angerufen; setzt einige Änderungen zurück.

    Funktion    : DVS_Battle_ReloadAttributes
    Beschreibung: Muss in der InitPlayerColorMapping aufgerufen werden; setzt nach Laden die Attribute wieder.

    Funktion    : DVS_Battle_ResetMaxHealth
    Beschreibung: Wird automatisch aufgerufen; setzt die maximale Lebensenergie zurück.

    Funktion    : DVS_Battle_SetOrigHealth
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die maximale Lebensenergie zurück.

    Funktion    : DVS_Battle_ResetHealingSeconds
    Beschreibung: Wird automatisch aufgerufen; setzt die Geschwindigkeit der Regeneration zurück.

    Funktion    : DVS_Battle_SetOrigSeconds
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Geschwindigkeit der Regeneration zurück.

    Funktion    : DVS_Battle_AddDamage
    Beschreibung: Erhöht den Schaden einer Entität.
    Parameter   : Held, Hauptmann oder Soldat (number), zugefügter Schaden (number)

    Funktion    : DVS_Battle_SetDamage
    Beschreibung: Setzt den Schaden einer Entität.
    Parameter   : Held, Hauptmann oder Soldat (number), Schaden (number)

    Funktion    : DVS_Battle_ChangeDamage
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit den Schaden.

    Funktion    : DVS_Battle_AddArmour
    Beschreibung: Erhöht die Rüstung einer Entität.
    Parameter   : Held oder Hauptmann (number), zugefügte Rüstung (number)
    Hinweis     : Die Rüstung des Hauptmannes wird automatisch auf die Gefolgsleute übertragen.

    Funktion    : DVS_Battle_SetArmour
    Beschreibung: Setzt die Rüstung einer Entität.
    Parameter   : Hauptmann oder Soldat (number), Rüstung (number)
    Hinweis     : Die Rüstung des Hauptmannes wird automatisch auf die Gefolgsleute übertragen.

    Funktion    : DVS_Battle_ChangeArmour
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Rüstung.

    Funktion    : DVS_Battle_AddMaxSoldiers
    Beschreibung: Erhöht die Gruppenstärke.
    Parameter   : Hauptmann (number), zugefügte Gruppenstärke (number)

    Funktion    : DVS_Battle_SetMaxSoldiers
    Beschreibung: Setzt die Gruppenstärke.
    Parameter   : Hauptmann (number), Gruppenstärke (number)

    Funktion    : DVS_Battle_ChangeMaxSoldiers
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Gruppenstärke.

    Funktion    : DVS_Battle_AddExploration
    Beschreibung: Erhöht den Sichtradius.
    Parameter   : Held, Hauptmann oder Soldat (number), zugefügte Sichtweite (number)

    Funktion    : DVS_Battle_SetExploration
    Beschreibung: Setzt den Sichtradius.
    Parameter   : Held, Hauptmann oder Soldat (number), Sichtweite (number)

    Funktion    : DVS_Battle_ChangeExploration
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit den Sichtradius.

    Funktion    : DVS_Battle_AddHealingPoints
    Beschreibung: Erhöht die Regenerationspunkte.
    Parameter   : Held oder Hauptmann (number), zugefügte Regenerationspunkte (number)
    Hinweis     : Ihr solltet sichergehen, dass die veränderten Einheiten bereits einmal verwundet wurden, wenn diese Funktion aufgerufen wurde.
                  Um sicher zu gehen, ruft mindestens einmal vorher DVS_Battle_SetHealingPoints für die zu verändernde Einheiten auf.

    Funktion    : DVS_Battle_SetHealingPoints
    Beschreibung: Setzt die Regenerationspunkte.
    Parameter   : Held oder Hauptmann (number), Regenerationspunkte (number)

    Funktion    : DVS_Battle_ChangeHealingPoints
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Regenerationspunkte.

    Funktion    : DVS_Battle_AddMaxHealth
    Beschreibung: Erhöht die maximale Lebensenergie.
    Parameter   : Heldtyp oder Hauptmanntyp (number oder string), zugefügte Lebensenergie (number)
    Hinweis     : Die maximale Lebensenergie wird für alle Entitäten des gleichen Typs übernommen.

    Funktion    : DVS_Battle_SetMaxHealth
    Beschreibung: Setzt die maximale Lebensenergie.
    Parameter   : Heldtyp oder Hauptmanntyp (number oder string), Lebensenergie (number)
    Hinweis     : Die maximale Lebensenergie wird für alle Entitäten des gleichen Typs übernommen.

    Funktion    : DVS_Battle_ChangeMaxHealth
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die maximale Lebensenergie.

    Funktion    : DVS_Battle_AddHealingSeconds
    Beschreibung: Erhöht die Geschwindigkeit der Regeneration.
    Parameter   : Heldtyp oder Hauptmanntyp (number oder string), zugefügte Sekunden (number)
    Hinweis     : Die Geschwindigkeit der Regeneration wird für alle Entitäten des gleichen Typs übernommen.

    Funktion    : DVS_Battle_SetHealingSeconds
    Beschreibung: Setzt die Geschwindigkeit der Regeneration.
    Parameter   : Heldtyp oder Hauptmanntyp (number oder string), Sekunden (number)
    Hinweis     : Die Geschwindigkeit der Regeneration wird für alle Entitäten des gleichen Typs übernommen.

    Funktion    : DVS_Battle_ChangeHealingSeconds
    Beschreibung: Wird automatisch aufgerufen; setzt in Wirklichkeit die Sekunden.

    Funktion    : DVS_Battle_ClearUnnecessaryPointer
    Beschreibung: Wird automatisch aufgerufen; leitet die Pointer um.

    In die InitPlayerColorMapping kommt folgender Aufruf:
    if AdressEntity then
        InitAdressEntity(DVS_BattleMemory.AdressEntity, DVS_Battle_ReloadAttributes)
    end

    Es werden zudem die SCV 2.0 benötigt!
    [url]http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum/SCV2-19696.htm[/url]
--]]



Hinweis Nr. 1: Technologien haben nach Veränderung eines Wertes keinen Einfluss mehr auf die Entität, sofern sie für diesen Wert zuständig ist. Das muss also manuell gemacht werden!

Hinweis Nr. 2: Ergänzte Funktionen stehen hier. (Kommen morgen oder übermorgen erst )

____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

This posting has been edited by Zedeg: 22-08-2015 at 03:23.

Zedeg
#2
10-04-2015 22:22
Posts: 428

Funktionen

Version 1.1
Version 1.2 (gelöscht)

____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

This posting has been edited by Zedeg: 04-12-2015 at 23:27.

totalwarANGEL
#3
11-04-2015 11:09
Posts: 2123

Meine erste Frage ist natürlich, ob und wie man das auf S6 übertragen kann.

____________________
Die Welt ist arschlochförmig und wir leben in der Mitte.

Kantelo
#4
11-04-2015 13:16
Posts: 357

Leider basiert das immer noch alles auf dem Pointer bei 67, wie ich dir schonmla geschrieben habe
Also im Moment sehe ich da keine Möglichkeit

Peter-FS
#5
26-07-2015 20:28
Posts: 1086

DVS_Battle - komm nicht klar

Leider komm ich mit der Beschreibung nicht ganz klar, bzw. es funkt. nicht. Fehlermeldung: InitAdressEntity zuerst ausführen.
Also bisher habe ich folgendes gemacht.

1. In die IPCM (nehme an InitPlayerColorMapping ist gemeint ) kommt folgender Aufruf:

if AdressEntity then
        InitAdressEntity(DVS_BattleMemory.AdressEntity, DVS_Battle_ReloadAttributes)
end


2. Benötige die SCV2.0-Funktionen.lua
Aufruf im Script:

Script.Load( Folders.MapTools.."SCV2.0-Funktionen.lua" )


3. DVS_Battle_SetUp() Aufruf in der FMA?
- muss ich in der Funktion schon Werte eintragen?
- oder reicht später z.B. DVS_Battle_AddMaxHealth(Entities.PU_Hero3, 2000)

4. Welche Funktionen benötige ich noch? BigNum, Float2Int (wo bekomme ich die)

Bitte um Unterstützung
Danke

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

Peter-FS
#6
26-07-2015 21:29
Posts: 1086

Fehlermeldung

Bin inzwischen ein bisschen weiter und bekomme diese Fehlermeldung beim Aufruf DVS_Battle_AddMaxHealth
3219: attempt to index global `DVS_BattleMemory' (a nil value)

Was ich bereits habe:
SCV2.0-Funktionen.lua und SCV-Pointerfunktionen.lua ist eingebunden und der Aufruf InitAdressEntity("sheep1",DVS_Battle_SetUp) in der FMA ist denke ich auch OK.

Welche Werte sind in DVS_Battle_SetUp() wichtig bzw. unbedingt nötig. Diese 3 habe ich ausgefüllt.
- AdressEntity = "PU_Hero3",
- NpcId = 8,
- SpawnPoint = "DVS_Battle_SpawnPoint", = eine Scripting Entity auf der Map

Ändern der MaxHealth später mit
DVS_Battle_AddMaxHealth(Entities.PU_Hero3, 2000)

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

mcb
#7
26-07-2015 22:31
Posts: 1472

AdressEntity musst du auf "sheep1" setzen.
Hast du die BigNum schon? Wenn nicht: http://b0bby.tk/s5hook.html
Die Fehlermeldung kommt davon, dass du erst etwas ändern kannst, nachdem alles initialisiert ist.
Also das hier in die FMA:

InitAdressEntity("sheep1", function()
   DVS_Battle_SetUp()
   -- hier die Wertänderungen
end)

Zedeg
#8
26-07-2015 23:52
Posts: 428

Das so viele Probleme haben, hätt' ich echt nicht gedacht. Naja, Motiy fand diese Erklärung ausreichend.

Posted by PN an Motiy:

Beispielmap gibt es nicht, aber erklären kann ich es dir (sofern mich mein Gedächtnis nach dieser immer noch andauernden Maperpause nicht trügt):
1. Du lädst dir die SCV 2.0 von hier herunter und fügst sie ein.
2. In die FMA kommt nun folgendes

InitAdressEntity("AdressEntity", DVS_Battle_SetUp)

"AdressEntity" ist ein Skriptname einer Entität. Diese muss von ANFANG AN BIS ZU JEDWEDEM ENDE DER MAP EXISTIEREN! Erstelle am besten bei X/Y=5/5 ein neutrales Schaf oder NSC. DVS_Battle_SetUp wird zirka eine Sekunde nach dem Aufruf als Callback aufgerufen. Von daher sollten die DVS_Battle-Funktionen mit zur Sicherheit drei bis fünf Sekunden Abstand zum Mapstart aufgerufen werden. Wenn ich mich recht entsinne, kann man diese Vorsichtsmaßnahme nach dem Laden eines Spielstandes weglassen.
3. Bei

function DVS_Battle_SetUp()
    assert(type(AdressEntity) == "number", "Battle_SetUp:ERROR! Please call \"InitAdressEntity\" before!")
    DVS_BattleMemory  = {

kommt folgendes:
- AdressEntity: kennste ja
- NpcId&SpawnPoint: bei einigen Funktionen werden Soldaten bei Spawnpoint erstellt. Da diese nicht sterben dürfen, muss die NpcId eine von niemanden angreifbaren KI sein.
Ansonsten: Finger weg von den Angaben!
4. Das war's.

Beispiele:
1. Hauptmann X' Schaden wird auf 20 gesetzt, der Schaden von Soldat Y um 3 verringert:

DVS_Battle_SetDamage(GetID"X", 20)
DVS_Battle_AddDamage(GetID"Y", -3)

2. Hauptmann X' Rüstung wird auf 15 gesetzt. Die Rüstung von Soldat Y geht leider auch auf 15. Blödes Siedler.

DVS_Battle_AddArmour(GetID"X", 15)

3. Hauptmann X darf zwei Soldaten mehr befehligen.

DVS_Battle_AddMaxSoldiers(GetID"X", 2)

4. Soldat Y darf 150,5 m weit sehen.

DVS_Battle_SetExploration(GetID"Y", 150.5)

5. Held Z darf 15 Punkte pro Zeitabschnitt regenerieren (war glaube ich bei zwei oder drei Sekunden bei ,,zivilisierten´´ Einheiten).

DVS_Battle_SetHealingPoints(GetID"Z", 15)

6. Nebelvolkhauptmann N soll 3 Punkte mehr pro Zeitabschnitt regenerieren.
- um addhp zu verwenden, sollte zuvor sethp auferufen werden, sonst funktioniert es eventuell nicht
- das Nebelvolk regeneriert alle zehn Sekunden, bedeutend langsamer als alle anderen Einheiten

DVS_Battle_SetHealingPoints(GetID"N", 1, 11) --kann natürlich auch hier schon auf vier gesetzt werden
--später verändern wir sie
DVS_Battle_AddHealingPoints(GetID"N", 3, 11)

7. Alle Bastardschwertkämpfer bekommen 50 Lebensenergiepunkte spendiert.

DVS_Battle_AddMaxHealth("PU_LeaderSword4", 50)



LG Zedeg



____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

Peter-FS
#9
27-07-2015 06:53
Posts: 1086

Beschreibung

Ist eine super Funktion, nur die Beschreibung ist nicht so klar.

Um eine Comfort Funktion zum Laufen zu bringen, sind 4 Stunden meiner Meinung nach zu viel. Copy & Paste, ein paar kleine Anpassungen und fertig, max. eine halbe Stunde.
Es läuft inzwischen, aber so sollte es nicht sein. Anfänger haben da gar keine Chance (siehe Husky).

Was fehlt:
1. Die zusätzlichen Funktionen: Float2Int, BigNum.lua
- da würde ein Link reichen, um sie leichter zu finden
- für Anfänger, wie man sie einbindet
2. Strukturierte Beschreibung von A-Z

Warum es bei mir nicht lief.
1. Hatte die BigNum.lua nicht (findet man im Forum nicht)
2. Die Callback Funktion von InitAdressEntity wurde nicht ausgeführt, da sv67 immer 0 lieferte, obwohl die Entity vorhanden ist (Aufruf in der FMA).
Habe mir den Wert sv67 nach dem ersten Briefing noch mal per Message anzeigen lassen und siehe da es ging. Jetzt lese ich den Wert einmal aus, bevor ich den MaxHealth Wert ändere.

Hat jemand eine Erklärung dafür?

Danke für eure Hilfe und die Funktion natürlich

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

Kantelo
#10
27-07-2015 10:14
Posts: 357

Das mit dem sv67 = 0 ist in der Tat der Schwachpunkt bei dem Ganzen, da es zwar in 90% aller Fälle sofort klappt, aber speziell bei großen Karten meine ich, manchmal auch erst nach 10 sek, 30 sek oder gar nicht

Aber es gibt einen 100% Weg und der ist entweder, dass man die Kamera kurz auf die AdressEntity richtet; oder dass sich die AdressEntity im Bereich der aufgedeckten Karte befindet wenn ich das noch richtig in Erinnerung habe.

Dann gibt sv67 garantiert den Pointer zurück und zwar unmittelbar.

Frag mich nicht warum, aber damit klappt es!

Und tut mir leid, dass das alles so unübersichtlich ist, vielleicht sollten wir das wirklich nochmal irgendwo zusammentragen.

Peter-FS
#11
27-07-2015 11:27
Posts: 1086

Das verwendete Schäfchen stand im dunkeln, jetzt habe ich einen NPC genommen, der auch stehen bleibt. Wenn man's weiß, kein Problem.
Mich wundert nur, dass bisher noch niemand Probleme hatte, oder liegt es an mir (zu doooof )?

Finde die Funktion genial und sehr interessant! Danke dafür!

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

mcb
#12
27-07-2015 12:15
Posts: 1472

Liegt vielleicht daran, das es nicht so oft verwendet wird. Für mich ist z.B. nur die Änderung der Soldatenanzahl interessant. Alles andere mache ich per Trigger.
Was ich momentan sehr hilfreich finde, ist die Animation zu setzen. Wenn ich jetzt Darios Angstfähigkeit auslöse, muss ich nicht mehr alle Entities in der Nähe löschen und neu erstellen. Vielleicht krieg ich damit auch Helias bekehren (per Script ausgelöst) ordentlich hin.

Kantelo
#13
27-07-2015 13:56
Posts: 357

Posted by Peter-FS:

Mich wundert nur, dass bisher noch niemand Probleme hatte, oder liegt es an mir (zu doooof )?



Außer mcb und dir ist mir jetzt niemand bekannt der die Funktionen verwendet.

HuskyWelpe85
#14
27-07-2015 14:02
Posts: 134

Ich würd es

Wen ich etwas erfahrener wär würde ich sie auch verwenden allerdings ist sie mir noch zu kompliziert da war selbst der Mauerbau einfacher.

LG Husky

____________________
Kein Meister fällt vom Himmel,also bitte ich immer um Konstruktive gute und Nette Kommentare .

mcb
#15
27-07-2015 15:12
Posts: 1472

Posted by Kantelo:
Das mit dem sv67 = 0 ist in der Tat der Schwachpunkt bei dem Ganzen, da es zwar in 90% aller Fälle sofort klappt, aber speziell bei großen Karten meine ich, manchmal auch erst nach 10 sek, 30 sek oder gar nicht

Aber es gibt einen 100% Weg und der ist entweder, dass man die Kamera kurz auf die AdressEntity richtet; oder dass sich die AdressEntity im Bereich der aufgedeckten Karte befindet wenn ich das noch richtig in Erinnerung habe.

Dann gibt sv67 garantiert den Pointer zurück und zwar unmittelbar.

Frag mich nicht warum, aber damit klappt es!



Bei meiner Testmap braucht der S5Hook kaum Zeit, InitAdressEntity aber ein paar Minuten...
Hab mir jetzt ein Ladescript geschrieben, dass die Position aufdeckt, dorthinspringt, auf S5Hook und InitAdressEntity wartet und dann zurückspringt und die Position wieder verdeckt. Mit nur Kamera oder nur Sichtbar bringt das keine Vorteile, Beides zusammen funktioniert aber.

yoq
#16
28-07-2015 21:11
Posts: 91

Posted by mcb:
Bei meiner Testmap braucht der S5Hook kaum Zeit, InitAdressEntity aber ein paar Minuten...


Was spricht dagegen, das Entity einfach wie bei S5Hook per Skript zu erzeugen? Ich kann nur vermuten warum sich das mit einem in die Karte eingebauten Entity anders verhält, ich schätze mal das BlueByte hier Ressourcen sparen wollte, schließlich musste man damals mit einigen 100MB Ram auskommen

____________________
S5 & S6: Lua Script Debugger (Thread) | bbaTool
S5: S5Hook (Thread) | S5 GUI Editor | S5 Grafikupgrade + nVidia fix | Win10 Creators Update

This posting has been edited by yoq: 28-07-2015 at 21:49.

Peter-FS
#17
28-07-2016 10:11
Posts: 1086

Test

Hi,
habt ihr die Fehler in meiner aktuellen Map verfolgt? Meiner Meinung nach kann das eigentlich nur an SCV bzw. DVS_Battle liegen.
Bei mir läuft alles einwandfrei, hab allerdings noch einen XP Rechner und die Fehler scheinen alle bei den nächsten Windows Systemen aufzutreten. Könnte mal einer die Map im LuaDebugger laufen lassen und prüfen wo der Fehler auftritt.
Ich kann so nichts finden da alles läuft.

Gruß Peter

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

Peter-FS
#18
28-07-2016 10:42
Posts: 1086

Habe gerade noch mal etwas gefunden.

Beim Starten der Map benutze ich in InitAdressEntity ( "sheep_init" ). Ist ein Schaf, das im ersten Briefing zu sehen ist, funktioniert.

In der Function DVS_Battle_SetUp ist folgende Zeile.

AdressEntity  = "john", --muss manuell eingetragen werden; wird von DVS_Battle nach jedem Laden in InitAdressEntity aufgerufen 



Dort habe ich den Begleiter von Robin drin, ist immer auf der Map und hat die PlayerId 8. Das Schaf ist zwar auch noch da, steht aber vermutlich im dunkeln, deshalb habe ich John genommen.

Was passiert in DVD_Battle bzw. SCV, wenn John mit SetPosition bewegt wird? Er hat ja dann eine andere Id. Kann das die Fehler auslösen, da die AdressEntity fehlt?

Ich benutze für den Transport der Truppen die SetPosition Funktion und setzte anschließend die Stärke, Verteidigung und Sterne mit DVS und SCV.

Gruß Peter

____________________
Man muss nicht alles wissen, man muss nur wissen wo es steht!

mcb
#19
28-07-2016 11:14
Posts: 1472

Zumindest bei InitAdresEntity wird nur die Id gespeichert, ich würde mich also nicht wirklich darauf verlassen. Das das Schaf im Dunkeln steht sorgt nur dafür, das das ganze länger lädt, sollte also besser sein, wenn du das Schaf nimmst. (Oder du stellst das ganze auf den neuen S5Hook um, da sparst du dir die ganzen Probleme )

PS: Du nutzt noch XP? Ich halte das für ziemlich leichtsinnig, da keine Sicherheitslücken mehr gefixt werden.

Zedeg
#20
28-07-2016 13:22
Posts: 428

Warum hast du überhaupt in DVS_Battle eine andere AdressEntitiy als in der FMA?
Und natürlich sorgt das SetPosition für Probleme. Wie soll Logic.SetEntityScriptingValue bei einer nicht mehr existenten Id wirken? Ich schließe mich mcb an: Bleib beim Schaf!

____________________
Journalisten erkundigen sich bei Wissenschaftlern meist nicht nach Grundlagen, sondern eher nach Ergebnissen und Folgerungen. Das erklärt womöglich auch, warum sich Forschungsberichte in den Medien so häufig als feststehende Erkenntnisse lesen, nicht aber als Ideen, Entdeckungen oder Indizien, um die es sich genau genommen in den meisten Fällen handelt. -Axel Bojowski

Play4FuN
#21
10-03-2018 23:50
Posts: 703

*ausgrab*

Nette Sache, die ihr da zusammengebastelt habt

Leider ist die "Anleitung" tatäschlich nicht soo easy - mittlerweile habe ich es zum Laufen gebracht, habe aber noch ein paar Unsicherheiten:

1) Darf dieser SpawnPoint auch irgendwo im schwarzen Bereich liegen? Also da, wo der Spieler nix merkt?

2) Darf das Schaf "sheep1" unsichtbar gemacht werden?

3) Rüstung usw durch Techs verändern muss manuell gemacht werden, ok - funktionieren aber Sachen wie die Reichweite (Schützen) bzw. Geschwindigkeit (bettertrainingarchery usw ...) noch nach wie vor?

4) Wie wichtig ist es, dass das Schaf bzw die NpcId zu allen Spielern neutral ist / kann man das irgendwie umgehen? Muss das Schaf auch diese NpcId haben? (habe aus Gewohnheit für alles 8 genommen)

5) DVS_Battle_SetMaxRange ist die Angriffsreichweite? Oder die Erkennungsreichweite für feindliche Einheiten?

6) Für 3) und 5) -> gilt das nur, wenn Veränderungen vorgenommen werden? Oder generell, sobald DVS Battle insgesammt genutzt wird?

7) Wenn ich das richtig gelesen habe, funktionieren dann Logic Funktionen wie GetEntityArmor usw noch ganz normal, also mit den manipulierten Werten, als wären es echte? Man könnte also in einem oh hurt event bestimmten Einheitentypen gegen andere Typen mehr/weniger Schaden machen lassen?

Funktioniert das Laden einer DVS-Map aus einer "normalen" Map heraus und umgekehrt völlig ohne Probleme?

9) Ist das ganze im Multiplayer einsetzbar?

Sorry, falls ich einzelne Antworten irgendo überlesen haben sollte - habe bei den vielen Threads ein wenig den Überblick verloren.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

mcb
#22
11-03-2018 00:16
Posts: 1472

Die meisten funktionen hab ich wohl in mcbEMan neu geschrieben (macht das ganze deutlich schneller und einfacher zu bedienen). Wenn ich eine übersehen hab, sag mir Bescheid, mal sehen, was sich da machen lässt.

Zu deinen Fragen:
1) Außerhalb der runden Kartenbegrenzung ja (aber in der eckigen, wird auch echt schwer, da auserhalb zu landen).
2) Keine Ahnung, sichtbar sollte aber den Pointer schneller updaten.
3) Musst du für alles selbst machen, das du änderst. (Wenn du Schaden änderst musst du Schaden selbst machen, aber Verteidigung nicht.)
4) Es sollte halt nicht von irgendjemandem angegriffen werden
5) Angriffsreichweite
6) Nur für Veränderungen
7) Die Funktionen brauchen leider etwas zu lange um den Wert zu ändern.
Mir sind noch keine Probleme aufgefallen. (Musst halt nur nach dem laden alle Veränderungen neu machen)
9) Keine Ahnung, sollte aber funktionieren wenn alles synchron ist.

Play4FuN
#23
11-03-2018 08:44
Posts: 703

EntityManipulation

Ok, hab mir deine EinheitenManipulation mal angeschaut.
Habe es jetzt zum Laufen gebracht, ohne Änderungen vorzunehmen.

Ich starte das ganze nur mit s5HookLoader.init() und habe dabei

metatableFix.lua
TriggerFix.lua
commcbscv.lua
S5HookLoader.lua
S5Hook.lua


in der Reihenfolge mit Script.Load einegebunden.

Beim Start bekomme ich diese Meldung im Debugger:
Log: "mcbEMan: framework2 or s5HookLoader not found, no automatic eType fix/reset!"

Da ich den Loader verwende (denke ich ) ... was meinst du mit dem Framework2? Das .Net? Ein eigenes (nirgends bei dir was dazu gefunden)?

Problem ist für mich jetzt halt, dass ich nicht weißt, ob ich trotz verwendung all der Helfer noch alles beim Beenden resetten muss und was ich im GameLoaded noch zu tun habe.

Danke auf jeden Fall schon mal für die Hilfe

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

mcb
#24
11-03-2018 15:01
Posts: 1472

framework2 ist ein Script, das dafür sorgt, das es keine crashes gibt, wenn ich die Framework funktionen benutze. Außerdem hab ich solche Sachen wie einen MapEndCallback eingebaut (der kann hier verwendet werden). Das Ganze ist aber optional für mcbEMan.

Die Reihenfolge sollte eher so sein:

metatableFix.lua
TriggerFix.lua
S5Hook.lua
S5HookLoader.lua
commcbscv.lua


(Wenn ein Script eine dependency hat, muss die vorher geladen werden)

Ich lade gleich mal eine aktualisierte Version hoch, da hab ich noch nen Bug gefixt, der Sachen die eigentlich ohne framework2 automatisch funktionieren sollten nicht automatisch ausgeführt hat.

Resetten musst du nur Sachen die Entitytypen verädern. (Deshegen sind die Funktionen im Kommentar oben in 3 Teile eingeteilt, je nachdem ob sie resettet werden müssen oder savegamesicher sind)

Play4FuN
#25
17-03-2018 14:46
Posts: 703

Die Veränderungen bei einzelnen Einheiten, ist die an die ID gebunden? Also wäre ein ChangePlayer auf so eine veränderte Einheit problematisch?

Weiß eigentlich irgendwer, wie (genau) das Schadenssystem im Original funktioniert? Also die Berechnung des zugefügten Schadens anhand von Angriffsschaden und Rüstung.

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

Pages: 1 2 Next page

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum