warrior1024
|
15.02.2010 16:46 1142 mal angesehen |
Wenn man gewisse Funktionen überschreibt...
Durch einen 45 Zeilen langen Hack habe ich das Bevölkerungslimit verändert, die Lebenspunkte erhöht, die Angriffskraft leicht erhöht und noch die Verteidigungskraft.
Wenn Interesse besteht, poste ich den Code als Comfortfunktion(muss aber noch entwickelt werden). Wer selbst eine Lösung finden will, kann versuchen, das Superfighterscript zu verstehen. Wenn ihr es einmal verstanden habt, ist es immer sehr ähnlich.
Auf das Bild klicken, um es in Originalgröße zu sehen (146,99 KB)
Kommentare
fighty
|
22.11.2015 18:25 |
Nimmt dieser Mod nicht den Reiz des Spiels, ähnlich wie die Cheats?
warrior1024
|
15.02.2010 21:16 |
Das hab ich auch bei einem Testlauf bemerkt und das Prinzip war schon richtig(alles was Logic im Namen hat und passen könnte umschreiben), aber ich habe vergessen, das Event hier umzuschreiben:
LOGIC_EVENT_ENTITY_HURT_ENTITY
Und mein Entwurf bringt noch nicht viel:
LOGIC_EVENT_ENTITY_HURT_ENTITY = function() local Angreifer = Event.GetEntityID1 local Opfer = Event.GetEntityID2 local AngreiferName = GetEntityName(Angreifer) local OpferName = GetEntityName(Opfer) local Opfer2 = Opfer if (AngreiferName == "Miliz") then if (Logic.IsLeader(Opfer) == 1)then Opfer2 = Logic.GetSoldiersAttachedToLeader(Opfer) end end local DMG = Logic.GetEntityDamage(Angreifer) - Logic.GetEntityArmor(Opfer2) Logic.HurtEntity(Opfer2, DMG) end
Mordred
|
15.02.2010 20:57 |
Hab gerade Damage getestet(angriff), ich glaub, dass
das auch nur für die GUI gilt. Erec war dannach genauso
stark wie davor, obwohl er eigentlich um das 100-fache
stärker sein sollte. Aber angezeigt(GUI) war das richtige.
Mordred
|
15.02.2010 20:48 |
Ist schon toll geworden!
Klappt das alles auch ohne
Debug-meldung?
Muss ich unbedingt mal ausprobieren!
totalwarANGEL
|
15.02.2010 18:01 |
quote=warrior1024] Aber kein Grund zur Sorge, die Logic-Funktionen bieten noch viele Funktionen zum modden![/quote]
kann ich nur bestätigen
warrior1024
|
15.02.2010 17:47 |
Ich hab mal zum Kundschafter noch eine Burg gesetzt und du hast Recht, ich kann keine LE´s kaufen. Aber kein Grund zur Sorge, die Logic-Funktionen bieten noch viele Funktionen zum modden!
Katmai300
Gast |
15.02.2010 17:37 |
Ich habe den Einheiten-Limit Hack ausprobiert und zumindest bei mir (1.06 Extra2) kommt bei dem Versuch das Einheitenlimit, das es ohne Hack geben müsste, zu überschreiten die Meldung, ich hätte keinen Platz mehr. Wenn ich dann per Script höher gehe, kommt zwar keine Meldung, aber Einheiten kann ich auch nicht mehr kaufen.
Ich vermute einfach mal, das die von dir gehackte Funktion, nur das GUI beeinflusst, aber das eigentliche Einheitenlinit fest im C++-Code verdrahtet und somit ohne Modifikation der exe nicht manipulierbar ist. Einige der erfahrenen Leute haben das aber, glaube ich, auch schon mal gesagt.
Allerdings könnte man mithilfe dieses Hacks die GUIActions der Buttons abfangen und z. B. die Leibis dann einfach vor die Burg stellen und damit das Einheitenlimit zwar nicht entfernen, aber doch zumindest, so wie bei Noigis Mod "Im tiefen Mittelalter", umgehen.
Die anderen Hacks teste ich wahrscheinlich noch später.
warrior1024
|
15.02.2010 17:00 |
Ok, an dem HP-Hack muss noch etwas geändert werden(im Moment wird eine gehackte Einheit unverwundbar), aber hier ist der Code, noch nicht als Comfort:
function Init_Mod() --Siedlungslimit_HACK GetPlayerAttractionLimit_Orig = Logic.GetPlayerAttractionLimit Logic.GetPlayerAttractionLimit = function(_player) if (_player == 1) then return 321 end return GetPlayerAttractionLimit_Orig(_player) end --Rüstungs_HACK GetEntityArmor_Orig = Logic.GetEntityArmor Logic.GetEntityArmor = function(_id) local ArmorHackName = GetEntityName(_id) if (ArmorHackName == "Miliz") then return 2048 end return GetEntityArmor_Orig(_id) end --Schadens_HACK GetEntityDamage_Orig = Logic.GetEntityDamage Logic.GetEntityDamage = function(_id) local DamageHackName = GetEntityName(_id) if (DamageHackName == "Miliz") then return 4096 end return GetEntityDamage_Orig(_id) end --Max_LP_HACK GetEntityMaxHealth_Orig = Logic.GetEntityMaxHealth Logic.GetEntityMaxHealth = function(_id) local LPHackName = GetEntityName(_id) if (LPHackName == "Miliz") then return 8192 end return GetEntityMaxHealth_Orig(_id) end --LP_Hack GetEntityHealth_Orig = Logic.GetEntityHealth Logic.GetEntityHealth = function(_id) local LP2HackName = GetEntityName(_id) if (LP2HackName == "Miliz") then return 8192 end return GetEntityHealth_Orig(_id) end end
Die Einheit, die "Miliz" heißt, bekommt die Eigenschaften(HP, Angriff, Deff) des Kundschafters. Zusätzlich wird das Bevölkerungslimit von Spieler1 unabhängig von DZs auf 321 gesetzt. Der Spieler 1 ist dann unabhängig von DZs.
Aufgerufen wird das ganze mit:
Init_Mod()
Wladimir
|
15.02.2010 16:51 |
Mich interessiert vorallem die Erhöhung der Lebenspunkte, sowie Angriff und Verteidigung. Haste klasse gemacht!
Wär schön, wenn du es posten würdest.