debugmo.de
Ok, ok, es mag so anmuten, als ob ich hier Schleichwerbung für
LucasArts machen würde, da es mal wieder um Grim Fandango gehen soll.
Nur diesmal geht es nicht um das (zugegeben grandiose) Gameplay, sondern, um
es kurz zu machen, darum, daß Half-Life nicht erste und einzige Spiel
ist, welches prädestiniert ist zum "modden"..
Ich stieß, als ich mit SCUMM Revisited in den Innereien des
Spieles herumstocherte, in der Hilfe, in der auch erklärt wird, wie das
SCUMM-Dateiformat aufgebaut ist - interessant zu lesen, auf folgende
Passage:
"Writing your own Grim Fandango scripts
Yep! You can write your own scripts using the GrimE engine. In general, it
seems that GRIME is very likely to support the making of games by normal
users. It has a preference for non-bundled files on the harddrive when
choosing which files to use for a game. In order to go explore in the world
of GRIME scripting, you need to do at least two things:
Learn the Lua language."
Vollständige Dokumentation findet man unter
lua.org.
"Tweak your settings a bit.
The second part is the easiest: Open the registry, find the Grim Fandango
entry (usually placed at HKEY_LOCAL_MACHINE/Software/LucasArts Entertainment
Company LLC/Grim Fandango/v1.0). Inside this key, add a new string value.
Name it "TextAllowed" and give it the value "TRUE". Now, make a directory
within the Grim directory on your harddrive called "Scripts". Inside this
directory you can place scripts to be run by the engine. By default, GrimE
loads the script _system.lua first, and starts executing the function
BOOT()."
Hiermit..
GRIME Script Functions
Following is a total list of script function names and identifiers defined
by GRIME. In addition to these are the internal Lua functions and
identifiers. Notice that Lua is case sensitive.
GRIME functions
EnumerateVideoDevices
Enumerate3DDevices
SetHardwareState
SetVideoDevices
GetVideoDevices
Is3DHardwareEnabled
PurgePrimitiveQueue
KillPrimitive
ChangePrimitive
DrawRectangle
DrawPolygon
DrawLine
SetOffscreenTextPos
SetEmergencyFont
LocalizeString
GetTextCharPosition
GetTranslationMode
SetTranslationMode
GetColorComponents
MakeColor
PurgeText
ExpireText
BlastText
KillTextObject
ChangeTextObject
GetFontDimensions
GetTextObjectDimensions
MakeTextObject
PrintLine
SayLine
GetActorTalkColor
SetActorTalkColor
SetSayLineDefaults
IsMessageGoing
GetSmushLength
GetKeyLength
GetMemoryUsage
RestoreIMuse
SaveIMuse
SetWalkSystemFadeTime
GetDiskFreeSpace
SetActorInvClipNode
NukeResources
GetShrinkPos
UnShrinkBoxes
ShrinkBoxes
RestoreCache
BuildCache
ResetTextures
DumpMemoryLog
JustLoaded
ActorVoiceIs3D
GetTickCount
ActorPuckOrient
TEST
GetSoundParameters
SetSoundParameters
AttachToResources
DetachFromResources
FindFileOnAnyCD
GetTextSpeed
SetTextSpeed
GetSaveGameData
SubmitSaveGameData
BlastRect
BlastImage
FreeImage
GetImage
GetSaveGameImage
SaveScreen
ScreenShot
TextFileGetLine
TextFileGetLineCount
IrisClear
IrisComplete
IrisUp
IrisDown
FadeInChore
FadeOutChore
SetActorClipPlane
SetActorClipActive
HardwareAccelerated
ResReport
RestoreCacheRect
CacheRect
MarkDirtyRect
SetActorCollisionScale
SetActorCollisionMode
FlushControls
ActorToClean
SendObjectToFront
SendObjectToBack
SetObjectType
FreeObjectState
NewObjectState
SetActorShadowValid
AddShadowPlane
KillActorShadows
ActorDistToShadowPlane
SetActiveShadow
SetActorShadowPoint
SetActorShadowPlane
ActorShadow
ActivateActorShadow
SetShadowColor
GetSpeechMode
SetSpeechMode
Display
CleanBuffer
DimRegion
DimScreen
ForceRefresh
RenderModeUser
SetActorConstrain
SetActorWalkDominate
SetGamma
UnloadBundle
LoadBundle
ImGetSoundCacheSize
ImGetMemoryFootprint
ImSetVoiceEffect
vfx
ImResume
ImPause
ImSetCuePoint
ImSetAttribute
ImSetSequence
ImSetState
ImStopVoice
ImStartVoice
ImSetMusicVol
ImGetMusicVol
ImSetVoiceVol
ImGetVoiceVol
ImSetSfxVol
ImGetSfxVol
ImSetMasterVol
ImGetMasterVol
ImFadeParam
ImSetParam
ImGetParam
quiet
ImStopAllSounds
ImStopSound
play
ImStartSound
ImStopRecording
ImStartRecording
LightMgrSetChange
LightMgrShutdown
LightMgrStartup
PointLightAt
GetLightIntensity
SetLightIntensity
GetLightAngles
SetLightAngles
GetLightRotation
SetLightRotation
GetLightPosition
SetLightPosition
GetLightType
SetLightType
IsLightOn
TurnLightOn
FindLight
SetAmbientLight
GetAngleBetweenActors
GetAngleBetweenVectors
SnapToPlane
PerSecond
TurnActorTo
PointActorAt
GetCameraLookVector
SetCameraRoll
GetCameraRoll
SetCameraFOV
GetCameraFOV
SetCameraInterest
GetCameraInterest
SetCameraPosition
GetCameraPosition
RotateVector
SetMemoryUsage
GetPhysicalBytes
LoadCostume
PopActorCostume
PushActorCostume
PrintActorCostumes
GetCurrentScript
SpewShutdown
SpewStartup
PreRender
MakeSectorActive
IsSectorActive
GetSectorOppositeEdge
GetSectorVertices
ReadRegistryValue
WriteRegistryValue
QueryDialog
InputDialog
FileFindDispose
FileFindNext
FileFindFirst
SetSoundPosition
IsSoundPlaying
PlaySoundAttached
PlaySoundAt
PlaySound
IsMoviePlaying
PauseMovie
StopMovie
StartMovie
IsFullscreenMoviePlaying
StartFullscreenMovie
PreviousSetup
NextSetup
GetCurrentSetup
MakeCurrentSetup
UnLockSet
LockSet
MakeCurrentSet
PrintDebug
PrintWarning
PrintError
PrintMessage
GetControlState
DisableControl
EnableControl
UnlockCostume
LockCostume
UnlockSound
LockSound
UnLockFont
LockFont
EnableDebugKeys
FunctionName
ScreenToWorld
WorldToScreen
GetActorCostumeDepth
GetActorLoopingChores
GetActorChores
SetActorChoreLooping
IsActorResting
IsActorChoring
IsActorMoving
CompleteActorChore
StopActorChore
PlayActorChoreLooping
PlayActorChore
IsActorTurning
SetActorRoll
SetActorPitch
SetActorRot
GetActorRot
TurnActor
GetPointSector
IsPointInSector
GetActorSector
IsActorInSector
SetActorFrustrumCull
ShutUpActor
SetActorFollowBoxes
SetActorVisibility
SetActorHead
GetCameraActor
GetVisibleThings
CanActorSee
GetActorLookRate
SetActorLookRate
IsActorLooking
ActorLookAt
WalkActorToInterest
WalkActorToAvoiding
WalkActorTo
DriveActorTo
WalkActorForward
WalkActorVector
GetClippedPos
PutActorInSet
PutActorAt
PutActorAtOrigin
PutActorAtInterest
SetActorOffsetYaw
SetActorReflection
GetActorYawToPoint
GetActorPuckVector
GetActorRect
GetActorPos
LoadActor
SetSelectedActor
GetActorTurnRate
SetActorTurnRate
GetActorWalkRate
SetActorWalkRate
SetActorTalkChore
SetActorMumblechore
SetActorRestChore
SetActorTurnChores
SetActorWalkChore
GetActorNodeLocation
SetActorTimeScale
GetActorTimeScale
SetActorScale
GetActorScale
SetActorCostume
GetActorCostume
SetActorColormap
Save
Load
CheckForFile
SearchForFileOrSwapCDs
EngineDisplay
EngineResume
EnginePause
..(und dem Spiel oder gar nur der Demo) sollte man also in der Lage sein,
sein eigenes kleines Grafik-Adventure herzustellen, oder aber einen Remix
des Original-Spiels zu machen (Auch in GF steckt bestimmt eine Menge nicht
verwendetes Material.) oder, oder, oder..
Wenn man denn wollte, könnte, usw. :(
Zum Herumspielen hat es bei mir immerhin gereicht, siehe Bild. Und das
möchte ich auch allen LeserInnen ans Herz legen:
Holt die alten LucasArts-Adventures aus dem Schrank, saugt euch von
mix’n’mojo, unter Tools,
SCUMM Revisited, den SCUMM-File-Explorer, und geht damit ein wenig
auf Entdeckungsreise - Und immer dran denken: Das X markiert die Stelle.
Unter der oben genannten URL sind auch noch andere "Lucas Hacks"
aufgeführt, unter anderem die GF-Developer-Keys, mit denen man auch
noch einiges anstellen kann.
Die Rache des King Ko..ähh..Calavera - Obacht, ihr
Tauben