Advertisement
loon4tic

Toontown Model Loader v1

Apr 10th, 2016
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 34.34 KB | None | 0 0
  1. from sys import argv
  2. from direct.directbase import DirectStart
  3. from direct.task import Task
  4. from direct.actor.Actor import Actor
  5. from direct.gui.DirectGui import *
  6. from pandac.PandaModules import *
  7. from direct.interval.IntervalGlobal import *
  8. from direct.showbase.InputStateGlobal import inputState
  9. from direct.controls.GravityWalker import GravityWalker
  10. from direct.gui.DirectGui import *
  11. from pandac.PandaModules import *
  12.  
  13.  
  14.  
  15. base.disableMouse()
  16.  
  17. legsAnimDict = {'right-hand-start': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_right-hand-start.bam', 'firehose': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_firehose.bam', 'rotateL-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_rotateL-putt.bam', 'slip-forward': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_slip-forward.bam', 'catch-eatnrun': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_eatnrun.bam', 'tickle': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_tickle.bam', 'water-gun': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_water-gun.bam', 'leverNeutral': 'phase_10/models/char/tt_a_chr_dgs_shorts_legs_leverNeutral.bam', 'swim': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_swim.bam', 'catch-run': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_gamerun.bam', 'sad-neutral': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_sad-neutral.bam', 'pet-loop': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_petloop.bam', 'jump-squat': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_jump-zstart.bam', 'wave': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_wave.bam', 'reel-neutral': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_reelneutral.bam', 'pole-neutral': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_poleneutral.bam', 'bank': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_jellybeanJar.bam', 'scientistGame': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_scientistGame.bam', 'right-hand': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_right-hand.bam', 'lookloop-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_lookloop-putt.bam', 'victory': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_victory-dance.bam', 'lose': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_lose.bam', 'cringe': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_cringe.bam', 'right': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_right.bam', 'headdown-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_headdown-putt.bam', 'conked': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_conked.bam', 'jump': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_jump.bam', 'into-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_into-putt.bam', 'fish-end': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_fishEND.bam', 'running-jump-land': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_leap_zend.bam', 'shrug': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_shrug.bam', 'sprinkle-dust': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_sprinkle-dust.bam', 'hold-bottle': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_hold-bottle.bam', 'takePhone': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_takePhone.bam', 'melt': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_melt.bam', 'pet-start': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_petin.bam', 'look-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_look-putt.bam', 'loop-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_loop-putt.bam', 'good-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_good-putt.bam', 'juggle': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_juggle.bam', 'run': 'phase_3/models/char/tt_a_chr_dgs_shorts_legs_run.bam', 'pushbutton': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_press-button.bam', 'sidestep-right': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_jump-back-right.bam', 'water': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_water.bam', 'right-point-start': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_right-point-start.bam', 'bad-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_bad-putt.bam', 'struggle': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_struggle.bam', 'running-jump': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_running-jump.bam', 'callPet': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_callPet.bam', 'throw': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_pie-throw.bam', 'catch-eatneutral': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_eat_neutral.bam', 'tug-o-war': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_tug-o-war.bam', 'bow': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_bow.bam', 'swing': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_swing.bam', 'climb': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_climb.bam', 'scientistWork': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_scientistWork.bam', 'think': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_think.bam', 'catch-intro-throw': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_gameThrow.bam', 'walk': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_walk.bam', 'down': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_down.bam', 'pole': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_pole.bam', 'periscope': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_periscope.bam', 'duck': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_duck.bam', 'curtsy': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_curtsy.bam', 'jump-land': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_jump-zend.bam', 'loop-dig': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_loop_dig.bam', 'angry': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_angry.bam', 'bored': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_bored.bam', 'swing-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_swing-putt.bam', 'pet-end': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_petend.bam', 'spit': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_spit.bam', 'right-point': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_right-point.bam', 'start-dig': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_into_dig.bam', 'castlong': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_castlong.bam', 'confused': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_confused.bam', 'neutral': 'phase_3/models/char/tt_a_chr_dgs_shorts_legs_neutral.bam', 'jump-idle': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_jump-zhang.bam', 'reel': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_reel.bam', 'slip-backward': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_slip-backward.bam', 'sound': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_shout.bam', 'sidestep-left': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_sidestep-left.bam', 'up': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_up.bam', 'fish-again': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_fishAGAIN.bam', 'cast': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_cast.bam', 'phoneBack': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_phoneBack.bam', 'phoneNeutral': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_phoneNeutral.bam', 'scientistJealous': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_scientistJealous.bam', 'battlecast': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_fish.bam', 'sit-start': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_intoSit.bam', 'toss': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_toss.bam', 'happy-dance': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_happy-dance.bam', 'running-jump-squat': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_leap_zstart.bam', 'teleport': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_teleport.bam', 'sit': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_sit.bam', 'sad-walk': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_losewalk.bam', 'give-props-start': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_give-props-start.bam', 'book': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_book.bam', 'running-jump-idle': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_leap_zhang.bam', 'scientistEmcee': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_scientistEmcee.bam', 'leverPull': 'phase_10/models/char/tt_a_chr_dgs_shorts_legs_leverPull.bam', 'tutorial-neutral': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_tutorial-neutral.bam', 'badloop-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_badloop-putt.bam', 'give-props': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_give-props.bam', 'hold-magnet': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_hold-magnet.bam', 'hypnotize': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_hypnotize.bam', 'left-point': 'phase_3.5/models/char/tt_a_chr_dgs_shorts_legs_left-point.bam', 'leverReach': 'phase_10/models/char/tt_a_chr_dgs_shorts_legs_leverReach.bam', 'feedPet': 'phase_5.5/models/char/tt_a_chr_dgs_shorts_legs_feedPet.bam', 'reel-H': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_reelH.bam', 'applause': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_applause.bam', 'smooch': 'phase_5/models/char/tt_a_chr_dgs_shorts_legs_smooch.bam', 'rotateR-putt': 'phase_6/models/char/tt_a_chr_dgs_shorts_legs_rotateR-putt.bam', 'fish-neutral': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_fishneutral.bam', 'push': 'phase_9/models/char/tt_a_chr_dgs_shorts_legs_push.bam', 'catch-neutral': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_gameneutral.bam', 'left': 'phase_4/models/char/tt_a_chr_dgs_shorts_legs_left.bam'}
  18.  
  19. torsoAnimDict = {'right-hand-start': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_right-hand-start.bam', 'firehose': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_firehose.bam', 'rotateL-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_rotateL-putt.bam', 'slip-forward': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_slip-forward.bam', 'catch-eatnrun': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_eatnrun.bam', 'tickle': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_tickle.bam', 'water-gun': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_water-gun.bam', 'leverNeutral': 'phase_10/models/char/tt_a_chr_dgl_shorts_torso_leverNeutral.bam', 'swim': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_swim.bam', 'catch-run': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_gamerun.bam', 'sad-neutral': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_sad-neutral.bam', 'pet-loop': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_petloop.bam', 'jump-squat': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_jump-zstart.bam', 'wave': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_wave.bam', 'reel-neutral': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_reelneutral.bam', 'pole-neutral': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_poleneutral.bam', 'bank': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_jellybeanJar.bam', 'scientistGame': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_scientistGame.bam', 'right-hand': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_right-hand.bam', 'lookloop-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_lookloop-putt.bam', 'victory': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_victory-dance.bam', 'lose': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_lose.bam', 'cringe': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_cringe.bam', 'right': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_right.bam', 'headdown-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_headdown-putt.bam', 'conked': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_conked.bam', 'jump': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_jump.bam', 'into-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_into-putt.bam', 'fish-end': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_fishEND.bam', 'running-jump-land': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_leap_zend.bam', 'shrug': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_shrug.bam', 'sprinkle-dust': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_sprinkle-dust.bam', 'hold-bottle': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_hold-bottle.bam', 'takePhone': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_takePhone.bam', 'melt': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_melt.bam', 'pet-start': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_petin.bam', 'look-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_look-putt.bam', 'loop-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_loop-putt.bam', 'good-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_good-putt.bam', 'juggle': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_juggle.bam', 'run': 'phase_3/models/char/tt_a_chr_dgl_shorts_torso_run.bam', 'pushbutton': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_press-button.bam', 'sidestep-right': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_jump-back-right.bam', 'water': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_water.bam', 'right-point-start': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_right-point-start.bam', 'bad-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_bad-putt.bam', 'struggle': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_struggle.bam', 'running-jump': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_running-jump.bam', 'callPet': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_callPet.bam', 'throw': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_pie-throw.bam', 'catch-eatneutral': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_eat_neutral.bam', 'tug-o-war': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_tug-o-war.bam', 'bow': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_bow.bam', 'swing': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_swing.bam', 'climb': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_climb.bam', 'scientistWork': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_scientistWork.bam', 'think': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_think.bam', 'catch-intro-throw': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_gameThrow.bam', 'walk': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_walk.bam', 'down': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_down.bam', 'pole': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_pole.bam', 'periscope': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_periscope.bam', 'duck': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_duck.bam', 'curtsy': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_curtsy.bam', 'jump-land': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_jump-zend.bam', 'loop-dig': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_loop_dig.bam', 'angry': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_angry.bam', 'bored': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_bored.bam', 'swing-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_swing-putt.bam', 'pet-end': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_petend.bam', 'spit': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_spit.bam', 'right-point': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_right-point.bam', 'start-dig': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_into_dig.bam', 'castlong': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_castlong.bam', 'confused': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_confused.bam', 'neutral': 'phase_3/models/char/tt_a_chr_dgl_shorts_torso_neutral.bam', 'jump-idle': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_jump-zhang.bam', 'reel': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_reel.bam', 'slip-backward': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_slip-backward.bam', 'sound': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_shout.bam', 'sidestep-left': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_sidestep-left.bam', 'up': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_up.bam', 'fish-again': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_fishAGAIN.bam', 'cast': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_cast.bam', 'phoneBack': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_phoneBack.bam', 'phoneNeutral': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_phoneNeutral.bam', 'scientistJealous': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_scientistJealous.bam', 'battlecast': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_fish.bam', 'sit-start': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_intoSit.bam', 'toss': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_toss.bam', 'happy-dance': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_happy-dance.bam', 'running-jump-squat': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_leap_zstart.bam', 'teleport': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_teleport.bam', 'sit': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_sit.bam', 'sad-walk': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_losewalk.bam', 'give-props-start': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_give-props-start.bam', 'book': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_book.bam', 'running-jump-idle': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_leap_zhang.bam', 'scientistEmcee': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_scientistEmcee.bam', 'leverPull': 'phase_10/models/char/tt_a_chr_dgl_shorts_torso_leverPull.bam', 'tutorial-neutral': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_tutorial-neutral.bam', 'badloop-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_badloop-putt.bam', 'give-props': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_give-props.bam', 'hold-magnet': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_hold-magnet.bam', 'hypnotize': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_hypnotize.bam', 'left-point': 'phase_3.5/models/char/tt_a_chr_dgl_shorts_torso_left-point.bam', 'leverReach': 'phase_10/models/char/tt_a_chr_dgl_shorts_torso_leverReach.bam', 'feedPet': 'phase_5.5/models/char/tt_a_chr_dgl_shorts_torso_feedPet.bam', 'reel-H': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_reelH.bam', 'applause': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_applause.bam', 'smooch': 'phase_5/models/char/tt_a_chr_dgl_shorts_torso_smooch.bam', 'rotateR-putt': 'phase_6/models/char/tt_a_chr_dgl_shorts_torso_rotateR-putt.bam', 'fish-neutral': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_fishneutral.bam', 'push': 'phase_9/models/char/tt_a_chr_dgl_shorts_torso_push.bam', 'catch-neutral': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_gameneutral.bam', 'left': 'phase_4/models/char/tt_a_chr_dgl_shorts_torso_left.bam'}
  20.  
  21. mouseHead = loader.loadModel('phase_3/models/char/mouse-heads-1000.bam')
  22. otherParts = mouseHead.findAllMatches('**/*long*')
  23. for partNum in range(0, otherParts.getNumPaths()):
  24.     otherParts.getPath(partNum).removeNode()
  25. ntrlMuzzle = mouseHead.find('**/*muzzle*neutral')
  26. otherParts = mouseHead.findAllMatches('**/*muzzle*')
  27. for partNum in range(0, otherParts.getNumPaths()):
  28.     part = otherParts.getPath(partNum)
  29.     if part != ntrlMuzzle:
  30.         otherParts.getPath(partNum).removeNode()
  31. mouseTorso = loader.loadModel('phase_3/models/char/tt_a_chr_dgl_shorts_torso_1000.bam')
  32. mouseLegs  = loader.loadModel('phase_3/models/char/tt_a_chr_dgs_shorts_legs_1000.bam')
  33. otherParts = mouseLegs.findAllMatches('**/boots*')+mouseLegs.findAllMatches('**/shoes')
  34. for partNum in range(0, otherParts.getNumPaths()):
  35.     otherParts.getPath(partNum).removeNode()
  36.  
  37. mouseBody = Actor({'head':mouseHead, 'torso':mouseTorso, 'legs':mouseLegs},
  38.                 {'torso':torsoAnimDict, 'legs':legsAnimDict})
  39. mouseBody.attach('head', 'torso', 'def_head')
  40. mouseBody.attach('torso', 'legs', 'joint_hips')
  41.  
  42. gloves = mouseBody.findAllMatches('**/hands')
  43. ears = mouseBody.findAllMatches('**/*ears*')
  44. head = mouseBody.findAllMatches('**/head-*')
  45. sleeves = mouseBody.findAllMatches('**/sleeves')
  46. shirt = mouseBody.findAllMatches('**/torso-top')
  47. shorts = mouseBody.findAllMatches('**/torso-bot')
  48. neck = mouseBody.findAllMatches('**/neck')
  49. arms = mouseBody.findAllMatches('**/arms')
  50. legs = mouseBody.findAllMatches('**/legs')
  51. feet = mouseBody.findAllMatches('**/feet')
  52.  
  53. bodyNodes = []
  54. bodyNodes += [gloves]
  55. bodyNodes += [head, ears]
  56. bodyNodes += [sleeves, shirt, shorts]
  57. bodyNodes += [neck, arms, legs, feet]
  58. bodyNodes[0].setColor(1, 1, 1, 1)
  59. bodyNodes[1].setColor(0.2, 0.2, 0.2, 1)
  60. bodyNodes[2].setColor(0.2, 0.2, 0.2, 1)
  61. bodyNodes[3].setColor(1, 1, 1, 1)
  62. bodyNodes[4].setColor(1, 1, 1, 1)
  63. bodyNodes[5].setColor(1, 1, 1, 1)
  64. bodyNodes[6].setColor(0.2, 0.2, 0.2, 1)
  65. bodyNodes[7].setColor(0.2, 0.2, 0.2, 1)
  66. bodyNodes[8].setColor(0.2, 0.2, 0.2, 1)
  67. bodyNodes[9].setColor(0.2, 0.2, 0.2, 1)
  68.  
  69. topTex = loader.loadTexture('phase_4/maps/tt_t_chr_avt_shirt_marathon1.jpg')
  70. botTex = loader.loadTexture('phase_4/maps/CowboyShorts1.jpg')
  71. sleeveTex = loader.loadTexture('phase_4/maps/tt_t_chr_avt_shirtSleeve_marathon1.jpg')
  72.  
  73. bodyNodes[3].setTexture(sleeveTex, 1)
  74. bodyNodes[4].setTexture(topTex, 1)
  75. bodyNodes[5].setTexture(botTex, 1)
  76.  
  77. mouseBody.reparentTo(render)
  78.  
  79. geom = mouseBody.getGeomNode()
  80. geom.getChild(0).setSx(0.730000019073)
  81. geom.getChild(0).setSz(0.730000019073)
  82.  
  83. offset = 3.2375
  84.  
  85. base.camera.setPos(0, -10.0 - offset, offset)
  86. wallBitmask = BitMask32(1)
  87. floorBitmask = BitMask32(2)
  88. base.cTrav = CollisionTraverser()
  89. def getAirborneHeight():
  90.     return offset + 0.025000000000000001
  91. walkControls = GravityWalker(legacyLifter=True)
  92. walkControls.setWallBitMask(wallBitmask)
  93. walkControls.setFloorBitMask(floorBitmask)
  94. walkControls.setWalkSpeed(32.0, 28.0, 16.0, 80.0)
  95. walkControls.initializeCollisions(base.cTrav, mouseBody, floorOffset=0.025, reach=4.0)
  96. walkControls.setAirborneHeightFunc(getAirborneHeight)
  97. walkControls.enableAvatarControls()
  98. mouseBody.physControls = walkControls
  99.  
  100. def setWatchKey(key, input, keyMapName):
  101.     def watchKey(active=True):
  102.         if active == True:
  103.             inputState.set(input, True)
  104.             keyMap[keyMapName] = 1
  105.         else:
  106.             inputState.set(input, False)
  107.             keyMap[keyMapName] = 0
  108.     base.accept(key, watchKey, [True])
  109.     base.accept(key+'-up', watchKey, [False])
  110.  
  111. keyMap = {'left':0, 'right':0, 'forward':0, 'backward':0, 'control':0}
  112.  
  113. setWatchKey('arrow_up', 'forward', 'forward')
  114. setWatchKey('control-arrow_up', 'forward', 'forward')
  115. setWatchKey('alt-arrow_up', 'forward', 'forward')
  116. setWatchKey('shift-arrow_up', 'forward', 'forward')
  117. setWatchKey('arrow_down', 'reverse', 'backward')
  118. setWatchKey('control-arrow_down', 'reverse', 'backward')
  119. setWatchKey('alt-arrow_down', 'reverse', 'backward')
  120. setWatchKey('shift-arrow_down', 'reverse', 'backward')
  121. setWatchKey('arrow_left', 'turnLeft', 'left')
  122. setWatchKey('control-arrow_left', 'turnLeft', 'left')
  123. setWatchKey('alt-arrow_left', 'turnLeft', 'left')
  124. setWatchKey('shift-arrow_left', 'turnLeft', 'left')
  125. setWatchKey('arrow_right', 'turnRight', 'right')
  126. setWatchKey('control-arrow_right', 'turnRight', 'right')
  127. setWatchKey('alt-arrow_right', 'turnRight', 'right')
  128. setWatchKey('shift-arrow_right', 'turnRight', 'right')
  129. setWatchKey('control', 'jump', 'control')
  130.  
  131. movingNeutral, movingForward = (False, False)
  132. movingRotation, movingBackward = (False, False)
  133. movingJumping = False
  134.  
  135. def setMovementAnimation(loopName, playRate=1.0):
  136.     global camm
  137.     if camm == 'up':
  138.         return
  139.     global movingNeutral
  140.     global movingForward
  141.     global movingRotation
  142.     global movingBackward
  143.     global movingJumping
  144.     if 'jump' in loopName:
  145.         movingJumping = True
  146.         movingForward = False
  147.         movingNeutral = False
  148.         movingRotation = False
  149.         movingBackward = False
  150.     elif loopName == 'run':
  151.         movingJumping = False
  152.         movingForward = True
  153.         movingNeutral = False
  154.         movingRotation = False
  155.         movingBackward = False
  156.     elif loopName == 'walk':
  157.         movingJumping = False
  158.         movingForward = False
  159.         movingNeutral = False
  160.         if playRate == -1.0:
  161.             movingBackward = True
  162.             movingRotation = False
  163.         else:
  164.             movingBackward = False
  165.             movingRotation = True
  166.     elif loopName == 'neutral':
  167.         movingJumping = False
  168.         movingForward = False
  169.         movingNeutral = True
  170.         movingRotation = False
  171.         movingBackward = False
  172.     else:
  173.         movingJumping = False
  174.         movingForward = False
  175.         movingNeutral = False
  176.         movingRotation = False
  177.         movingBackward = False
  178.     ActorInterval(mouseBody, loopName, playRate=playRate).loop()
  179.  
  180. def handleMovement(task):
  181.     global movingNeutral, movingForward, camm
  182.     global movingRotation, movingBackward, movingJumping
  183.    
  184.     if camm == 'up':
  185.         if keyMap['forward'] == 1:
  186.             objectForward()
  187.         if keyMap['backward'] == 1:
  188.             objectBackward()
  189.         if keyMap['right'] == 1:
  190.             objectRight()
  191.         if keyMap['left'] == 1:
  192.             objectLeft()
  193.    
  194.     else:
  195.         if keyMap['control'] == 1:
  196.             if keyMap['forward'] or keyMap['backward'] or keyMap['left'] or keyMap['right']:
  197.                 if movingJumping == False:
  198.                     if mouseBody.physControls.isAirborne:
  199.                         setMovementAnimation('running-jump-idle')
  200.                     else:
  201.                         if keyMap['forward']:
  202.                             if movingForward == False:
  203.                                 setMovementAnimation('run')
  204.                         elif keyMap['backward']:
  205.                             if movingBackward == False:
  206.                                 setMovementAnimation('walk', playRate=-1.0)
  207.                         elif keyMap['left'] or keyMap['right']:
  208.                             if movingRotation == False:
  209.                                 setMovementAnimation('walk')
  210.                 else:
  211.                     if not mouseBody.physControls.isAirborne:
  212.                         if keyMap['forward']:
  213.                             if movingForward == False:
  214.                                 setMovementAnimation('run')
  215.                         elif keyMap['backward']:
  216.                             if movingBackward == False:
  217.                                 setMovementAnimation('walk', playRate=-1.0)
  218.                         elif keyMap['left'] or keyMap['right']:
  219.                             if movingRotation == False:
  220.                                 setMovementAnimation('walk')
  221.             else:
  222.                 if movingJumping == False:
  223.                     if mouseBody.physControls.isAirborne:
  224.                         setMovementAnimation('jump-idle')
  225.                     else:
  226.                         if movingNeutral == False:
  227.                             setMovementAnimation('neutral')
  228.                 else:
  229.                     if not mouseBody.physControls.isAirborne:
  230.                         if movingNeutral == False:
  231.                             setMovementAnimation('neutral')
  232.         elif keyMap['forward'] == 1:
  233.             if movingForward == False:
  234.                 if not mouseBody.physControls.isAirborne:
  235.                     setMovementAnimation('run')
  236.         elif keyMap['backward'] == 1:
  237.             if movingBackward == False:
  238.                 if not mouseBody.physControls.isAirborne:
  239.                     setMovementAnimation('walk', playRate=-1.0)
  240.         elif keyMap['left'] or keyMap['right']:
  241.             if movingRotation == False:
  242.                 if not mouseBody.physControls.isAirborne:
  243.                     setMovementAnimation('walk')
  244.         else:
  245.             if not mouseBody.physControls.isAirborne:
  246.                 if movingNeutral == False:
  247.                     setMovementAnimation('neutral')
  248.     return Task.cont
  249.  
  250. base.taskMgr.add(handleMovement, 'controlManager')
  251. localAvatar = mouseBody
  252. base.localAvatar = localAvatar
  253.  
  254. PartyArea = loader.loadModel('phase_13/models/parties/partyGrounds.bam')
  255. PartyArea.reparentTo(render)
  256. base.camera.reparentTo(base.localAvatar)
  257.  
  258.  
  259. class CameraViews:
  260.     def changeView(self):
  261.         if self.objectId != 7:
  262.             base.camera.posHprInterval(0.5, self.posList[self.objectId], self.hprList[self.objectId]).start()
  263.             self.objectId += 1
  264.         else:
  265.             self.objectId = 0
  266.             base.camera.posHprInterval(0.5, self.posList[self.objectId], self.hprList[self.objectId]).start()
  267.             self.objectId += 1
  268.  
  269.     def changeViewRev(self):
  270.         if self.objectId != -1:
  271.             base.camera.posHprInterval(0.5, self.posList[self.objectId], self.hprList[self.objectId]).start()
  272.             self.objectId -= 1
  273.         else:
  274.             self.objectId = 6
  275.             base.camera.posHprInterval(0.5, self.posList[self.objectId], self.hprList[self.objectId]).start()
  276.             self.objectId -= 1
  277.  
  278.     def __init__(self):
  279.         self.objectId = 0
  280.  
  281.         self.posList = [(0,-6,3),
  282.                         (0, 1, 3.5),
  283.                         (8, 15, 5.5),
  284.                         (0, 17, 2.5),
  285.                         (0, -30.42, 5),
  286.                         (0, -19, 6.5),
  287.                         (0, -13.5, 3.0),
  288.                         (0, -13.5, 3.0)]
  289.  
  290.         self.hprList = [(0,15,0),
  291.                          (0, 0, 0),
  292.                          (150, -5.5, 0),
  293.                          (180, 5.5, 0),
  294.                          (0, 0, 0),
  295.                          (0, -8.0, 0),
  296.                          (0, 0, 0),
  297.                          (0, 0, 0)]
  298.  
  299.         base.accept('tab', self.changeView, [])
  300.         base.accept('shift-tab', self.changeViewRev, [])
  301.  
  302. CameraViews = CameraViews()
  303. toggleCollisionsC = True
  304. toggleBodyC = False
  305.        
  306.  
  307. camm = 'down'
  308. canzoom = False
  309.  
  310. def toggleBody():
  311.     global camm
  312.     global canzoom
  313.     CameraIntervalHpr = base.camera.hprInterval(1,Point3(0, -90, 0))
  314.     CameraIntervalHpr2 = base.camera.hprInterval(1,Point3(0, 0, 0))
  315.     CameraIntervalPos = base.camera.posInterval(1,Point3(base.localAvatar.getX(),base.localAvatar.getY(), 100), Point3(base.localAvatar.getX(), base.localAvatar.getY()-10.0 - 3.2375, 3.2375))
  316.     CameraIntervalPos2 = base.camera.posInterval(1,Point3(0, -10.0 - 3.2375, 3.2375), Point3(0,0, 100))
  317.     CameraPos = Sequence(CameraIntervalPos)
  318.     CameraPos2 = Sequence(CameraIntervalPos2)
  319.     CameraHpr = Sequence(CameraIntervalHpr)
  320.     CameraHpr2 = Sequence(CameraIntervalHpr2)
  321.     if camm == 'down' and movingJumping == False and movingForward == False and movingRotation == False and movingBackward == False:
  322.         walkControls.disableAvatarControls()
  323.         canzoom = True
  324.         camm = 'up'
  325.         base.camera.reparentTo(render)
  326.         CameraPos.start()
  327.         CameraHpr.start()
  328.         Interface.myScrolledList.show()
  329.     elif camm == 'up':
  330.         walkControls.enableAvatarControls()
  331.         canzoom = False
  332.         camm = 'down'
  333.         base.camera.reparentTo(mouseBody)
  334.         CameraPos2.start()
  335.         CameraHpr2.start()
  336.         Interface.myScrolledList.hide()
  337.        
  338. testobjectindex = -1
  339.  
  340. def objectForward():
  341.     if keyMap['control'] == 0 and len(objectList) > 0:
  342.         objectList[testobjectindex].setPos(objectList[testobjectindex].getX(), objectList[testobjectindex].getY()+0.3, objectList[testobjectindex].getZ())
  343.     elif keyMap['control'] == 1 and len(objectList) > 0:
  344.         if objectList[testobjectindex].getScale()<=Point3(2,2,2):
  345.             objectList[testobjectindex].setScale(objectList[testobjectindex].getScale()+Point3(0.01,0.01,0.01))
  346.    
  347. def objectBackward():
  348.     if keyMap['control'] == 0 and len(objectList) > 0:
  349.         objectList[testobjectindex].setPos(objectList[testobjectindex].getX(), objectList[testobjectindex].getY()-0.3, objectList[testobjectindex].getZ())
  350.     elif keyMap['control'] == 1 and len(objectList) > 0:
  351.         if objectList[testobjectindex].getScale()>=Point3(0.5,0.5,0.5):
  352.             objectList[testobjectindex].setScale(objectList[testobjectindex].getScale()-Point3(0.01,0.01,0.01))
  353.    
  354. def objectLeft():
  355.     if keyMap['control'] == 1 and len(objectList) > 0:
  356.         objectList[testobjectindex].setHpr(objectList[testobjectindex].getH()+1.5, objectList[testobjectindex].getP(), objectList[testobjectindex].getR())
  357.     elif len(objectList) > 0:
  358.         objectList[testobjectindex].setPos(objectList[testobjectindex].getX()-0.3, objectList[testobjectindex].getY(), objectList[testobjectindex].getZ())
  359.    
  360. def objectRight():
  361.     if keyMap['control'] == 1 and len(objectList)> 0:
  362.         objectList[testobjectindex].setHpr(objectList[testobjectindex].getH()-1.5, objectList[testobjectindex].getP(), objectList[testobjectindex].getR())
  363.     elif len(objectList) > 0:
  364.         objectList[testobjectindex].setPos(objectList[testobjectindex].getX()+0.3, objectList[testobjectindex].getY(), objectList[testobjectindex].getZ())
  365.    
  366. def zoomIn():
  367.     global canzoom
  368.     if canzoom is True:
  369.         if base.camera.getZ()>10:
  370.             base.camera.setPos(base.camera.getX(), base.camera.getY(), base.camera.getZ()-10)
  371.    
  372. def zoomOut():
  373.     global canzoom
  374.     if canzoom is True:
  375.         if base.camera.getZ()<420:
  376.             base.camera.setPos(base.camera.getX(), base.camera.getY(), base.camera.getZ()+10)
  377.  
  378.    
  379.  
  380. base.accept('shift', toggleBody)
  381. base.accept('wheel_up', zoomIn)
  382. base.accept('wheel_down', zoomOut)
  383.  
  384. objectList=list()
  385.  
  386. def spawnObject(modelName):
  387.     spawnedObject=loader.loadModel(modelName)
  388.     spawnedObject.reparentTo(render)
  389.     spawnedObject.setPos(base.localAvatar.getPos())
  390.     objectList.append(spawnedObject)
  391.     testobjectindex=len(objectList)
  392.    
  393. class Interface():
  394.     Button_Up = loader.loadModel('phase_3/models/gui/quit_button.bam').find('**/QuitBtn_UP')
  395.     Button_Down = loader.loadModel('phase_3/models/gui/quit_button.bam').find('**/QuitBtn_DN')
  396.     Button_Rlvr = loader.loadModel('phase_3/models/gui/quit_button.bam').find('**/QuitBtn_RLVR')
  397.  
  398.     Arrow_Up = loader.loadModel('phase_3/models/gui/nameshop_gui.bam').find('**/triangleButtonUp')
  399.     Arrow_Down = loader.loadModel('phase_3/models/gui/nameshop_gui.bam').find('**/triangleButtonDwn')
  400.     Arrow_Rlvr = loader.loadModel('phase_3/models/gui/nameshop_gui.bam').find('**/triangleButtonRllvr')
  401.     Buttons = [Button_Up,Button_Down,Button_Rlvr]
  402.    
  403.    
  404.     numItemsVisible = 4
  405.     itemHeight = 0.11
  406.    
  407.     myScrolledList = DirectScrolledList(
  408.         decButton_pos= (0.35, 0, 0.54),
  409.         decButton_text_scale = 0.04,
  410.         decButton_relief=None,
  411.         decButton_image = (Arrow_Up,Arrow_Down,Arrow_Rlvr),
  412.    
  413.         incButton_pos= (0.35, 0, -0.01),
  414.         incButton_hpr= (0, 0, 180),
  415.         incButton_text_scale = 0.04,
  416.         incButton_relief=None,
  417.         incButton_image = (Arrow_Up,Arrow_Down,Arrow_Rlvr),
  418.    
  419.         pos = (0.74, 0, 0.4),
  420.         numItemsVisible = numItemsVisible,
  421.         forceHeight = itemHeight,
  422.         itemFrame_pos = (0.35, 0, 0.43))
  423.     myScrolledList.hide()
  424.     modelArray = ['phase_6/models/props/palm_tree_topflat.bam',
  425.     'phase_3.5/models/char/suitA-mod.bam',
  426.     'phase_3.5/models/char/suitB-mod.bam',
  427.     'phase_3.5/models/char/suitC-mod.bam',
  428.     'phase_3.5/models/modules/wood_fence.bam',
  429.     'phase_5/models/char/tt_r_ara_ttc_hydrant.bam']
  430.     nameArray = ['Palm Tree','Cog Suit A','Cog Suit B','Cog Suit C','Wood Fence','Fire Hydrant']
  431.        
  432.     for index,name in enumerate(nameArray):
  433.         l=DirectButton(text = name,image=(Buttons),extraArgs=[modelArray[index]],command=spawnObject,text_scale=0.045,text_pos=(0,-0.007,0),relief=None)
  434.         myScrolledList.addItem(l)
  435. Interface()
  436.  
  437. run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement