Scripting Values

» Settlers Map Source Forums » Siedler DEdK Script Forum » Scripting Values

Pages: 1

bobby
#1
29-03-2014 23:41
Posts: 393

Scripting Values

Da in diesem Thread das Thema Scripting Values aufgegriffen wurde wobei es dort eigentlich nicht hinpasst mach ich hier mal einen neuen Thread auf.

Ich hab mir die Funktionen mal angeschaut und etwas herumgespielt und einige Dinge herausgefunden.
So wie ich das sehe könnte die Funktion

Logic.SetEntityScriptingValue

ein direkter Zugriff auf den Arbeitsspeicher sein.

In der Liste? sind nur integers abgespeichert was also bedeutet das die floats wie auch der Scale umkonvertiert wurden.
Nach einigem herumprobieren fand ich heraus das -33 der Speicher für den Scale ist. Um ihn zu setzen muss der gewünschte float Wert aber wieder in einen integer umgewandelt werden.

Ich habe mal alles gesammelt, einige Comfort-Funktionen geschrieben und in dieses Lua-File gepackt.
Enthalten sind:
- Die Funktionen zum konvertieren von float zu integer und zurück
- eine Liste mit Scripting Values die ich herausgefunden habe
- einige Comfort-Funktionen, unter anderem eine um Entitäten zu skalieren

____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

totalwarANGEL
#2
29-03-2014 23:59
Posts: 2123

Posted by bobby:
Da in diesem Thread das Thema Scripting Values aufgegriffen wurde wobei es dort eigentlich nicht hinpasst mach ich hier mal einen neuen Thread auf.

Ich hab mir die Funktionen mal angeschaut und etwas herumgespielt und einige Dinge herausgefunden.
So wie ich das sehe könnte die Funktion

Logic.SetEntityScriptingValue

ein direkter Zugriff auf den Arbeitsspeicher sein.

In der Liste? sind nur integers abgespeichert was also bedeutet das die floats wie auch der Scale umkonvertiert wurden.
Nach einigem herumprobieren fand ich heraus das -33 der Speicher für den Scale ist. Um ihn zu setzen muss der gewünschte float Wert aber wieder in einen integer umgewandelt werden.

Ich habe mal alles gesammelt, einige Comfort-Funktionen geschrieben und in dieses Lua-File gepackt.
Enthalten sind:
- Die Funktionen zum konvertieren von float zu integer und zurück
- eine Liste mit Scripting Values die ich herausgefunden habe
- einige Comfort-Funktionen, unter anderem eine um Entitäten zu skalieren



Du bist mein Held...

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

Kantelo
#3
30-03-2014 00:15
Posts: 357

Wow, genial
Das ist ja mal wieder ein riesen Fortschritt.
Fehlt nur noch die Z-Koordinate.

Edit: -5 liefert übrigens die Entity Sichtweite zurück. Einstellen lässt die sich aber trotzdem nicht.

This posting has been edited by Kantelo: 30-03-2014 at 01:29.

Play4FuN
#4
30-03-2014 09:42
Posts: 704

nevermind...

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

This posting has been edited by Play4FuN: 10-03-2018 at 22:25.

Play4FuN
#5
30-03-2014 10:05
Posts: 704

Ich habe in der Kategorie Funscreens ein Screen dazu hochgeladen. Danke bobby! Genial gemacht. Sogar ohne dafür in die bbas eingreifen zu müssen. Leider klappt das mit dem blocking nicht und auch einige Animationen scheinen dann verbuggt zu sen (z.B. wenn sich Ari tarnt)...

Aber das wird sicher mind. in Briefings zur Geltung kommen

Hier das Bild:
http://www.siedler-maps.de/screenshots/screenshot-3409.htm

____________________
LG Play4FuN

Siedler DEdK Mapping + Scripting Tutorials

mcb
#6
30-03-2014 12:22
Posts: 1472

Genial!
Ich hab auch schon rausgefunden, wie man ein Entity "Teleportiert":
Zuerst die neue Zielposition mit Logic.SetScriptingValue setzen und dann noch ein Move zum neuen Ziel.
Die Position ist allerdings auch als int gespeichert, muss also erst umgewandelt werden.

