I recompiled .psa file with UnPSA Tool and re-exported .psk file with MilkShape3D.
Then I united skeletal player and bot classes with my character classes.
After, I compiled everything with Umake and got "0 warnings".
The animations did not even compile into .u file, because the file is too small(
with anims it must have weight near 2mb, while it's only near 100 kb).
And I have no options to import .psk, .psa files into editor.
But the more scarier, I'm getting this, when I'm trying to open my compiled .u package:
- pffffffffffffffffffffff.png (16.77 KiB) Viewed 1599 times
The code I have:
Player's class ".uc"
Code: Select all
class ONIKonokoFsrv extends Male
abstract;
function PlayDying(name DamageType, vector HitLoc)
{
BaseEyeHeight = Default.BaseEyeHeight;
PlayDyingSound();
if ( DamageType == 'Suicided' )
{
PlayAnim('Dead8',, 0.1);
return;
}
// check for head hit
if ( (DamageType == 'Decapitated') && !class'GameInfo'.Default.bLowGore )
{
PlayDecap();
return;
}
if ( FRand() < 0.15 )
{
PlayAnim('Dead2',,0.1);
return;
}
// check for big hit
if ( (Velocity.Z > 250) && (FRand() < 0.75) )
{
if ( FRand() < 0.5 )
PlayAnim('Dead1',,0.1);
else
PlayAnim('Dead11',, 0.1);
return;
}
// check for repeater death
if ( (Health > -10) && ((DamageType == 'shot') || (DamageType == 'zapped')) )
{
PlayAnim('Dead9',, 0.1);
return;
}
if ( (HitLoc.Z - Location.Z > 0.7 * CollisionHeight) && !class'GameInfo'.Default.bLowGore )
{
if ( FRand() < 0.5 )
PlayDecap();
else
PlayAnim('Dead7',, 0.1);
return;
}
if ( Region.Zone.bWaterZone || (FRand() < 0.5) ) //then hit in front or back
PlayAnim('Dead3',, 0.1);
else
PlayAnim('Dead8',, 0.1);
}
function PlayDecap()
{
PlayAnim('Dead4',, 0.1);
}
function PlayGutHit(float tweentime)
{
if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') )
{
if (FRand() < 0.5)
TweenAnim('LeftHit', tweentime);
else
TweenAnim('RightHit', tweentime);
}
else if ( FRand() < 0.6 )
TweenAnim('GutHit', tweentime);
else
TweenAnim('Dead8', tweentime);
}
function PlayHeadHit(float tweentime)
{
if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead7') )
TweenAnim('GutHit', tweentime);
else if ( FRand() < 0.6 )
TweenAnim('HeadHit', tweentime);
else
TweenAnim('Dead7', tweentime);
}
function PlayLeftHit(float tweentime)
{
if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead9') )
TweenAnim('GutHit', tweentime);
else if ( FRand() < 0.6 )
TweenAnim('LeftHit', tweentime);
else
TweenAnim('Dead9', tweentime);
}
function PlayRightHit(float tweentime)
{
if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead1') )
TweenAnim('GutHit', tweentime);
else if ( FRand() < 0.6 )
TweenAnim('RightHit', tweentime);
else
TweenAnim('Dead1', tweentime);
}
#exec MESH MODELIMPORT MESH=KonokoFsrv MODELFILE=Models/KonokoFsrv.psk
#exec MESH LODPARAMS MESH=KonokoFsrv HYSTERESIS=0.00 STRENGTH=0.01 MINVERTS=10.00 MORPH=0.30 ZDISP=0.00
#exec MESH ORIGIN MESH=KonokoFsrv X=0 Y=0 Z=0 YAW=0 PITCH=0 ROLL=0
#exec ANIM IMPORT ANIM=SoldierAnim ANIMFILE=Models/SoldierAnim.psa COMPRESS=1
#exec MESHMAP SCALE MESHMAP=KonokoFsrv X=1.0 Y=1.0 Z=1.0
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Breath1L STARTFRAME=0 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Breath2L STARTFRAME=24 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=CockGun STARTFRAME=48 NUMFRAMES=14 RATE=14
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=CockGunL STARTFRAME=62 NUMFRAMES=29 RATE=29
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DeathEnd STARTFRAME=91 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DeathEnd3 STARTFRAME=92 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Duck STARTFRAME=93 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DuckWlkL STARTFRAME=117 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DuckWlkS STARTFRAME=141 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=GutHit STARTFRAME=165 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=HeadHit STARTFRAME=166 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=JumpLgFr STARTFRAME=167 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Look STARTFRAME=168 NUMFRAMES=22 RATE=22
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=StillFrRp STARTFRAME=190 NUMFRAMES=11 RATE=11
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=StillLgFr STARTFRAME=201 NUMFRAMES=12 RATE=12
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=StillSmFr STARTFRAME=213 NUMFRAMES=12 RATE=12
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=AimDnLg STARTFRAME=225 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=AimUpSm STARTFRAME=226 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=AimDnSm STARTFRAME=227 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Fighter STARTFRAME=228 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=TurnLg STARTFRAME=229 NUMFRAMES=3 RATE=3
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=TurnSm STARTFRAME=232 NUMFRAMES=5 RATE=5
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Flip STARTFRAME=237 NUMFRAMES=19 RATE=19
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=LeftHit STARTFRAME=256 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=RightHit STARTFRAME=257 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=SwimLg STARTFRAME=258 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=SwimSm STARTFRAME=276 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=TreadLg STARTFRAME=294 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=TreadSm STARTFRAME=312 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Wave STARTFRAME=330 NUMFRAMES=21 RATE=21
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Thrust STARTFRAME=351 NUMFRAMES=54 RATE=54
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Taunt1 STARTFRAME=405 NUMFRAMES=22 RATE=22
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Victory1 STARTFRAME=427 NUMFRAMES=21 RATE=21
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DeathEnd2 STARTFRAME=448 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Chat2 STARTFRAME=449 NUMFRAMES=41 RATE=41
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Chat1 STARTFRAME=490 NUMFRAMES=40 RATE=40
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead1 STARTFRAME=530 NUMFRAMES=20 RATE=20
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead2 STARTFRAME=550 NUMFRAMES=17 RATE=17
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead3 STARTFRAME=567 NUMFRAMES=22 RATE=22
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead4 STARTFRAME=589 NUMFRAMES=20 RATE=20
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead5 STARTFRAME=609 NUMFRAMES=29 RATE=29
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead7 STARTFRAME=638 NUMFRAMES=29 RATE=29
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead8 STARTFRAME=667 NUMFRAMES=29 RATE=29
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead9 STARTFRAME=696 NUMFRAMES=12 RATE=12
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead9B STARTFRAME=708 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Breath1 STARTFRAME=732 NUMFRAMES=25 RATE=25
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Breath2 STARTFRAME=757 NUMFRAMES=21 RATE=21
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=WalkLg STARTFRAME=778 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=WalkLgFr STARTFRAME=802 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=WalkSm STARTFRAME=826 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=WalkSmFr STARTFRAME=850 NUMFRAMES=24 RATE=24
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=RunLg STARTFRAME=874 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=RunLgFr STARTFRAME=892 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=RunSm STARTFRAME=910 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=RunSmFr STARTFRAME=928 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=StrafeL STARTFRAME=946 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=StrafeR STARTFRAME=964 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=BackRun STARTFRAME=982 NUMFRAMES=18 RATE=18
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=AimUpLg STARTFRAME=1000 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Dead11 STARTFRAME=1001 NUMFRAMES=26 RATE=26
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DodgeB STARTFRAME=1027 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DodgeF STARTFRAME=1028 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DodgeL STARTFRAME=1029 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=DodgeR STARTFRAME=1030 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=JumpSmFr STARTFRAME=1031 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=LandLgFr STARTFRAME=1032 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=LandSmFr STARTFRAME=1033 NUMFRAMES=1 RATE=1
#exec ANIM SEQUENCE ANIM=SoldierAnim SEQ=Challenge STARTFRAME=1034 NUMFRAMES=43 RATE=43
#exec ANIM DIGEST ANIM=SoldierAnim
#exec MESH DEFAULTANIM MESH=KonokoFsrv ANIM=SoldierAnim
// *** ANIMATION NOTIFIES ***
#exec ANIM DIGEST ANIM=SoldierAnim VERBOSE
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunLG TIME=0.25 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunLG TIME=0.75 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunLGFR TIME=0.25 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunLGFR TIME=0.75 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunSM TIME=0.25 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunSM TIME=0.75 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunSMFR TIME=0.25 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=RunSMFR TIME=0.75 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=StrafeL TIME=0.25 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=StrafeL TIME=0.75 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=StrafeR TIME=0.25 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=StrafeR TIME=0.75 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=BackRun TIME=0.25 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=BackRun TIME=0.75 FUNCTION=PlayFootStep
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead1 TIME=0.7 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead2 TIME=0.9 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead3 TIME=0.45 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead4 TIME=0.6 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead7 TIME=0.7 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead8 TIME=0.7 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead9B TIME=0.8 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Dead11 TIME=0.57 FUNCTION=LandThump
#exec ANIM NOTIFY ANIM=SoldierAnim SEQ=Challenge TIME=0.35 FUNCTION=PlayLoudStep
//#exec TEXTURE IMPORT NAME=KonokoFsrvDoll FILE=TEXTURES\KonokoFsrvSDoll.PCX GROUP="Icons" MIPS=OFF
//#exec TEXTURE IMPORT NAME=KonokoFsrvBelt FILE=TEXTURES\KonokoFsrvSBelt.PCX GROUP="Icons" MIPS=OFF
defaultproperties
{
Skin=Texture'KonokoFsrvSkins.KonF'
MenuName="ONI KonokoFsrv"
Mesh=SkeletalMesh'ONIKonokoFsrv.KonokoFsrv'
CarcassType=Class'UnrealShare.HumanCarcass'
}
Bot's class ".uc"
Code: Select all
class ONIKonokoFsrvBot extends HumanBot
abstract;
function PlayVictoryDance()
{
local float decision;
decision = FRand();
if ( decision < 0.4 )
PlayAnim('Victory1',0.7, 0.2);
else if ( decision < 0.7 )
PlayAnim('Thrust',0.7, 0.2);
else
PlayAnim('Taunt1',0.7, 0.2);
}
function PlayDying(name DamageType, vector HitLoc)
{
BaseEyeHeight = Default.BaseEyeHeight;
PlayDyingSound();
if ( DamageType == 'Suicided' )
{
PlayAnim('Dead8',, 0.1);
return;
}
// check for head hit
if ( (DamageType == 'Decapitated') && !Level.Game.bVeryLowGore )
{
PlayDecap();
return;
}
if ( FRand() < 0.15 )
{
PlayAnim('Dead2',,0.1);
return;
}
// check for big hit
if ( (Velocity.Z > 250) && (FRand() < 0.75) )
{
if ( FRand() < 0.5 )
PlayAnim('Dead1',,0.1);
else
PlayAnim('Dead11',, 0.1);
return;
}
// check for repeater death
if ( (Health > -10) && ((DamageType == 'shot') || (DamageType == 'zapped')) )
{
PlayAnim('Dead9',, 0.1);
return;
}
if ( (HitLoc.Z - Location.Z > 0.7 * CollisionHeight) && !Level.Game.bVeryLowGore )
{
if ( FRand() < 0.5 )
PlayDecap();
else
PlayAnim('Dead7',, 0.1);
return;
}
if ( Region.Zone.bWaterZone || (FRand() < 0.5) ) //then hit in front or back
PlayAnim('Dead3',, 0.1);
else
PlayAnim('Dead8',, 0.1);
}
function PlayDecap()
{
PlayAnim('Dead4',, 0.1);
}
function PlayGutHit(float tweentime)
{
if ( (AnimSequence == 'GutHit') || (AnimSequence == 'Dead2') )
{
if (FRand() < 0.5)
TweenAnim('LeftHit', tweentime);
else
TweenAnim('RightHit', tweentime);
}
else if ( FRand() < 0.6 )
TweenAnim('GutHit', tweentime);
else
TweenAnim('Dead8', tweentime);
}
function PlayHeadHit(float tweentime)
{
if ( (AnimSequence == 'HeadHit') || (AnimSequence == 'Dead7') )
TweenAnim('GutHit', tweentime);
else if ( FRand() < 0.6 )
TweenAnim('HeadHit', tweentime);
else
TweenAnim('Dead7', tweentime);
}
function PlayLeftHit(float tweentime)
{
if ( (AnimSequence == 'LeftHit') || (AnimSequence == 'Dead9') )
TweenAnim('GutHit', tweentime);
else if ( FRand() < 0.6 )
TweenAnim('LeftHit', tweentime);
else
TweenAnim('Dead9', tweentime);
}
function PlayRightHit(float tweentime)
{
if ( (AnimSequence == 'RightHit') || (AnimSequence == 'Dead1') )
TweenAnim('GutHit', tweentime);
else if ( FRand() < 0.6 )
TweenAnim('RightHit', tweentime);
else
TweenAnim('Dead1', tweentime);
}
defaultproperties
{
Skin=Texture'KonokoFsrvSkins.KonF'
MenuName="ONI KonokoFsrv"
Mesh=SkeletalMesh'ONIKonokoFsrv.KonokoFsrv'
CarcassType=Class'UnrealShare.HumanCarcass'
}