Page 1 of 1
Model Skins
Posted: Wed Dec 26, 2007 16:29
by ChupaReaper
Basically, S_SKIN could work just like a MODELDEF only replacing each frame already defined; if any new frames are set (aren't set in the origional MODELDEF) they are ignored by GZDoom or an error report is spewed up.
So if someone wanted to replace a Player Class which uses multiple sprite names and a modeldefs, that someone could write up an alternative skin modeldef in an s_skin lump or a new lump like MDLSKIN (which doesn't have to be set inside a wad file).
Posted: Wed Jan 09, 2008 20:54
by StrikerMan780
This can already be done. Look at my code for a Quake2 Guy Skin:
Marine would be replace with "DoomPlayer", I had a custom player class called "Marine" in this. You can define multiple cases of the class, and make various skin models.
Code: Select all
Model Marine
{
Path "Models/players"
Model 0 "q2male.md2"
Skin 0 "grunt.png"
Scale 1.4 1.4 1.4
ZOffset 28.0
Model 1 "weapon.md2"
Skin 1 "weapon.pcx"
Frame Q2MM A 0 "run2"
Frame Q2MM A 1 "run2"
Frame Q2MM B 0 "run3"
Frame Q2MM B 1 "run3"
Frame Q2MM C 0 "run5"
Frame Q2MM C 1 "run5"
Frame Q2MM D 0 "run6"
Frame Q2MM D 1 "run6"
Frame Q2MM E 0 "attack1"
Frame Q2MM E 1 "attack1"
Frame Q2MM F 0 "attack2"
Frame Q2MM F 1 "attack2"
Frame Q2MM G 0 "pain101"
Frame Q2MM G 1 "pain1"
Frame Q2MM H 0 "death101"
Frame Q2MM H 1 "death1"
Frame Q2MM I 0 "death102"
Frame Q2MM I 1 "death1"
Frame Q2MM J 0 "death103"
Frame Q2MM J 1 "death1"
Frame Q2MM K 0 "death104"
Frame Q2MM K 1 "death1"
Frame Q2MM L 0 "death105"
Frame Q2MM L 1 "death1"
Frame Q2MM M 0 "death106"
Frame Q2MM M 1 "death1"
Frame Q2MM N 0 "death106"
Frame Q2MM N 1 "death1"
}
Posted: Thu Jan 10, 2008 21:12
by ChupaReaper
So you make a seperate modeldef for a skin -not a subclass (using inheritance). If I were to do this:

ECORATE:
Code: Select all
Actor ZMarine : PlayerPawn replaces DoomPlayer
{
//Status
Tag "Marine"
Player.DisplayName "ZMarine"
Health 500
Player.MaxHealth 1000
PainChance 255
Speed 1
Player.RunHealth 50
Player.ForwardMove 1 1.5
Player.SideMove 1 1.5
Player.JumpZ 8
Radius 16
Height 64
Player.ViewHeight 38
Mass 100
Player.ColorRange 0 0
Player.ScoreIcon "Marine_Icon"
Player.InvulnerabilityMode "Reflective"
Player.SpawnClass "any"
Player.SoundClass "Marine"
//Offense
Player.StartItem "Fist"
RadiusDamageFactor 0.25
+windthrust
-dontsplash
+dontgib
-ghost
+thrughost
States
{
Spawn:
IDLE ABCD 4
loop
See:
MOVE ABCDEFGH 1
loop
Pain:
PAIN A 8
goto spawn
Melee:
MISL A 8
MISL B 8
goto spawn
Missile:
MISL AB 8
MISL C 8
goto spawn
Death:
DETH A 6
DETH B 6 A_PlayerScream
DETH CD 6
DETH E 6 A_NoBlocking
DETH F -1
stop
}
}
:MODELDEF: (For origional class)
Code: Select all
Model ZMarine
{
Model 0 "Marine.md2"
Skin 0 "Marine.png"
Model 1 "Marine_Weapon.md2"
Skin 1 "Marine_Weapon.png"
Scale 1.0 1.0 1.0
FrameIndex IDLE A 0 0 //Spawn
FrameIndex IDLE A 1 0
FrameIndex IDLE A 2 999
FrameIndex IDLE B 0 1
FrameIndex IDLE B 1 1
FrameIndex IDLE C 0 2
FrameIndex IDLE C 1 2
FrameIndex IDLE D 0 3
FrameIndex IDLE D 1 3
FrameIndex MOVE A 0 4 //Chase
FrameIndex MOVE A 1 4
FrameIndex MOVE B 0 5
FrameIndex MOVE B 1 5
FrameIndex MOVE C 0 6
FrameIndex MOVE C 1 6
FrameIndex MOVE D 0 7
FrameIndex MOVE D 1 7
FrameIndex MOVE E 0 8
FrameIndex MOVE E 1 8
FrameIndex MOVE F 0 9
FrameIndex MOVE F 1 9
FrameIndex MOVE G 0 10
FrameIndex MOVE G 1 10
FrameIndex MOVE H 0 11
FrameIndex MOVE H 1 11
FrameIndex PAIN A 0 12 //Pain
FrameIndex PAIN A 1 12
FrameIndex MISL A 0 13 //Missile
FrameIndex MISL A 1 13
FrameIndex MISL B 0 14
FrameIndex MISL B 1 14
FrameIndex DETH A 0 15 //Death
FrameIndex DETH A 1 15
FrameIndex DETH B 0 16
FrameIndex DETH B 1 16
FrameIndex DETH C 0 17
FrameIndex DETH C 1 17
FrameIndex DETH D 0 18
FrameIndex DETH D 1 18
FrameIndex DETH E 0 19
FrameIndex DETH E 1 19
FrameIndex DETH F 0 20
FrameIndex DETH F 1 20
}
Model ZMarine
{
Model 0 "Marine.md2"
Skin 0 "Marine.png"
Model 1 "Marine_Weapon.md2"
Skin 1 "Marine_Weapon.png"
Model 2 "Marine_Fire.md2"
Skin 2 "Marine_Fire.png"
Scale 1.0 1.0 1.0
FrameIndex MISL C 0 15 //Emit //Missile
FrameIndex MISL C 1 15
FrameIndex MISL C 2 0
}
Would this then work?:
:S_SKIN:
:MODELDEF: (For Class Skin)
Code: Select all
Model FatZMarine
{
Model 0 "FatMarine.md2"
Skin 0 "FatMarine.png"
Model 1 "FatMarine_Weapon.md2"
Skin 1 "FatMarine_Weapon.png"
Scale 1.0 1.0 1.0
FrameIndex IDLE A 0 0 //Spawn
FrameIndex IDLE A 1 0
FrameIndex IDLE A 2 999
FrameIndex IDLE B 0 1
FrameIndex IDLE B 1 1
FrameIndex IDLE C 0 2
FrameIndex IDLE C 1 2
FrameIndex IDLE D 0 3
FrameIndex IDLE D 1 3
FrameIndex MOVE A 0 4 //Chase
FrameIndex MOVE A 1 4
FrameIndex MOVE B 0 5
FrameIndex MOVE B 1 5
FrameIndex MOVE C 0 6
FrameIndex MOVE C 1 6
FrameIndex MOVE D 0 7
FrameIndex MOVE D 1 7
FrameIndex MOVE E 0 8
FrameIndex MOVE E 1 8
FrameIndex MOVE F 0 9
FrameIndex MOVE F 1 9
FrameIndex MOVE G 0 10
FrameIndex MOVE G 1 10
FrameIndex MOVE H 0 11
FrameIndex MOVE H 1 11
FrameIndex PAIN A 0 12 //Pain
FrameIndex PAIN A 1 12
FrameIndex MISL A 0 13 //Missile
FrameIndex MISL A 1 13
FrameIndex MISL B 0 14
FrameIndex MISL B 1 14
FrameIndex DETH A 0 15 //Death
FrameIndex DETH A 1 15
FrameIndex DETH B 0 16
FrameIndex DETH B 1 16
FrameIndex DETH C 0 17
FrameIndex DETH C 1 17
FrameIndex DETH D 0 18
FrameIndex DETH D 1 18
FrameIndex DETH E 0 19
FrameIndex DETH E 1 19
FrameIndex DETH F 0 20
FrameIndex DETH F 1 20
}
Model FatZMarine
{
Model 0 "FatMarine.md2"
Skin 0 "FatMarine.png"
Model 1 "FatMarine_Weapon.md2"
Skin 1 "FatMarine_Weapon.png"
Model 2 "FatMarine_Fire.md2"
Skin 2 "FatMarine_Fire.png"
Scale 1.0 1.0 1.0
FrameIndex MISL C 0 15 //Emit //Missile
FrameIndex MISL C 1 15
FrameIndex MISL C 2 0
}
Well that's my largest post yet! -I would test this myself but due to one's nvidia 7600 gs dying I have but a currupted screen with no directx/opengl support at all -I can't even play video files

but Bebo still works

!