Kantelo
#7
30-03-2014 22:57
Posts: 357

Ich habe es jetzt endlich geschafft nur per Skript ein XS_Ambient zu erstellen. Wenn es jemand braucht, die Comfortfunktion ist:

function CreateAmbient(_type,_pos,_size,_volume)
local pos = GetPosition(_pos)
local ID = Logic.CreateEntity(Entities.XS_Ambient,pos.X,pos.Y,0,1)
Logic.SetEntityScriptingValue(ID,-33,Float2Int(_size))
Logic.SetEntityScriptingValue(ID,-8,_volume)
Logic.SetEntityScriptingValue(ID,9,_type)
return ID
end 


Die verschiedenen Ambient Typen sind:

AS_Forest = 1
AS_UHU = 2
AS_Campfire = 3 
AS_ForestEuropeDayTime = 4 
AS_SwampFrogs = 5 
AS_WaterLakeShore = 6 
AS_WaterfallBig = 7 
AS_WindMountain = 8 
AS_WaterRiverSmall = 9 
AS_Crickets = 10
AS_Desertwind = 11
AS_Leaves = 12
AS_Moorbird = 13
AS_MoorBranches = 14 
AS_MoorBubbles = 15 
AS_FogPeopleDrums = 16
AS_ClickeringPebbles = 17 
AS_RushingWaterNormal = 18 
AS_RushingWaterDontFreeze = 19 
AS_Seagulls = 20
AS_Sheep = 21
AS_Wolves = 22



Allerdings braucht man soetwas ja nur in ganz speziellen Fällen

Leider sind ansonsten viele Werte nicht setzbar.
Zum Beispiel sind auf 29 die Experience Points, aber man kann sie nicht setzen.
Oder auf 51 der Auto-Attack Range oder auf 57 die Maximale Gesundheit einer Entity.

AdeBont
#8
30-03-2014 23:20
Posts: 666

Might Logic.SetEntityScriptingValue be usefull to hide or change the text above an entity when the mouse pointer is over it?

____________________
AdB
---------------------------------
Now faith is the substance of things hoped for,
the evidence of things not seen.
Heb 11:1

bobby
#9
30-03-2014 23:30
Posts: 393

Posted by AdeBont:
Might Logic.SetEntityScriptingValue be usefull to hide or change the text above an entity when the mouse pointer is over it?


I've already discovered how to hide it. But changing it?
Maybe, but then you'll have to find the string as integers and that would be quite hard.

Posted by Kantelo:
Leider sind ansonsten viele Werte nicht setzbar.
Zum Beispiel sind auf 29 die Experience Points, aber man kann sie nicht setzen.
Oder auf 51 der Auto-Attack Range oder auf 57 die Maximale Gesundheit einer Entity.


Soweit ich weiß ändert sich 57 sobald man -8 ändert also kann es nicht die maximale Gesundheit sein.
57 ist als float gespeichert und -8 als integer.
Wenn man 57 ändert geschieht nichts...
Davon ausgehend könnte man spekulieren das es z.B. den Damage Wert auch noch einmal als veränderbarer integer geben könnte.

____________________
Tools und Verbesserungen für Siedler: settlers.pro

Neues:
Cutscene Editor
LuaDebugger v0.5.2

Peter-FS
#10
31-03-2014 09:49
Posts: 1086

Tolle Geschichte, gefällt mir. Habe zwar noch keine Idee wo ich das evtl. nutzen kann, aber kommt bestimmt noch.

Evtl. kann man damit jetzt auch einen Dieb zum Platzieren der Bombe bringen.

Mit der Taskanweisung (glaube es war PlaceBomb) hat er das nur gemacht, wenn er vorher schon mal diese Anweisung durch den Spieler bekommen hatte. Ich denke es fehlt dem Dieb nur die Angabe der Position und er weiß dann nicht wohin mit dem Ding.

Vielleicht hat ja jemand Zeit und Lust das herauszufinden.

Ansonsten, großes Kompliment!

Gruß Peter

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

Pages: 1

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

Impressum