Init commit
This commit is contained in:
commit
6319d05b8f
14 changed files with 9433 additions and 0 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
*.pyc
|
||||||
|
bins/
|
||||||
|
out/
|
27
.vimrc
Normal file
27
.vimrc
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
" %E%.%# %f:%l
|
||||||
|
" %CLine |
|
||||||
|
" %C %#%*[0123456789] %#| %.%#
|
||||||
|
" %-C %#| %#~%#
|
||||||
|
" %C %#| %m
|
||||||
|
" %Z
|
||||||
|
"
|
||||||
|
" %ETraceback %.%#:
|
||||||
|
" %C File "%f", line %l,%.%#
|
||||||
|
" %C %.%#
|
||||||
|
" %Z%m
|
||||||
|
|
||||||
|
" set makeprg=pwsh\ -c\ .\\Police2Gear\\build.ps1
|
||||||
|
set makeprg=pwsh\ -c\ .\\build.ps1
|
||||||
|
set efm=%-G,
|
||||||
|
\%trror:\ %m,
|
||||||
|
\%E%.%#\ %f:%l,
|
||||||
|
\%CLine\ \|,
|
||||||
|
\%C\ %#%*[0123456789]\ %#\|\ %.%#,
|
||||||
|
\%-C\ %#\|\ %#~%#,
|
||||||
|
\%C\ %#\|\ %m,
|
||||||
|
\%Z,
|
||||||
|
\%ETraceback\ %.%#:,
|
||||||
|
\%C\ \ File\ \"%f\"\\,\ line\ %l\\,\ %.%#,
|
||||||
|
\%C\ \ \ \ %.%#,
|
||||||
|
\%Z%m
|
||||||
|
|
3
Loader/README.md
Normal file
3
Loader/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Loader
|
||||||
|
|
||||||
|
This is just `init.py` with my custom files preloaded
|
618
Loader/scripts/init.py
Normal file
618
Loader/scripts/init.py
Normal file
|
@ -0,0 +1,618 @@
|
||||||
|
##########################################################
|
||||||
|
# Initialization engine
|
||||||
|
##########################################################
|
||||||
|
|
||||||
|
# Cam = Scrap.GetEntity(Scrap.GetCam(0))
|
||||||
|
# Scrap.GetEntity(Scrap.GetCam(0)).CamDist = 0
|
||||||
|
# Scrap.GetEntity(Scrap.GetCam(0)).FreeCam = 1
|
||||||
|
# Scrap.GetEntity("net256").Descriptor
|
||||||
|
# Scrap.GetEntity(Scrap.GetEntity("Player1").Target).Life = 0
|
||||||
|
# Scrap.GetEntity("Player1").EMICounter = 1.0
|
||||||
|
# Scrap.GetEntity("Player1").Upgrd01 = 3;Scrap.GetEntity("Player1").UAmmo01 = 200
|
||||||
|
# import Vehicles;Vehicles.ReSpawnShip("Player1")
|
||||||
|
# Scrap.GetEntity("Player1").FireRemainTime = 10.0;Scrap.GetEntity("Player1").FireDelayTime = 0.2
|
||||||
|
# import Net;Net.Spectate(0,1)
|
||||||
|
# Scrap.GetEntity("Player1").ActCtrl = "Mosquito"
|
||||||
|
|
||||||
|
import Scrap
|
||||||
|
|
||||||
|
|
||||||
|
def log(msg):
|
||||||
|
Scrap.Print("[STRNG][INIT] " + msg + "\n")
|
||||||
|
|
||||||
|
|
||||||
|
log('Init started')
|
||||||
|
|
||||||
|
PlaySpacelords = not Scrap.IsApp(436180) # 1 to activate the cross promotion
|
||||||
|
##################################
|
||||||
|
## All the built in functions
|
||||||
|
##################################
|
||||||
|
import SInput,SNet,SWeap,SScorer,SSound,SAct,sys,SAI,SFX
|
||||||
|
|
||||||
|
Scrap.CreateSaveVar("CreateBertos", "0")
|
||||||
|
Scrap.CreateSaveVar("MercsHelpDtritus", "0")
|
||||||
|
Scrap.CreateSaveVar("RobotsControlledByBoss", "0")
|
||||||
|
Scrap.CreateSaveVar("Player.InfiniteLives", "1")
|
||||||
|
|
||||||
|
# WARNING : Never import any pyhton source library at the start up!
|
||||||
|
#
|
||||||
|
SUPERDEALSMAPS = ["TUCZONE","QF","OM","FZ","CA"]
|
||||||
|
OUTMAPS = ["TUCZONE","AB","COMMERCIAL","DOWNTOWN","GDB","OUTSKIRTS","SCRAPYARD"]+SUPERDEALSMAPS
|
||||||
|
INMAPS = ["NANO","ABINDOOR","BANK","GAMBLINDEN","ORBIT","POLICE","PRESS","TEMPLE","TOWNHALL"]
|
||||||
|
|
||||||
|
ExtraExecs ={
|
||||||
|
"JUNKYARD":(
|
||||||
|
(Scrap.PreloadLibrary,('RustySound', 'Sound/RustySound.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('SputnikJunkyardSound','Sound/SputnikJunkyardSound.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('MaintenanceSound', 'Sound/MaintenanceSound.pyc' )),
|
||||||
|
|
||||||
|
(Scrap.PreloadLibrary,('Rusty', 'Chars/Rusty.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('SputnikJunkyard', 'Chars/SputnikJunkyard.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('Maintenance', 'Chars/Maintenance.pyc' )),
|
||||||
|
),
|
||||||
|
|
||||||
|
"GAMBLINDEN":(
|
||||||
|
(Scrap.PreloadLibrary,('MercenarySound', 'Sound/MercenarySound.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('CrazyGamblerSound', 'Sound/CrazyGamblerSound.pyc' )),
|
||||||
|
|
||||||
|
|
||||||
|
(Scrap.PreloadLibrary,('MercenaryA', 'Chars/MercenaryA.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('MercenaryB', 'Chars/MercenaryB.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('MercenaryC', 'Chars/MercenaryC.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('MercenaryL', 'Chars/MercenaryL.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('CrazyGambler', 'Chars/CrazyGambler.pyc' )),
|
||||||
|
),
|
||||||
|
|
||||||
|
"ABINDOOR":(
|
||||||
|
(Scrap.PreloadLibrary,('CrazyGamblerSound', 'Sound/CrazyGamblerSound.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('CrazyGambler', 'Chars/CrazyGambler.pyc' )),
|
||||||
|
),
|
||||||
|
|
||||||
|
"PRESS":(
|
||||||
|
(Scrap.PreloadLibrary,('SebastianSound', 'Sound/SebastianSound.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('BossSound', 'Sound/BossSound.pyc' )),
|
||||||
|
|
||||||
|
|
||||||
|
(Scrap.PreloadLibrary,('Sebastian', 'Chars/Sebastian.pyc' )),
|
||||||
|
(Scrap.PreloadLibrary,('Boss', 'Chars/Boss.pyc' )),
|
||||||
|
),
|
||||||
|
}
|
||||||
|
|
||||||
|
OffLineGame = Scrap.GetNetFlags()==(0,0,0)
|
||||||
|
MultiPlayer = not OffLineGame or Scrap.Get("SplitScreen") != 0
|
||||||
|
|
||||||
|
############################################################################################################
|
||||||
|
#################################### Preload all the built in libraries ####################################
|
||||||
|
############################################################################################################
|
||||||
|
# todos los paths
|
||||||
|
sys.path.append('Scripts/Scorer')
|
||||||
|
sys.path.append('Scripts/ShipEdit')
|
||||||
|
sys.path.append('Scripts/Python')
|
||||||
|
sys.path.append('Scripts/Weapons')
|
||||||
|
sys.path.append('Scripts/Vehicles')
|
||||||
|
sys.path.append('Scripts/Net')
|
||||||
|
sys.path.append('Scripts/FX')
|
||||||
|
sys.path.append('Scripts/Sound')
|
||||||
|
sys.path.append('Scripts/Chars')
|
||||||
|
sys.path.append('Scripts/Missions')
|
||||||
|
sys.path.append('Scripts/SuperDeals')
|
||||||
|
sys.path.append('Scripts/Split')
|
||||||
|
|
||||||
|
###### Librerias standard de python ######
|
||||||
|
Scrap.PreloadLibrary('string','Python/string.pyc')
|
||||||
|
|
||||||
|
# determinar el ambito de los mapas...
|
||||||
|
import string
|
||||||
|
UpperMap = string.upper(Scrap.GetLevelPath()[7:])
|
||||||
|
SuperDealModule = None
|
||||||
|
sDealType = Scrap.GetSaveVar("SuperDealType")
|
||||||
|
HasSuperDeal = OffLineGame and sDealType and sDealType != "" and (UpperMap in SUPERDEALSMAPS)
|
||||||
|
OutMapSkip = OffLineGame and (UpperMap in OUTMAPS)
|
||||||
|
InMapSkip = OffLineGame and (UpperMap in INMAPS)
|
||||||
|
|
||||||
|
|
||||||
|
#Scrap.PreloadLibrary('QuickConsole','QuickConsole.pyc') # QuickConsole no es una libreria para el sistema
|
||||||
|
|
||||||
|
###### Librerias basicas del sistema raiz ######
|
||||||
|
Scrap.PreloadLibrary('Items','Items.pyc')
|
||||||
|
Scrap.PreloadLibrary('SaveGame','SaveGame.pyc')
|
||||||
|
|
||||||
|
###### Sistema de menues y scorer ######
|
||||||
|
log('Preloading ModsMenu')
|
||||||
|
Scrap.PreloadLibrary('MyMenu','Scorer/MyMenu.pyc')
|
||||||
|
log('ModsMenu preload injected')
|
||||||
|
|
||||||
|
if (Scrap.Get("IsXbox") == 1):
|
||||||
|
Scrap.PreloadLibrary('XBMenu','Scorer/XBMenu.pyc')
|
||||||
|
else:
|
||||||
|
Scrap.PreloadLibrary('PCMenu','Scorer/PCMenu.pyc')
|
||||||
|
|
||||||
|
Scrap.PreloadLibrary('Menu','Scorer/Menu.pyc')
|
||||||
|
Scrap.PreloadLibrary('Scorer','Scorer/Scorer.pyc')
|
||||||
|
Scrap.PreloadLibrary('CharScorer','Scorer/CharScorer.pyc')
|
||||||
|
|
||||||
|
###### Librerias de red ######
|
||||||
|
Scrap.PreloadLibrary('Net', 'Net/Net.pyc')
|
||||||
|
|
||||||
|
###### Efectos especiales ######
|
||||||
|
Scrap.PreloadLibrary('Fx', 'FX/Fx.pyc' )
|
||||||
|
|
||||||
|
###### Sistema de sonidos ######
|
||||||
|
Scrap.PreloadLibrary('Sound', 'Sound/Sound.pyc' )
|
||||||
|
Scrap.PreloadLibrary('DoorSound', 'Sound/DoorSound.pyc' )
|
||||||
|
|
||||||
|
###### Sistema de personajes ######
|
||||||
|
Scrap.PreloadLibrary('Chars', 'Chars/Chars.pyc' )
|
||||||
|
Scrap.PreloadLibrary('MakeChar', 'Chars/MakeChar.pyc')
|
||||||
|
Scrap.PreloadLibrary('Speech', 'Chars/Speech.pyc' )
|
||||||
|
Scrap.PreloadLibrary('CharAct', 'Chars/CharAct.pyc' )
|
||||||
|
|
||||||
|
###### Librerias ######
|
||||||
|
Scrap.PreloadLibrary('Teleport', 'Missions/Teleport.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Elevator', 'Missions/Elevator.pyc' )
|
||||||
|
Scrap.PreloadLibrary('RaceMaker', 'Missions/RaceMaker.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Doors', 'Missions/Doors.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Alarm', 'Missions/Alarm.pyc' )
|
||||||
|
Scrap.PreloadLibrary('MisItems', 'Missions/MisItems.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Traffic', 'Missions/Traffic.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Scene', 'Missions/Scene.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Challenge', 'Missions/Challenge.pyc' )
|
||||||
|
Scrap.PreloadLibrary('MissionsFuncs', 'Missions/MissionsFuncs.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Metro', 'Missions/Metro.pyc' )
|
||||||
|
|
||||||
|
|
||||||
|
def LoadCharLib(filename):
|
||||||
|
Scrap.PreloadLibrary(filename, 'Chars/'+filename+'.pyc' )
|
||||||
|
filename = filename+"Sound"
|
||||||
|
Scrap.PreloadLibrary(filename, 'Sound/'+filename+'.pyc')
|
||||||
|
|
||||||
|
if not InMapSkip: # no es interiores
|
||||||
|
###### Armas de naves preparadas para red ######
|
||||||
|
Scrap.PreloadLibrary('Weapons', 'Weapons/Weapons.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Vulcan', 'Weapons/Vulcan.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Swarm', 'Weapons/Swarm.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Tesla', 'Weapons/Tesla.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Cloud', 'Weapons/Cloud.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Sonic', 'Weapons/Sonic.pyc' )
|
||||||
|
Scrap.PreloadLibrary('EMI', 'Weapons/EMI.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Devastator','Weapons/Devastator.pyc')
|
||||||
|
Scrap.PreloadLibrary('ATPC', 'Weapons/ATPC.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Inferno', 'Weapons/Inferno.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Laser', 'Weapons/Laser.pyc' )
|
||||||
|
###### Naves y afines ######
|
||||||
|
Scrap.PreloadLibrary('Vehicles', 'Vehicles/Vehicles.pyc' )
|
||||||
|
Scrap.PreloadLibrary('ShipMaker', 'Vehicles/ShipMaker.pyc' )
|
||||||
|
Scrap.PreloadLibrary('OutMap', 'Vehicles/OutMap.pyc' )
|
||||||
|
Scrap.PreloadLibrary('VehiclesNPC', 'Vehicles/VehiclesNPC.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Parking', 'Vehicles/Parking.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Accelerator', 'Vehicles/Accelerator.pyc' )
|
||||||
|
|
||||||
|
####### scorer solo de exteriores ######
|
||||||
|
Scrap.PreloadLibrary('RacerScorer','Scorer/RacerScorer.pyc')
|
||||||
|
|
||||||
|
####### Sputnick y sus naves #######
|
||||||
|
LoadCharLib('Sputnik')
|
||||||
|
Scrap.PreloadLibrary('SputnikInterface', 'ShipEdit/SputnikInterface.pyc' )
|
||||||
|
|
||||||
|
####### sonidos de exteriores #######
|
||||||
|
Scrap.PreloadLibrary('OutSound', 'Sound/OutSound.pyc' )
|
||||||
|
|
||||||
|
###### mas misiones de exteriores ######
|
||||||
|
Scrap.PreloadLibrary('OutPolice', 'Missions/OutPolice.pyc' )
|
||||||
|
Scrap.PreloadLibrary('PhoneCab', 'Missions/PhoneCab.pyc' )
|
||||||
|
|
||||||
|
###### Sistema de edicion de naves ######
|
||||||
|
Scrap.PreloadLibrary('ShipEdit', 'ShipEdit/ShipEdit.pyc' )
|
||||||
|
Scrap.PreloadLibrary('HangarTab', 'ShipEdit/HangarTab.pyc' )
|
||||||
|
|
||||||
|
if not OutMapSkip: # tampoco interiores (mapas de edicion de naves)
|
||||||
|
Scrap.PreloadLibrary('EnginesTab','ShipEdit/EnginesTab.pyc')
|
||||||
|
Scrap.PreloadLibrary('WeaponsTab','ShipEdit/WeaponsTab.pyc')
|
||||||
|
Scrap.PreloadLibrary('HullTab', 'ShipEdit/HullTab.pyc' )
|
||||||
|
|
||||||
|
if not OutMapSkip:
|
||||||
|
|
||||||
|
|
||||||
|
for fn in ('Nurse','Police','Desktop','Gear','Sentinel','Berto',
|
||||||
|
'BankDirector','Mayor','GateKeeper','Betty','Dtritus',
|
||||||
|
'Bishop','Functionary','Humphrey','PoliceBoss',
|
||||||
|
'Messenger','Human','BankMaster'):
|
||||||
|
LoadCharLib(fn)
|
||||||
|
|
||||||
|
# logica varias de interiores
|
||||||
|
Scrap.PreloadLibrary('CrazyWing', 'Missions/CrazyWing.pyc' )
|
||||||
|
Scrap.PreloadLibrary('Bureaucracy', 'Chars/Bureaucracy.pyc' )
|
||||||
|
Scrap.PreloadLibrary('CharsNPC', 'Chars/CharsNPC.pyc' )
|
||||||
|
Scrap.PreloadLibrary('InMap', 'Chars/InMap.pyc' )
|
||||||
|
Scrap.PreloadLibrary('InTraffic', 'Vehicles/InTraffic.pyc' )
|
||||||
|
Scrap.PreloadLibrary('DTritusDesktop','Missions/DTritusDesktop.pyc')
|
||||||
|
|
||||||
|
# Sistema de misiones para single player
|
||||||
|
Scrap.PreloadLibrary('InPolice', 'Missions/InPolice.pyc' )
|
||||||
|
Scrap.PreloadLibrary('CharConversor', 'Missions/CharConversor.pyc' )
|
||||||
|
|
||||||
|
Scrap.PreloadLibrary('NewsPanel', 'Missions/NewsPanel.pyc' )
|
||||||
|
|
||||||
|
else: # debo cargar si es un mapa exterior solo mi personaje...
|
||||||
|
LoadCharLib(Scrap.GetSaveVar("Char"))
|
||||||
|
|
||||||
|
if Scrap.Get("SplitScreen") != 0 or (Scrap.Get("isXbox") and UpperMap in ("MENU","SHIPEDIT")):
|
||||||
|
Scrap.PreloadLibrary('Split','Split/Split.pyc')
|
||||||
|
SplitModeGameMod = Scrap.Get("ServerType")
|
||||||
|
Scrap.PreloadLibrary('S'+SplitModeGameMod,'Split/S'+SplitModeGameMod+'.pyc')
|
||||||
|
import Split
|
||||||
|
Split.ModLib = __import__('S'+SplitModeGameMod)
|
||||||
|
|
||||||
|
|
||||||
|
if not OffLineGame:
|
||||||
|
Scrap.PreloadLibrary('Chat','Scorer/Chat.pyc')
|
||||||
|
Scrap.PreloadLibrary('Ffa', 'Net/Ffa.pyc')
|
||||||
|
|
||||||
|
# cargar la libreria del tipo de juego...
|
||||||
|
import Ffa
|
||||||
|
GameLibName = "N"+Scrap.Get("ServerType")
|
||||||
|
if not Scrap.FileExist('Scripts/Net/'+GameLibName+'.pyc') and not Scrap.FileExist('Scripts/Net/'+GameLibName+'.py'):
|
||||||
|
GameLibName = "NDeathMatch"
|
||||||
|
|
||||||
|
Scrap.PreloadLibrary(GameLibName, 'Net/'+GameLibName+'.pyc')
|
||||||
|
Ffa.ModLib = __import__(GameLibName)
|
||||||
|
|
||||||
|
|
||||||
|
if ExtraExecs.has_key(UpperMap):
|
||||||
|
for func in ExtraExecs[UpperMap]:
|
||||||
|
apply(apply,func)
|
||||||
|
|
||||||
|
|
||||||
|
isDemo = Scrap.Get("isDemo")
|
||||||
|
|
||||||
|
Path = "" # el path del mapa actual
|
||||||
|
Outdoor = 1 # 1 si el mapa es exterior 0 si es interior. En red debe ser 1
|
||||||
|
inMainMenu = 0 # 1 si el mapa no es mas que una miserable demo si graficos ni nada
|
||||||
|
isShipEdit = 0 # 1 si el mapa es el edicion de naves. inMainMenu = 0 Outdoor = 1 para que sea valido
|
||||||
|
isJunkYard = 0 # 1 en el caso particular del mapa junkyard
|
||||||
|
OutArea = "DownTown" # este es el mapa exterior en el que se encuentra (si esta en un interior) no vale para exteriores ni mapa del chatarrero.
|
||||||
|
isScrapYard = 0
|
||||||
|
|
||||||
|
XboxSavingMsgTime = 3.5
|
||||||
|
|
||||||
|
if (HasSuperDeal):
|
||||||
|
Scrap.PreloadLibrary(sDealType, 'SuperDeals/' + sDealType + '.pyc' )
|
||||||
|
SuperDealModule = __import__(sDealType)
|
||||||
|
|
||||||
|
######## Maplibs functions ########
|
||||||
|
MapLibs = [] # esta es la lista de las librerias propias del mapa. Se especifican para su inicializacion
|
||||||
|
|
||||||
|
# agrega una libreria a la lista de librerias del mapa
|
||||||
|
def AddMLib(library):
|
||||||
|
global MapLibs
|
||||||
|
MapLibs.append(library)
|
||||||
|
|
||||||
|
def MLibInitStatus(LevelPath):
|
||||||
|
global MapLibs
|
||||||
|
|
||||||
|
for lib in MapLibs:
|
||||||
|
lib.InitStatus(LevelPath)
|
||||||
|
|
||||||
|
def MLibInit(LevelPath):
|
||||||
|
global MapLibs
|
||||||
|
|
||||||
|
for lib in MapLibs:
|
||||||
|
lib.Init(LevelPath)
|
||||||
|
|
||||||
|
def isMission():
|
||||||
|
import string
|
||||||
|
return string.upper(Scrap.GetSaveVar("Mission.Map")) == string.upper(Scrap.GetLevelPath()[7:])
|
||||||
|
|
||||||
|
def PreloadMlibs(LevelPath):
|
||||||
|
import Map
|
||||||
|
|
||||||
|
if isMission():
|
||||||
|
Map.Libraries.append(Scrap.GetSaveVar("Mission.Library"))
|
||||||
|
|
||||||
|
if "Libraries" in dir(Map):
|
||||||
|
for LibName in Map.Libraries:
|
||||||
|
Scrap.PreloadLibrary(LibName,LibName+'.pyc')
|
||||||
|
AddMLib(__import__(LibName))
|
||||||
|
|
||||||
|
|
||||||
|
Arrows = "Models/Misc/Action/Action","Models/Misc/MMission/MMission","Models/Misc/SMission/SMission","Models/Misc/MMission/BMMission","Models/Misc/SMission/BSMission"
|
||||||
|
|
||||||
|
Scrap.Set("ArrowUseFile", Arrows[0])
|
||||||
|
Scrap.Set("ArrowMissionFile", Arrows[1])
|
||||||
|
Scrap.Set("ArrowTargetFile", Arrows[2])
|
||||||
|
|
||||||
|
def SetArrowSize():
|
||||||
|
global Arrows
|
||||||
|
for varnam in Arrows:
|
||||||
|
Nam = varnam
|
||||||
|
Scrap.Preload3DObject(Nam+".M3D",1,1,1)
|
||||||
|
Scrap.PreloadAnm(Nam+".M3D",Nam+".anim.M3D")
|
||||||
|
|
||||||
|
####################################
|
||||||
|
## Initialization routines
|
||||||
|
####################################
|
||||||
|
def Init(LevelPath):
|
||||||
|
global Path
|
||||||
|
global Outdoor
|
||||||
|
global inMainMenu
|
||||||
|
global isShipEdit
|
||||||
|
|
||||||
|
# graba el path
|
||||||
|
Path = LevelPath
|
||||||
|
|
||||||
|
# load default libraries
|
||||||
|
import sys
|
||||||
|
sys.path.append(LevelPath+"/Scripts")
|
||||||
|
Scrap.OpenPack(LevelPath+"/Scripts")
|
||||||
|
Scrap.PreloadLibrary('Map','Map.pyc')
|
||||||
|
Scrap.PreloadLibrary('MapSnd','MapSnd.pyc')
|
||||||
|
PreloadMlibs(LevelPath)
|
||||||
|
Scrap.ClosePack()
|
||||||
|
|
||||||
|
if Scrap.Get("IsXbox") and not Scrap.Get("ShowCredits") and UpperMap in ("SHIPEDIT","MENU"):
|
||||||
|
Scrap.PreloadLibrary('XboxMenu', 'Scripts/Scorer/XboxMenu.pyc')
|
||||||
|
AddMLib(__import__('XboxMenu'))
|
||||||
|
|
||||||
|
import Map
|
||||||
|
import MapSnd
|
||||||
|
|
||||||
|
# Load map Status
|
||||||
|
Map.InitStatus(LevelPath)
|
||||||
|
MLibInitStatus(LevelPath)
|
||||||
|
|
||||||
|
###################################################################
|
||||||
|
# Para arreglar el que se vea a la nave del jefe de policia dando #
|
||||||
|
# rulos por ahн despuйs de muerto y no tener que hacer cambios en #
|
||||||
|
# todos los scripts de exteriores. #
|
||||||
|
###################################################################
|
||||||
|
ga = Scrap.GetSaveVar("GameAct")
|
||||||
|
if (ga != "Prologue" and ga != "1stMurder"):
|
||||||
|
import string
|
||||||
|
cad = Scrap.GetSaveVar("Traffic.AcShips")
|
||||||
|
if (cad and string.find(cad, "SPoliBoss1") != -1):
|
||||||
|
import Traffic
|
||||||
|
cad = string.replace(cad, "SPoliBoss1", "SPoli6", 1)
|
||||||
|
Scrap.SetSaveVar("Traffic.AcShips", cad)
|
||||||
|
Traffic.AcShips = eval(cad)
|
||||||
|
#######################################################
|
||||||
|
|
||||||
|
|
||||||
|
if (SuperDealModule):
|
||||||
|
SuperDealModule.InitStatus(LevelPath)
|
||||||
|
|
||||||
|
# modifica el tamaсo de las flechas de mision
|
||||||
|
if not inMainMenu and not isShipEdit:
|
||||||
|
SetArrowSize()
|
||||||
|
|
||||||
|
#inicializaciуn AI
|
||||||
|
SAI.IniAI(LevelPath, Outdoor)
|
||||||
|
|
||||||
|
# initialize the language
|
||||||
|
#Scrap.SetLanguage("English")
|
||||||
|
|
||||||
|
# Initialize menu
|
||||||
|
Scrap.Set("EscapeEvent","Menu.Init")
|
||||||
|
import Menu; Menu.Initialize()
|
||||||
|
|
||||||
|
# Assign Mission Info callback func
|
||||||
|
if Scrap.GetNetFlags()==(0,0,0):
|
||||||
|
Scrap.Set("MainMissionEvent", "MissionsFuncs.ShowMissionInfo")
|
||||||
|
else:
|
||||||
|
Scrap.Set("MainMissionEvent", "Ffa.ShowHelp")
|
||||||
|
|
||||||
|
if not OffLineGame:
|
||||||
|
# Initialize chat system
|
||||||
|
import Chat;Chat.SetChatProc();
|
||||||
|
|
||||||
|
# Initialize the sound system
|
||||||
|
import Sound;Sound.Init()
|
||||||
|
|
||||||
|
# elementos decorativos
|
||||||
|
Scrap.CreateElements()
|
||||||
|
|
||||||
|
if not inMainMenu:
|
||||||
|
if not Outdoor:
|
||||||
|
import Bureaucracy; Bureaucracy.Init()
|
||||||
|
|
||||||
|
if UpperMap in SUPERDEALSMAPS or MultiPlayer:
|
||||||
|
Scrap.Set("isActionMusic",1)
|
||||||
|
|
||||||
|
# Initialize Character Controller (en exteriores al menos se carga un set para el single player, nada para el multi)
|
||||||
|
if not isShipEdit and not MultiPlayer:
|
||||||
|
import Chars; Chars.Init()
|
||||||
|
if (not isJunkYard):
|
||||||
|
if (Outdoor):
|
||||||
|
import PhoneCab
|
||||||
|
PhoneCab.CreatePhoneCabClass()
|
||||||
|
PhoneCab.CreateAudioComClass()
|
||||||
|
|
||||||
|
#else:
|
||||||
|
# Scrap.SetMoney(1000000)
|
||||||
|
|
||||||
|
if Outdoor or isJunkYard: # lo que son interiores no cargan nada de esto (exepto Junkyard)
|
||||||
|
# Initialize Vehicle Controller
|
||||||
|
import Vehicles;Vehicles.Init()
|
||||||
|
|
||||||
|
# Initialize Weapons Controller
|
||||||
|
import Weapons;Weapons.Init()
|
||||||
|
|
||||||
|
# Initialize Special FX Controller (generico para exteriores e interiores)
|
||||||
|
import Fx;Fx.Init()
|
||||||
|
|
||||||
|
if not isShipEdit:
|
||||||
|
|
||||||
|
# sistema de alarma
|
||||||
|
import Alarm;Alarm.Init()
|
||||||
|
|
||||||
|
# Items propios de las misiones
|
||||||
|
import MisItems;MisItems.Init()
|
||||||
|
|
||||||
|
# puertas y ventanas
|
||||||
|
import Doors;Doors.Init()
|
||||||
|
|
||||||
|
if not isShipEdit:
|
||||||
|
# Set de los mapas ya sean exteriores o interiores.
|
||||||
|
if Outdoor:
|
||||||
|
import OutMap;OutMap.Init(LevelPath)
|
||||||
|
else:
|
||||||
|
import InMap;InMap.Init(LevelPath)
|
||||||
|
|
||||||
|
if not MultiPlayer:
|
||||||
|
import SaveGame
|
||||||
|
SaveGame.InitVars()
|
||||||
|
|
||||||
|
import MissionsFuncs;MissionsFuncs.Init()
|
||||||
|
|
||||||
|
|
||||||
|
###Scrap.Set( "VideoGammaRGB", 1.0 )
|
||||||
|
|
||||||
|
if (Outdoor and Scrap.GetSaveVar("CreateBertos") == "1" and UpperMap != "GDB" and not HasSuperDeal):
|
||||||
|
import MissionsFuncs, Parking
|
||||||
|
MissionsFuncs.CreateBertos()
|
||||||
|
Parking.SwitchVehicleMissionCallbackAux = MissionsFuncs.ReassignBertosPlayerTarget
|
||||||
|
Parking.SwitchCharMissionCallbackAux = MissionsFuncs.ReassignBertosPlayerTarget
|
||||||
|
|
||||||
|
if (Scrap.GetSaveVar("RobotsControlledByBoss") == "1"):
|
||||||
|
|
||||||
|
if (Scrap.GetSaveVar("MercsHelpDtritus") == "1"):
|
||||||
|
Scrap.SetSaveVar("MercFriends.MercenaryA_Smartie", "1")
|
||||||
|
Scrap.SetSaveVar("MercFriends.MercenaryC_Brutus", "1")
|
||||||
|
Scrap.SetSaveVar("MercFriends.MercenaryB_Dumber", "1")
|
||||||
|
|
||||||
|
if UpperMap in eval(Scrap.GetSaveVar("ComSatsMissionsMapsFinished")):
|
||||||
|
Scrap.Set("AlarmFallDelta", -0.05)
|
||||||
|
Scrap.SetAlarm(0)
|
||||||
|
else:
|
||||||
|
Scrap.SetAlarm(1)
|
||||||
|
Scrap.Set("AlarmFallDelta",0)
|
||||||
|
|
||||||
|
Scrap.Set("OnCrazyDealFinished", "MissionsFuncs.OnCrazyDealFinishedMessage")
|
||||||
|
Scrap.Set("OnCrazyDealTarget", "MissionsFuncs.OnCrazyDealTarget")
|
||||||
|
|
||||||
|
# initialize the map
|
||||||
|
Map.Init(LevelPath)
|
||||||
|
MapSnd.Init(LevelPath)
|
||||||
|
MLibInit(LevelPath)
|
||||||
|
if (SuperDealModule):
|
||||||
|
SuperDealModule.Init(LevelPath)
|
||||||
|
|
||||||
|
Scrap.AddScheduledFunc(Scrap.GetTime() + 0.5, SetMapLabelText, ())
|
||||||
|
|
||||||
|
if (isDemo and Scrap.GetSaveVar("Player.NumLives") == "-1"):
|
||||||
|
Scrap.SetSaveVar("Player.NumLives", "0")
|
||||||
|
|
||||||
|
Scrap.Set("R_SceneBlurValue",0)
|
||||||
|
|
||||||
|
if OffLineGame and not inMainMenu and not isShipEdit:
|
||||||
|
Scrap.CreateSaveVar("GameSkill", "1")
|
||||||
|
Scrap.Set("GameSkill",int(Scrap.GetSaveVar("GameSkill")))
|
||||||
|
print "Actual Level at : ",LevelPath
|
||||||
|
|
||||||
|
|
||||||
|
def SetMapLabelText():
|
||||||
|
|
||||||
|
import Scorer
|
||||||
|
|
||||||
|
vis = SScorer.Get(0, Scorer.MissionScorerName, "Visible")
|
||||||
|
if (vis and vis == 1):
|
||||||
|
status = SScorer.Get(0, Scorer.MissionScorerName, "Status0")
|
||||||
|
if (status != 1 or (status == 1 and Scrap.GetSaveVar("Mission.Map") == Scrap.GetLevelPath()[7:])):
|
||||||
|
SScorer.SetLabelText(Scrap.GetLangStr("Station_" + Scrap.GetLevelPath()[7:]), Scrap.GetTime() + 10)
|
||||||
|
|
||||||
|
|
||||||
|
# Scrap.CreateSaveVar("Mission01","Searching")
|
||||||
|
# Scrap.CreateSaveVar("Mission01.Objetive","BadGuy")
|
||||||
|
# Scrap.GetSaveVar("Mission01")
|
||||||
|
# Scrap.DelSaveVars("Mission01.")
|
||||||
|
# Scrap.SetSaveVar("Mission01","Eliminate")
|
||||||
|
# Scrap.SaveGameVars("Save/Save01.sav")
|
||||||
|
# Scrap.LoadGameVars("Save/Save01.sav")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
####################################
|
||||||
|
## Closing routines
|
||||||
|
####################################
|
||||||
|
|
||||||
|
PROGRESSBAR_PC = {
|
||||||
|
"MENU":200,
|
||||||
|
"ORBIT":1070,
|
||||||
|
"SCRAPYARD":1693,
|
||||||
|
"BANK":1641,
|
||||||
|
"JUNKYARD":1434,
|
||||||
|
"SHIPEDIT":1265,
|
||||||
|
"DOWNTOWN":1745,
|
||||||
|
"OUTSKIRTS":1775,
|
||||||
|
"GAMBLINDEN":1252,
|
||||||
|
"COMMERCIAL":1790,
|
||||||
|
"FAKE":1462,
|
||||||
|
"PRESS":1691,
|
||||||
|
"POLICE":1764,
|
||||||
|
"TEMPLE":1382,
|
||||||
|
"TOWNHALL":1742,
|
||||||
|
"AB":1366,
|
||||||
|
"ABINDOOR":868,
|
||||||
|
"QF":1474,
|
||||||
|
"GDB":1517,
|
||||||
|
"FZ":1488,
|
||||||
|
"OM":1537,
|
||||||
|
"CA":1487,
|
||||||
|
"MCA":1553,
|
||||||
|
"MCB":1553,
|
||||||
|
"MDA":1553,
|
||||||
|
"MDB":1553,
|
||||||
|
"MOA":1553,
|
||||||
|
"MOB":1553,
|
||||||
|
"MSA":1553,
|
||||||
|
"MSB":1553,
|
||||||
|
}
|
||||||
|
|
||||||
|
PROGRESSBAR_XBOX = {
|
||||||
|
"MENU":200,
|
||||||
|
"ORBIT":845,
|
||||||
|
"SCRAPYARD":1189,
|
||||||
|
"BANK":1327,
|
||||||
|
"JUNKYARD":990,
|
||||||
|
"SHIPEDIT":589,
|
||||||
|
"DOWNTOWN":1208,
|
||||||
|
"OUTSKIRTS":1182,
|
||||||
|
"GAMBLINDEN":995,
|
||||||
|
"COMMERCIAL":1214,
|
||||||
|
"FAKE":1208,
|
||||||
|
"PRESS":1448,
|
||||||
|
"POLICE":1533,
|
||||||
|
"TEMPLE":1162,
|
||||||
|
"TOWNHALL":1539,
|
||||||
|
"AB":844,
|
||||||
|
"ABINDOOR":690,
|
||||||
|
"QF":968,
|
||||||
|
"GDB":964,
|
||||||
|
"FZ":975,
|
||||||
|
"OM":1014,
|
||||||
|
"CA":953,
|
||||||
|
"MCA":1042,
|
||||||
|
"MCB":1016,
|
||||||
|
"MDA":1046,
|
||||||
|
"MDB":1048,
|
||||||
|
"MOA":945,
|
||||||
|
"MOB":985,
|
||||||
|
"MSA":987,
|
||||||
|
"MSB":857,
|
||||||
|
}
|
||||||
|
|
||||||
|
def Close():
|
||||||
|
# Guarda el nъmero de ficheros a leer en el siguiente nivel
|
||||||
|
UpperMap = string.upper(Scrap.GetNewLevelPath()[7:])
|
||||||
|
print "Next level: %s" % UpperMap
|
||||||
|
|
||||||
|
PROGRESSBAR = ""
|
||||||
|
if Scrap.Get("IsXbox") == 1 :
|
||||||
|
PROGRESSBAR = PROGRESSBAR_XBOX
|
||||||
|
else :
|
||||||
|
PROGRESSBAR = PROGRESSBAR_PC
|
||||||
|
|
||||||
|
if PROGRESSBAR.has_key(UpperMap):
|
||||||
|
Scrap.Set("ProgressBar", PROGRESSBAR[UpperMap])
|
||||||
|
else:
|
||||||
|
Scrap.ConsoleError("ERROR: '%s' progress bar info not found \n" % UpperMap)
|
||||||
|
Scrap.Set("ProgressBar", Scrap.Def("ProgressBar"))
|
10
Logger/README.md
Normal file
10
Logger/README.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Logger
|
||||||
|
|
||||||
|
Logger for logging stuff.
|
||||||
|
|
||||||
|
```pyhton
|
||||||
|
import Logger
|
||||||
|
|
||||||
|
Logger.info("A")
|
||||||
|
Logger.error("OH NO!")
|
||||||
|
```
|
29
Logger/scripts/custom/logger.py
Normal file
29
Logger/scripts/custom/logger.py
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import Scrap
|
||||||
|
|
||||||
|
class Logger:
|
||||||
|
|
||||||
|
def __init__(self, name):
|
||||||
|
self.level=""
|
||||||
|
self.name=name
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "<Logger>"
|
||||||
|
|
||||||
|
def __call__(self, *args):
|
||||||
|
# frame = sys.modules[__name__].last_frame
|
||||||
|
# frame_info = (frame.f_code.co_name,frame.f_code.co_name)
|
||||||
|
# Scrap.Print(repr(frame_info)+"\n")
|
||||||
|
args=list(args)
|
||||||
|
|
||||||
|
for i in range(len(args)):
|
||||||
|
args[i]=str(args[i])
|
||||||
|
|
||||||
|
args = ["["+str(self.name)+"|"+string.upper(self.level)+"]"]+args
|
||||||
|
|
||||||
|
msg = string.join(args," ")
|
||||||
|
|
||||||
|
Scrap.Print(msg+"\n")
|
||||||
|
|
||||||
|
def __getattr__(self, level):
|
||||||
|
self.level=level
|
||||||
|
return self
|
4
Police2Gear/README.md
Normal file
4
Police2Gear/README.md
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# Police2Gear
|
||||||
|
|
||||||
|
Mod that replaces police default money-bagging action with transforming to
|
||||||
|
geared police
|
517
Police2Gear/scripts/chars/police.py
Normal file
517
Police2Gear/scripts/chars/police.py
Normal file
|
@ -0,0 +1,517 @@
|
||||||
|
import Scrap
|
||||||
|
import SInput
|
||||||
|
import SNet
|
||||||
|
import SWeap
|
||||||
|
import SScorer
|
||||||
|
import SSound
|
||||||
|
import SVec
|
||||||
|
import SAct
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def log(msg):
|
||||||
|
Scrap.Print("[STRNG][Police] " + str(msg) + "\n")
|
||||||
|
|
||||||
|
|
||||||
|
# WARNING : Never import any pyhton source library at the start up!
|
||||||
|
|
||||||
|
FXPoliceStealFile = "Models/GFX/Police/PoliceSteal.M3D"
|
||||||
|
FXPoliceGearConversionFile = "Models/GFX/Police/Conversion.M3D"
|
||||||
|
|
||||||
|
def LoadSirenActs():
|
||||||
|
|
||||||
|
# inicio de la sirena
|
||||||
|
SAct.CreateAction("SirenInit")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("Chanel",1)
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_SirenInit.M3D")
|
||||||
|
|
||||||
|
SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime"))
|
||||||
|
SAct.SetAct("EventName","Siren")
|
||||||
|
SAct.SetAct("EventFunc","!AnmSetAction")
|
||||||
|
|
||||||
|
SAct.SetAct("AddEventAtTime",SAct.GetAct("TimeOfFrame"+"6"))
|
||||||
|
SAct.SetAct("EventName","FXPoliceAlarmInit")
|
||||||
|
SAct.SetAct("EventFunc","!FXPoliceAlarmInit")
|
||||||
|
|
||||||
|
|
||||||
|
# loop de la sirena
|
||||||
|
SAct.CreateAction("Siren")
|
||||||
|
SAct.SetAct("isLoop",1)
|
||||||
|
SAct.SetAct("Chanel",1)
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Siren.M3D")
|
||||||
|
SAct.SetAct("MaxSpeed",1.3)
|
||||||
|
SAct.SetAct("MinSpeed",1.4)
|
||||||
|
|
||||||
|
|
||||||
|
# final de la sirena
|
||||||
|
SAct.CreateAction("SirenEnd")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("Chanel",1)
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_SirenEnd.M3D")
|
||||||
|
|
||||||
|
SAct.SetAct("AddEventAtTime",SAct.GetAct("TimeOfFrame"+"65"))
|
||||||
|
SAct.SetAct("EventName","FXPoliceAlarmEnd")
|
||||||
|
SAct.SetAct("EventFunc","!FXPoliceAlarmEnd")
|
||||||
|
|
||||||
|
|
||||||
|
def Init():
|
||||||
|
import MakeChar, Init, string
|
||||||
|
|
||||||
|
MakeChar.InitChar ("Police")
|
||||||
|
|
||||||
|
# ajustes varios de velocidad
|
||||||
|
MakeChar.MaxSpeed = 1.2
|
||||||
|
MakeChar.MinSpeed = 0.6
|
||||||
|
|
||||||
|
MakeChar.AddRelaxActions("Police",0)
|
||||||
|
SAct.GetAction("Relax0")
|
||||||
|
SAct.SetAct("anmConeView",1)
|
||||||
|
|
||||||
|
MakeChar.AddWalkActions ("Police",360,1)
|
||||||
|
MakeChar.AddFallAction ("Police",45,1,0)
|
||||||
|
MakeChar.AddDazeAction ("Police")
|
||||||
|
MakeChar.AddTalkAction ("Police",nExtraActions=3)
|
||||||
|
MakeChar.AddDiscover ("Police")
|
||||||
|
MakeChar.AddInitWalkActions("Police",360,0,1,["StrLeftInit","StrRightInit"])
|
||||||
|
|
||||||
|
MakeChar.AddFlashedAction("Police")
|
||||||
|
MakeChar.AddCrazyAction ("Police")
|
||||||
|
|
||||||
|
SAct.GetCls("Police")
|
||||||
|
SAct.SetCls("WRadius",69) # Radio de colision con el mundo
|
||||||
|
SAct.SetCls("VRadius",60) # Radio de colision con el mundo
|
||||||
|
SAct.SetCls("SRadius",20) # Radio de la capsula de soporte
|
||||||
|
|
||||||
|
SAct.SetCls("MinFallDist",20) # tamaño maximo que acepta como escalon para las caidas
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#### Lista de modificadores de nodos del policia ####
|
||||||
|
SAct.SetCls("Node0Name","Bip PoliceNoArmor Head") # Cabeza
|
||||||
|
SAct.SetCls("Node1Name","Bip PoliceNoArmor Spine1") # Tronco
|
||||||
|
|
||||||
|
# Relax
|
||||||
|
MakeChar.SetNodeRotation(0,0, 25, 50) # Cabeza
|
||||||
|
MakeChar.SetNodeRotation(0,1, 25, 50) # Tronco
|
||||||
|
|
||||||
|
#### Cuando le dan en la cabeza, la sirena se hunde
|
||||||
|
SAct.GetAction("DazedInit")
|
||||||
|
SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime"))
|
||||||
|
SAct.SetAct("EventName","AbortSiren")
|
||||||
|
SAct.SetAct("EventFunc","Police.AbortSiren")
|
||||||
|
|
||||||
|
#### Acciones Extra ####
|
||||||
|
|
||||||
|
# animavion de andandara
|
||||||
|
MakeChar.CreateRelaxAction("Police",90,"AlertCheck","Relax0")
|
||||||
|
SAct.GetAction("AlertCheck")
|
||||||
|
SAct.SetAct("anmConeView",1)
|
||||||
|
|
||||||
|
for ActName in (("",0),("NPC",360)):
|
||||||
|
# try get money
|
||||||
|
SAct.CreateAction("ActionInit"+ActName[0])
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_ActionInit.M3D")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("RotSpeed",ActName[1])
|
||||||
|
SAct.SetAct("UseDisp",0)
|
||||||
|
SAct.SetAct("PriorityLevel",100)
|
||||||
|
|
||||||
|
# evento de "Te succiono el dinero"
|
||||||
|
SAct.SetAct("AddEventAtTime",0.3)
|
||||||
|
SAct.SetAct("EventName","PoliceRestoreFreeTurn")
|
||||||
|
SAct.SetAct("EventFunc","!PoliceRestoreFreeTurn")
|
||||||
|
SAct.SetAct("EventDiscardable",0)
|
||||||
|
|
||||||
|
# trying to get money
|
||||||
|
SAct.CreateAction("Action"+ActName[0])
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Action.M3D")
|
||||||
|
SAct.SetAct("isLoop",1)
|
||||||
|
SAct.SetAct("RotSpeed",ActName[1])
|
||||||
|
SAct.SetAct("UseDisp",0)
|
||||||
|
SAct.SetAct("PriorityLevel",101)
|
||||||
|
|
||||||
|
# evento de "Te succiono el dinero"
|
||||||
|
SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime")*1.5)
|
||||||
|
SAct.SetAct("EventName","ShowMeTheMoney")
|
||||||
|
SAct.SetAct("EventFunc","!PoliceEndActionMoney")
|
||||||
|
|
||||||
|
|
||||||
|
# Bad luck getting money
|
||||||
|
SAct.CreateAction("ActionBad")
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_ActionBad.M3D")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("RotSpeed",0)
|
||||||
|
SAct.SetAct("UseDisp",0)
|
||||||
|
SAct.SetAct("PriorityLevel",101)
|
||||||
|
|
||||||
|
# Bad luck getting money
|
||||||
|
SAct.CreateAction("ActionOK")
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_ActionOK.M3D")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("RotSpeed",0)
|
||||||
|
SAct.SetAct("UseDisp",0)
|
||||||
|
SAct.SetAct("PriorityLevel",101)
|
||||||
|
|
||||||
|
# We laugh, and cry too
|
||||||
|
SAct.CreateAction("Laugh")
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Laugh.M3D")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("RotSpeed",360)
|
||||||
|
SAct.SetAct("UseDisp",0)
|
||||||
|
SAct.SetAct("PriorityLevel",102)
|
||||||
|
SAct.SetAct("NodeModifier",-1)
|
||||||
|
SAct.SetAct("AngleModifierSpeed",1.0)
|
||||||
|
SAct.SetAct("AutoFaceSpeed", 10)
|
||||||
|
SAct.SetAct("AutoFaceOffsetH", 0)
|
||||||
|
SAct.SetAct("AutoFaceOffsetV", 0)
|
||||||
|
|
||||||
|
import Init
|
||||||
|
if not Init.Outdoor:
|
||||||
|
# Police Fusion
|
||||||
|
SAct.CreateAction("Fusion")
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Fusion.M3D")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("PriorityLevel",200)
|
||||||
|
|
||||||
|
# evento de conversión de Policia en Gear
|
||||||
|
SAct.SetAct("AddEventAtTime",0)
|
||||||
|
SAct.SetAct("EventName","FusionInit")
|
||||||
|
SAct.SetAct("EventFunc","!FXPoliceGearConversion")
|
||||||
|
SAct.SetAct("EventDiscardable",0)
|
||||||
|
|
||||||
|
# evento de cambiazo efectivo y brutal!
|
||||||
|
SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime"))
|
||||||
|
SAct.SetAct("EventName","FusionInit")
|
||||||
|
# SAct.SetAct("EventFunc","Police.GotGear")
|
||||||
|
SAct.SetAct("EventFunc","!Police2GearEnd")
|
||||||
|
SAct.SetAct("EventDiscardable",0)
|
||||||
|
|
||||||
|
|
||||||
|
SAct.CreateAction("ActionFusion")
|
||||||
|
SAct.SetAct("AnmFilePath","Models/Chars/Police/Anm/Police_Fusion.M3D")
|
||||||
|
SAct.SetAct("isLoop",0)
|
||||||
|
SAct.SetAct("PriorityLevel",200)
|
||||||
|
|
||||||
|
# evento de conversión de Policia en Gear
|
||||||
|
SAct.SetAct("AddEventAtTime",0)
|
||||||
|
SAct.SetAct("EventName","ActionFusionInit")
|
||||||
|
SAct.SetAct("EventFunc","!FXPoliceGearConversion")
|
||||||
|
SAct.SetAct("EventDiscardable",0)
|
||||||
|
|
||||||
|
# evento de cambiazo efectivo y brutal!
|
||||||
|
SAct.SetAct("AddEventAtTime",SAct.GetAct("AnmTotalTime"))
|
||||||
|
SAct.SetAct("EventName","ActionFusionInit")
|
||||||
|
# SAct.SetAct("EventFunc","Police.GotGear")
|
||||||
|
# SAct.SetAct("EventFunc","!Police2GearEnd")
|
||||||
|
SAct.SetAct("EventDiscardable",0)
|
||||||
|
|
||||||
|
if string.upper(Init.Path) == 'LEVELS/GAMBLINDEN':
|
||||||
|
#MakeChar.CreateRelaxAction("Police",180,"Dance0", "Dance0" )
|
||||||
|
MakeChar.CreateRelaxAction("Police",180,"Dance", "Dance" )
|
||||||
|
SAct.SetAct("isLoop",1)
|
||||||
|
|
||||||
|
LoadSirenActs()
|
||||||
|
SAct.SetCls("OnCreate","Police.OnCreate")
|
||||||
|
|
||||||
|
SAct.SetCls("OnFreeResources","Police.OnFreeResources")
|
||||||
|
|
||||||
|
#### Police actions ######
|
||||||
|
SAct.SetCls("ActionPress","Police.GetGear")
|
||||||
|
|
||||||
|
|
||||||
|
##### Police Sounds #####
|
||||||
|
import PoliceSound;PoliceSound.Init("Police")
|
||||||
|
|
||||||
|
##### Police Effects #####
|
||||||
|
import Fx
|
||||||
|
|
||||||
|
if not Init.OutMapSkip :
|
||||||
|
Scrap.Set("FXPoliceStealFile",FXPoliceStealFile)
|
||||||
|
Scrap.SetDebrisSys(FXPoliceStealFile,1,0,0,1,0,0,Fx.FXPOLICESTEAL)
|
||||||
|
|
||||||
|
Scrap.Set("FXPoliceGearConversionFile",FXPoliceGearConversionFile)
|
||||||
|
Scrap.SetDebrisSys(FXPoliceGearConversionFile,2,0,0,1,0,0,Fx.FXPOLICEGEARCONVERSION)
|
||||||
|
|
||||||
|
##### Police Speech #####
|
||||||
|
import Speech
|
||||||
|
Speech.SpeechRoutines["Police"] = PoliceSpeech
|
||||||
|
|
||||||
|
|
||||||
|
def OnCreate(EntityName):
|
||||||
|
e = Scrap.GetEntity(EntityName)
|
||||||
|
e.TgType = "Green"
|
||||||
|
|
||||||
|
import CharAct;CharAct.OnCreate(EntityName)
|
||||||
|
import PoliceSound; PoliceSound.InitLoops(EntityName)
|
||||||
|
|
||||||
|
|
||||||
|
def OnFreeResources():
|
||||||
|
import Fx
|
||||||
|
|
||||||
|
Scrap.SetDebrisSys(FXPoliceStealFile,0,0,0,1,0,0,Fx.FXPOLICESTEAL)
|
||||||
|
Scrap.SetDebrisSys(FXPoliceGearConversionFile,0,0,0,1,0,0,Fx.FXPOLICEGEARCONVERSION)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def AbortSiren(EntityName,EventName,Time):
|
||||||
|
char = Scrap.GetEntity(EntityName)
|
||||||
|
if char.ActChan1:
|
||||||
|
char.Action = "SirenEnd" #cuchuflon!
|
||||||
|
|
||||||
|
def GetGear(EntityName):
|
||||||
|
me = Scrap.GetEntity(EntityName)
|
||||||
|
me.Action = "ActionFusion"
|
||||||
|
# changeTime = Scrap.GetTime() + SAct.GetAct("AnmTotalTime") + 0.1
|
||||||
|
# Scrap.AddScheduledFunc(changeTime, ChangeToGear, ())
|
||||||
|
|
||||||
|
|
||||||
|
def ChangeToGear():
|
||||||
|
import Chars
|
||||||
|
# Chars.LoadRes("Gear")
|
||||||
|
# Scrap.UsrEntity(0).ActCtrl="Gear"
|
||||||
|
|
||||||
|
|
||||||
|
# def GetGear(EntityName):
|
||||||
|
# import Chars, Menu
|
||||||
|
# global Cam, AuxInterp, newme, me
|
||||||
|
#
|
||||||
|
# char = Scrap.GetEntity(EntityName)
|
||||||
|
# char.Action = "Fusion"
|
||||||
|
#
|
||||||
|
# me = Scrap.GetEntity(EntityName)
|
||||||
|
#
|
||||||
|
# Cam = Scrap.GetEntity(Scrap.GetCam(0))
|
||||||
|
#
|
||||||
|
# # crea el interpolador intermedio
|
||||||
|
# AuxInterp = Scrap.CreateEntity("AuxInterp",me.Pos[0],me.Pos[1],me.Pos[2],"Obj")
|
||||||
|
# AuxInterp.Ang = me.ViewAng
|
||||||
|
#
|
||||||
|
# if me.Name == "PlayerZ":
|
||||||
|
# PlName = "Player0"
|
||||||
|
# else:
|
||||||
|
# PlName = "PlayerZ"
|
||||||
|
#
|
||||||
|
# newme = Chars.CreateMainChar(PlName,Scrap.GetSaveVar("Char"),me.Pos,me.Ang)
|
||||||
|
#
|
||||||
|
# AuxInterp.CamTgt = newme.CamTgt
|
||||||
|
# AuxInterp.MovePos = newme.Pos
|
||||||
|
# AuxInterp.MoveAng = newme.ViewAng
|
||||||
|
# AuxInterp.MoveFade = 3
|
||||||
|
# AuxInterp.MoveTime = SAct.GetAct('AnmTotalTime')
|
||||||
|
# SAct.GetClass(me.ActCtrl)
|
||||||
|
# Cam.Fov = SAct.GetCls("FOV")
|
||||||
|
# Cam.CamDist = SAct.GetCls("CamDist")
|
||||||
|
# Cam.CamAng = SAct.GetCls("CamAng")
|
||||||
|
# Cam.CamRot = SAct.GetCls("CamRot")
|
||||||
|
# Menu.MovieScorer(0)
|
||||||
|
# SInput.SetActionSet("Inactive")
|
||||||
|
|
||||||
|
|
||||||
|
def GotGear(EntityName, b, c):
|
||||||
|
import Chars, Menu, CharScorer
|
||||||
|
global Cam, AuxInterp, newme, me
|
||||||
|
|
||||||
|
SInput.SetActionSet("Walk")
|
||||||
|
|
||||||
|
Cam.MainTarget = Cam.Target = newme.Name
|
||||||
|
newme.Energy = me.Energy-1.0
|
||||||
|
newme.Life = 100
|
||||||
|
newme.UsrControl = 0
|
||||||
|
|
||||||
|
ActCtrl = me.ActCtrl
|
||||||
|
me.Active = 0
|
||||||
|
me.ActCtrl = ""
|
||||||
|
me.Del()
|
||||||
|
|
||||||
|
Chars.DiscardRes(ActCtrl)
|
||||||
|
AuxInterp.Del()
|
||||||
|
del Cam
|
||||||
|
del AuxInterp
|
||||||
|
CharScorer.Create(0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# comienza a pedir dinero
|
||||||
|
# def ActionPress(EntityName):
|
||||||
|
# char = Scrap.GetEntity(EntityName)
|
||||||
|
# if not char.isFalling:
|
||||||
|
# char.Action = "ActionInit"
|
||||||
|
# if char.Action == "ActionInit":
|
||||||
|
# char.DefLoop = "Action"
|
||||||
|
|
||||||
|
# cuando termina el loop de pedir dinero
|
||||||
|
# def EndActionMoney(EntityName,EventName,Time):
|
||||||
|
# char = Scrap.GetEntity(EntityName)
|
||||||
|
# if not char.ActionPress:
|
||||||
|
# char.ForceDefLoop = "Relax"
|
||||||
|
# char.ForceAction = "Relax"
|
||||||
|
|
||||||
|
|
||||||
|
# Scrap.GetEntity("DM_Door_Elevator_00").RadarShow = 1
|
||||||
|
|
||||||
|
def GoToMission(CharName):
|
||||||
|
ch = Scrap.GetEntity(CharName)
|
||||||
|
ch.LLogicGotoMainMission = 1
|
||||||
|
|
||||||
|
ResState = 0
|
||||||
|
|
||||||
|
##
|
||||||
|
## Rutina de parloteo del Policia
|
||||||
|
####################################
|
||||||
|
def PoliceSpeech(UsrName,CharName,optId,FullOption):
|
||||||
|
global ResState
|
||||||
|
import Speech, Chars, Challenge, Menu, CharsNPC
|
||||||
|
|
||||||
|
ch = Scrap.GetEntity(CharName)
|
||||||
|
Speech.PlayerName = UsrName
|
||||||
|
Speech.NPCName = CharName
|
||||||
|
|
||||||
|
charType = "Police"
|
||||||
|
|
||||||
|
if (optId == "Talk"):
|
||||||
|
CharsNPC.CheckActualEntity(CharName)
|
||||||
|
|
||||||
|
if ch.LLogicState==10:
|
||||||
|
Speech.OnSpch("Generics_PoliceWereIsGoInitMsg1","Generics_PoliceWereIsGoInitAns1")
|
||||||
|
else:
|
||||||
|
rndval = apply(Scrap.Rand, (1.0 , 3.9) )
|
||||||
|
|
||||||
|
if (Speech.OnSpch("Generics_" + charType + "_InitMsg1","Generics_" + charType + "_InitAns"+`int(rndval)`)):
|
||||||
|
CharsNPC.optionsList, CharsNPC.subOptionsList = CharsNPC.ClassifyOptions(charType)
|
||||||
|
Speech.StdAnsLst(CharsNPC.optionsList+["Generics_PoliceWereIs"])
|
||||||
|
numOpts = len(CharsNPC.optionsList)+1
|
||||||
|
index = 0
|
||||||
|
|
||||||
|
if (Scrap.GetSaveVar("Player.InfiniteLives") == "0"):
|
||||||
|
Challenge.AddChallenge(ch, UsrName, numOpts)
|
||||||
|
|
||||||
|
elif (optId in CharsNPC.optionsList):
|
||||||
|
|
||||||
|
if Speech.OnSpch(optId + "Msg", optId + "Ans"):
|
||||||
|
|
||||||
|
index = CharsNPC.optionsList.index(optId)
|
||||||
|
index = index + 1
|
||||||
|
|
||||||
|
CharsNPC.IncludeSubOptions(optId)
|
||||||
|
Speech.StdAnsLst(CharsNPC.optionsList+["Generics_PoliceWereIs"])
|
||||||
|
numOpts = len(CharsNPC.optionsList)+1
|
||||||
|
ch.ArriOpt = index
|
||||||
|
if (Scrap.GetSaveVar("Player.InfiniteLives") == "0"):
|
||||||
|
Challenge.AddChallenge(ch, UsrName, numOpts)
|
||||||
|
|
||||||
|
elif optId=="Generics_PoliceWereIs":
|
||||||
|
ch.LLogicGotoMainMission = 1
|
||||||
|
ch.LLogicState = 0
|
||||||
|
ch.LLogicIdle = 1
|
||||||
|
if ch.LLogicPoliceResult == 0:
|
||||||
|
Speech.OnSpch("Generics_PoliceWereIsMsg","Generics_PoliceWereIsNo")
|
||||||
|
ch.ArriOpt = 0
|
||||||
|
else:
|
||||||
|
Speech.OnEndOfSpeech = GoToMission
|
||||||
|
Speech.OnEndOfSpeechParams = (ch.Name,)
|
||||||
|
Speech.OnSpch("Generics_PoliceWereIsMsg","Generics_PoliceWereIsYes")
|
||||||
|
Speech.RestoreState(CharName)
|
||||||
|
|
||||||
|
elif optId=="ChallengeRaceStdOpt0":
|
||||||
|
if Speech.OnSpch("ChallengeRace" + charType + "Opt1","ChallengeRace" + charType + "Msg1"):
|
||||||
|
Challenge.challengeType = "Race"
|
||||||
|
Challenge.foeType = charType
|
||||||
|
Challenge.SetChallengeOptions(ch)
|
||||||
|
|
||||||
|
elif optId=="ChallengeCombatStdOpt0":
|
||||||
|
if Speech.OnSpch("ChallengeCombat" + charType + "Opt1","ChallengeCombat" + charType + "Msg1"):
|
||||||
|
Challenge.challengeType = "Combat"
|
||||||
|
Challenge.foeType = charType
|
||||||
|
Challenge.SetChallengeOptions(ch)
|
||||||
|
|
||||||
|
elif optId=="ChallengeRaceStdOpt1":
|
||||||
|
Challenge.OnChallengeOpt(1, ch)
|
||||||
|
|
||||||
|
elif optId=="ChallengeRaceStdOpt2":
|
||||||
|
Challenge.OnChallengeOpt(2, ch)
|
||||||
|
|
||||||
|
elif optId=="ChallengeRaceStdOpt3":
|
||||||
|
Challenge.OnChallengeOpt(3, ch)
|
||||||
|
|
||||||
|
elif optId=="ChallengeRaceStdOpt4":
|
||||||
|
if Speech.OnSpch("ChallengeRaceStdOpt2","ChallengeRace" + charType + "Msg3"):
|
||||||
|
Speech.StdAnsLst(CharsNPC.optionsList)
|
||||||
|
numOpts = len(CharsNPC.optionsList)
|
||||||
|
Challenge.AddChallenge(ch, UsrName, numOpts)
|
||||||
|
index = 0
|
||||||
|
|
||||||
|
elif optId=="GiveWhy": # Preguntarle por que es tan cabron
|
||||||
|
if Speech.OnSpch("Generics_PoliceBribeGiveWhyAns","Generics_PoliceBribeGiveWhyMsg"):
|
||||||
|
ResState = 0
|
||||||
|
ch.ForceAction = "FaceToTalk"
|
||||||
|
ch.ForceDefLoop = "TalkListenNPC"
|
||||||
|
Speech.OnEndOfSpeech = OnEndOfSpeech
|
||||||
|
elif optId=="GiveYes": # darle soborno al policia
|
||||||
|
if Scrap.GetMoney()>=Scrap.Get("PoliceStealQuanto"):
|
||||||
|
Scrap.SetMoney(Scrap.GetMoney()-Scrap.Get("PoliceStealQuanto"))
|
||||||
|
Scrap.SetAlarm(0)
|
||||||
|
# pierdes tu preciado dinero
|
||||||
|
ResState = 1
|
||||||
|
ch.LLogicState = 0
|
||||||
|
ch.LLogicTarget = ""
|
||||||
|
ch.ForceAction = "Relax"
|
||||||
|
ch.ForceDefLoop = "Relax"
|
||||||
|
if Speech.OnSpch("Generics_PoliceBribeGiveYesAns","Generics_PoliceBribeGiveYesMsg"):
|
||||||
|
Speech.OnEndOfSpeech = OnEndOfSpeech
|
||||||
|
else:
|
||||||
|
# creo que no puedes pagarle
|
||||||
|
if Speech.OnSpch("Generics_PoliceBribeCantDoAns","Generics_PoliceBribeCantDoMsg"):
|
||||||
|
ResState = 0
|
||||||
|
ch.ForceAction = "FaceToTalk"
|
||||||
|
ch.ForceDefLoop = "TalkListenNPC"
|
||||||
|
Speech.OnEndOfSpeech = OnEndOfSpeech
|
||||||
|
elif optId=="GiveNo": # no darle ni una mierda al policia
|
||||||
|
|
||||||
|
if Scrap.Rand(0,100) < 50:
|
||||||
|
# se cabrea
|
||||||
|
ch = Scrap.GetEntity(Speech.NPCName)
|
||||||
|
me = Scrap.GetEntity(Speech.PlayerName)
|
||||||
|
if Speech.PlayerAns(me,ch,"Generics_PoliceBribeGiveNoAns",OnEndOfSpeech):
|
||||||
|
ResState = -1
|
||||||
|
Speech.OnEndOfSpeech = OnEndOfSpeech
|
||||||
|
else:
|
||||||
|
# no se cabrea pero te advierte!
|
||||||
|
ch.LLogicState = 0
|
||||||
|
ch.LLogicTarget = ""
|
||||||
|
ch.ForceAction = "Relax"
|
||||||
|
ch.ForceDefLoop = "Relax"
|
||||||
|
Speech.OnSpch("Generics_PoliceBribeGiveNoAns","Generics_PoliceBribeGiveNoMsg")
|
||||||
|
else:
|
||||||
|
print "Error PoliceSpeech(",UsrName,CharName,optId,FullOption,")"
|
||||||
|
PoliceSpeech(UsrName,CharName,"Talk",FullOption)
|
||||||
|
|
||||||
|
|
||||||
|
def OnEndOfSpeech():
|
||||||
|
import Speech
|
||||||
|
ch = Scrap.GetEntity(Speech.NPCName)
|
||||||
|
me = Scrap.GetEntity(Speech.PlayerName)
|
||||||
|
|
||||||
|
if ResState==1:
|
||||||
|
if (ch):
|
||||||
|
ch.ForceAction = "ActionOK"
|
||||||
|
Scrap.SetCallFunc("!FXPoliceSteal")
|
||||||
|
Scrap.AddParams(Speech.NPCName)
|
||||||
|
Scrap.AddParams(me.Name)
|
||||||
|
Scrap.Execute()
|
||||||
|
elif ResState==-1:
|
||||||
|
if (ch):
|
||||||
|
ch.LLogicPoliceResult = -1
|
||||||
|
me.ForceAction = "Relax"
|
||||||
|
me.ForceDefLoop = "Relax"
|
||||||
|
me.AutoSelect = 1
|
||||||
|
else:
|
||||||
|
if (ch):
|
||||||
|
if ch.Action[0:5] == "Relax":
|
||||||
|
ch.LLogicIdle = ResState
|
||||||
|
ch.LLogicPoliceResult = ResState
|
||||||
|
ch.ForceAction = "ActionNPC"
|
||||||
|
ch.ForceDefLoop = "ActionNPC"
|
||||||
|
ch.SelectedEntity = Scrap.UsrEntity(0).Name
|
||||||
|
|