Mafia 2 FreeRide Lua Скрипт: Повышенная сложность и добавленные функции
Код сделан более интересным и добавлены новые функции:
-- Установка времени суток function SetTimeOfDay(ARG_0, ARG_1) if ARG_1 == 'day' then game.gfx:SetWeatherTemplate('DTFreeRideDay') elseif ARG_1 == 'night' then game.gfx:SetWeatherTemplate('DTFreerideNight') elseif ARG_1 == 'rain' then game.gfx:SetWeatherTemplate('DTFreeRideDayRain') elseif ARG_1 == 'winter' then game.gfx:SetWeatherTemplate('DTFreeRideDayWinter') elseif ARG_1 == 'snow' then game.gfx:SetWeatherTemplate('DTFreeRideDaySnow') elseif ARG_1 == 'night_snow' then game.gfx:SetWeatherTemplate('DTFreeRideNightSnow') end end
-- Добавление машины в гараж function AddCarToGarage(ARG_0, ARG_1) game.garage:CheatAddCar(ARG_1, true) end
-- Установка отношений между персонажами function SetRelationships(ARG_0) ai.relationships:SetRelationship(enums.AI_SIDE.PLAYER, enums.AI_TYPE.FRIEND, enums.AI_SIDE.GANG, enums.AI_TYPE.CLEMENTE, 10) ai.relationships:SetRelationship(enums.AI_SIDE.GANG, enums.AI_TYPE.CLEMENTE, enums.AI_SIDE.PLAYER, enums.AI_TYPE.FRIEND, 10) ai.relationships:SetRelationship(enums.AI_SIDE.PLAYER, enums.AI_TYPE.ENEMY, enums.AI_SIDE.GANG, enums.AI_TYPE.VITO, 10) ai.relationships:SetRelationship(enums.AI_SIDE.GANG, enums.AI_TYPE.VITO, enums.AI_SIDE.PLAYER, enums.AI_TYPE.ENEMY, 10) end
-- Добавление машины в игру function AddCarToGame(ARG_0, ARG_1) game.garage:CheatAddCar(ARG_1, true) player:SetPos(Math:newVector(12.0925, 1030.84, -19.6336)) game.game:CreateCar(ARG_1) -- Задать начальное положение машины game.entitywrapper:GetEntityByName('Car').GetCar().SetPos(Math:newVector(12.0925, 1030.84, -19.6336)) game.entitywrapper:GetEntityByName('Car').GetCar().SetRotation(Math:newVector(0, 0, 0)) -- Задать направление движения машины game.entitywrapper:GetEntityByName('Car').GetCar().SetForwardDirection(Math:newVector(0, 1, 0)) -- Задать скорость машины game.entitywrapper:GetEntityByName('Car').GetCar().SetVelocity(Math:newVector(0, 0, 0)) -- Установить уровень повреждений машины game.entitywrapper:GetEntityByName('Car').GetCar().SetHealth(100) -- Включить машину game.entitywrapper:GetEntityByName('Car').GetCar().Activate() game.entitywrapper:GetEntityByName('Car').GetCar().SetVehicleState(enums.VehicleState.IDLE) game.entitywrapper:GetEntityByName('Car').GetCar().StartEngine(true) -- Добавить водителя в машину local driver = game.entitywrapper:CreateEntity(enums.EntityType.HUMAN) driver:SetPos(Math:newVector(12.0925, 1030.84, -19.6336)) driver:Activate() driver:EnterVehicle(game.entitywrapper:GetEntityByName('Car'), 1, true) -- Установить водителя как управляющего машиной driver:SetControlStyle(enums.ControlStyle.DRIVER) -- Установить имя водителя driver:SetName('Driver') driver:RegisterToMessages(ARG_0) -- Установить цель водителя driver:SetTarget(Math:newVector(12.0925, 1030.84, -19.6336)) driver:SetDirection(Math:newVector(0, 1, 0)) -- Установить скорость водителя driver:SetSpeed(10) -- Включить AI-контроль водителя driver:CreateController('car_driver') driver:InitializeAIParams(enums.CarAIProfile.PIRATE, 1) driver:MoveTo(Math:newVector(12.0925, 1030.84, -19.6336)) -- Задать уровень здоровья водителя driver:SetHealth(100) -- Включить водителя driver:Activate() driver:StartEngine(true) driver:SetVehicleState(enums.VehicleState.IDLE) end
function onGameInit(ARG_0) ARG_0.friendlyDoorCfg = common.ShopScripts.FriendlyDoor.Cfg registerForMachineMessages(ARG_0) DelayBuffer:Insert(FreeRideStart2, {ARG_0}, 100, 1, false) game.datastore:SetString('DerekStatus', 'Opened') game.datastore:SetString('CharlieStatus', 'Opened') game.datastore:SetString('BruskyStatus', 'Opened') guid = base.ScriptMachine:getScriptGuid(ARG_0.scriptId) SetRelationships(ARG_0) end
function onEvent(ARG_0, ARG_1) if ARG_1:GetType() == enums.EventType.HUMAN then if ARG_1:GetMessage() == enums.HumanMessages.ON_OWNER_CHANGE then if ARG_1:GetReceiverGUID() == player:GetGuid() then if player:GetOwner() == hunter then idStart = DelayBuffer:Insert(Escape, {ARG_0}, 4000, 1, false, 'Escaper') end if player:GetOwner() == escaper then idStart = DelayBuffer:Insert(Hunt, {ARG_0}, 4000, 1, false, 'Hunter') end end elseif ARG_1:GetMessage() == enums.ActorMessages.ACTIVATE and ARG_1:HasName('OnDeActivate') then if ARG_1:GetReceiverGUID() == joe:GetGuid() then player:UnregisterFollower(joe) joe:UnregisterFromMessages() end if ARG_1:GetReceiverGUID() == henry:GetGuid() then player:UnregisterFollower(henry) henry:UnregisterFromMessages() end end end if ARG_1:GetType() == enums.EventType.BASEMESSAGE then if ARG_1:GetMessage() == 1 then FreeRideStart2(ARG_0) elseif ARG_1:GetMessage() == 2 then CreateActionJoe(ARG_0) CreateActionHenry(ARG_0) end end if ARG_1:HasName('StartMe') then StartMe(ARG_0) end if ARG_1:HasName('StopMe') then StopMe(ARG_0) end if ARG_1:HasName('StartHenry') then StartHenry(ARG_0) end if ARG_1:HasName('StopHenry') then StopHenry(ARG_0) end end
function Escape(ARG_0) if soJde ~= nil then soJde:UserData():Terminate() end pozice = Math:newVector() pozice:set(-1526.62, 549.156, -20.6837) joe:GetInOutCar(escaper, 1, false, false) escaper:DestroyController() escaper:CreateController('car_escaper') escaper:EscapeMode() escaper:InitializeAIParams(enums.CarAIProfile.PIRATE, 1) escaper:MoveTo(pozice, STOP) game.navigation:RegisterIconEntity('Escaper', 4, 2, '0051010001', true) end
function Hunt(ARG_0) if soJde ~= nil then soJde:UserData():Terminate() end joe:GetInOutCar(hunter, 1, false, false) hunter:DestroyController() hunter:CreateController('car_hunter') hunter:InitializeAIParams(enums.CarAIProfile.PIRATE, 1) hunter:HuntCar(escaper) hunter:HuntMode(enums.CarHuntMode.ALONG) game.navigation:RegisterIconEntity('Hunter', 7, 2, '0051010002', true) end
function FreeRideStart2(ARG_0) ai.relationships:SetRelationship(enums.AI_SIDE.PLAYER, enums.AI_TYPE.FRIEND, enums.AI_SIDE.GANG, enums.AI_TYPE.CLEMENTE, 10) ai.relationships:SetRelationship(enums.AI_SIDE.GANG, enums.AI_TYPE.CLEMENTE, enums.AI_SIDE.PLAYER, enums.AI_TYPE.FRIEND, 10) joe = nil henry = nil hunter = nil escaper = nil id = CommandBuffer:Insert(ARG_0, { function(ARG_0) if game.datastore:GetNumber('missionPart') < 4 then return game.sds:ActivateStreamMapLine('free_summer_load') else return game.sds:ActivateStreamMapLine('free_winter_load') end end, function(ARG_0) if game.datastore:GetNumber('missionPart') == 1 then game.gfx:SetWeatherTemplate('DTFreeRideDay') season = 'summer' elseif game.datastore:GetNumber('missionPart') == 2 then game.gfx:SetWeatherTemplate('DTFreeRideDayRain') season = 'summer' elseif game.datastore:GetNumber('missionPart') == 3 then game.gfx:SetWeatherTemplate('DTFreerideNight') season = 'summer' elseif game.datastore:GetNumber('missionPart') == 4 then game.gfx:SetWeatherTemplate('DTFreeRideDayWinter') season = 'winter' elseif game.datastore:GetNumber('missionPart') == 5 then game.gfx:SetWeatherTemplate('DTFreeRideDaySnow') season = 'winter' elseif game.datastore:GetNumber('missionPart') == 6 then game.gfx:SetWeatherTemplate('DTFreeRideNightSnow') season = 'winter' end end, function(ARG_0) game.game:SaveGame(1) return game.game:GetSaveGameSyncObject() end, function(ARG_0) hunter = nil escaper = nil player = game.game:GetActivePlayer() player:RegisterToMessages(guid, enums.EventType.HUMAN, enums.HumanMessages.ENTER_VEHICLE) player:RegisterToMessages(guid, enums.EventType.HUMAN, enums.HumanMessages.ON_OWNER_CHANGE) startPos = Math:newVector() hunterPos = Math:newVector() escaperPos = Math:newVector() startPos:set(69.6347, 909.077, -19.6336) hunterPos:set(129.172, 910.934, -22.05) escaperPos:set(129.156, 923.584, -22.47) player:SetPos(startPos) game.garage:CheatAddCar('Ascot_BaileyS200_pha', true) game.garage:CheatAddCar('Berkley_Kingfisher_pha', true) game.garage:CheatAddCar('Delizia_Grandeamerica', true) game.garage:CheatAddCar('Hot_Rod_1', true) game.garage:CheatAddCar('Hot_Rod_2', true) game.garage:CheatAddCar('Hot_Rod_3', true) game.garage:CheatAddCar('Houston_Wasp_pha', true) game.garage:CheatAddCar('ISW_508', true) game.garage:CheatAddCar('Jeep', true) game.garage:CheatAddCar('Jeep_civil', true) game.garage:CheatAddCar('Jefferson_Futura_pha', true) game.garage:CheatAddCar('Jefferson_provincial', true) game.garage:CheatAddCar('Lassiter_69', true) game.garage:CheatAddCar('Lassiter_75_pha', true) game.garage:CheatAddCar('Milk_Truck', true) game.garage:CheatAddCar('Potomac_Indian', true) game.garage:CheatAddCar('Quicksilver_Windsor_pha', true) game.garage:CheatAddCar('Quicksilver_Windsor_Taxi_pha', true) game.garage:CheatAddCar('Shubert_34', true) game.garage:CheatAddCar('Shubert_38', true) game.garage:CheatAddCar('Shubert_Armoured', true) game.garage:CheatAddCar('Shubert_Beverly', true) game.garage:CheatAddCar('Shubert_Frigate_pha', true) game.garage:CheatAddCar('Shubert_Hearse', true) game.garage:CheatAddCar('Shubert_Panel', true) game.garage:CheatAddCar('Shubert_PickUp', true) game.garage:CheatAddCar('Shubert_Taxi', true) game.garage:CheatAddCar('Shubert_Truck_CT', true) game.garage:CheatAddCar('Shubert_Truck_SG', true) game.garage:CheatAddCar('Shubert_Truck_SP', true) game.garage:CheatAddCar('Smith_200_p_pha', true) game.garage:CheatAddCar('Smith_200_pha', true) game.garage:CheatAddCar('Smith_coupe', true) game.garage:CheatAddCar('Smith_Mainline_pha', true) game.garage:CheatAddCar('Smith_Stingray_pha', true) game.garage:CheatAddCar('Smith_Truck', true) game.garage:CheatAddCar('Smith_V8', true) game.garage:CheatAddCar('Smith_Wagon_pha', true) game.garage:CheatAddCar('Trautenberg_Grande', true) game.garage:CheatAddCar('Ulver_NewYorker', true) game.garage:CheatAddCar('Ulver_NewYorker_p', true) game.garage:CheatAddCar('Walker_Rocket', true) game.garage:CheatAddCar('Walter_Coupe', true) game.garage:CheatAddCar('Chaffeque', true) game.garage:CheatAddCar('Elysium', true) game.garage:CheatAddCar('Roller', true) game.garage:CheatAddCar('Waybar', true) game.garage:CheatAddCar('Moscardo_AS37_pha', true) return game.sds:ActivateStreamMapLine('free_joe_load')
end,
function(_ARG_0_)
return game.sds:GetSyncObjectForLoadSDS('italy')
end,
function(_ARG_0_)
if season == 'summer' then
game.traffic:OpenSeason(140)
game.speech:LoadStage(140)
game.radio:SetContent('Empire', 'all', 'Empire_07010')
game.radio:SetContent('Classic', 'all', 'Classic_07010')
game.radio:SetContent('Delta', 'all', 'Delta_07010')
elseif season == 'winter' then
game.traffic:OpenSeason(50)
game.speech:LoadStage(50)
game.radio:SetContent('Empire', 'all', 'Empire_02004')
game.radio:SetContent('Classic', 'all', 'Classic_02004')
game.radio:SetContent('Delta', 'all', 'Delta_02004')
else
game.traffic:OpenSeason(140)
game.speech:LoadStage(140)
game.radio:SetContent('Empire', 'all', 'Empire_07010')
game.radio:SetContent('Classic', 'all', 'Classic_07010')
game.radio:SetContent('Delta', 'all', 'Delta_07010')
end
joe = game.entitywrapper:GetEntityByName('Joe')
henry = game.entitywrapper:GetEntityByName('Henry')
hunter = game.entitywrapper:GetEntityByName('Hunter')
escaper = game.entitywrapper:GetEntityByName('Escaper')
startPos:set(66.8521, 905.596, -19.6336)
joe:SetPos(startPos)
joe:Activate()
joe:InventoryAddWeapon(4, 21)
startPos:set(66.8521, 906.596, -19.6336)
henry:SetPos(startPos)
henry:Activate()
hunter:SetPos(hunterPos)
escaper:SetPos(escaperPos)
hunter:Activate()
escaper:Activate()
escaper:SetColor(34, 34)
hunter:SetColor(21, 21)
player:MakeCarOwnership(escaper)
player:MakeCarOwnership(hunter)
sendMessage(_ARG_0_, 2, 200)
joe:RegisterToMessages(guid, enums.EventType.ACTOR, enums.ActorMessages.ACTIVATE)
henry:RegisterToMessages(guid, enums.EventType.ACTOR, enums.ActorMessages.ACTIVATE)
player:SetControlStyle(enums.ControlStyle.FREE)
game.game:SoundFadeIn(1000)
return game.hud:FaderFadeIn(1000)
end
}) end
function CreateActionJoe(ARG_0) joe:RegisterToMessages(guid) Math:newVector():set(0, 0, 0) action = game.game:CreateScriptActorAction(joe, Math:newVector(), 1.5, 'StartMe', '0050000023') end
function CreateActionHenry(ARG_0) henry:RegisterToMessages(guid) Math:newVector():set(0, 0, 0) actionHenry = game.game:CreateScriptActorAction(henry, Math:newVector(), 1.5, 'StartHenry', '0050000023') end
function StartHenry(ARG_0) id = CommandBuffer:Insert(ARG_0, { function(ARG_0) game.game:ChangePlayerModel('VITSUIT', -1) end, function(ARG_0) ARG_0.friendlyDoorCfg:AddWingman(henry:GetGuid()) soHenry = henry:Follow(game.game:GetActivePlayer(), 'RUN', 3.5, 5, true) game.game:GetActivePlayer():RegisterFollower(henry) return game.delayed:CreateDelayedSynchroObject(100) end, function(ARG_0) actionHenry:SetEventName('StopHenry') actionHenry:SetTextId('0050000024') end }) end
function StopHenry(ARG_0) id = CommandBuffer:Insert(ARG_0, { function(ARG_0) game.game:ChangePlayerModel('VITPRA', -1) end, function(ARG_0) ARG_0.friendlyDoorCfg:RemoveWingman(henry:GetGuid()) if soHenry ~= nil then soHenry:UserData():Terminate() end player:UnregisterFollower(henry) return game.delayed:CreateDelayedSynchroObject(100) end, function(ARG_0) actionHenry:SetEventName('StartHenry') actionHenry:SetTextId('0050000023') end }) end
function StartMe(ARG_0) id = CommandBuffer:Insert(ARG_0, { function(ARG_0) game.game:ChangePlayerModel('VITTUX', -1) end, function(ARG_0) ARG_0.friendlyDoorCfg:AddWingman(joe:GetGuid()) soJde = joe:Follow(game.game:GetActivePlayer(), 'RUN', 2, 3.5, true) game.game:GetActivePlayer():RegisterFollower(joe) return game.delayed:CreateDelayedSynchroObject(100) end, function(ARG_0) action:SetEventName('StopMe') action:SetTextId('0050000024') end }) end
function StopMe(ARG_0) id = CommandBuffer:Insert(ARG_0, { function(ARG_0) game.game:ChangePlayerModel('VITPRA', -1) end, function(ARG_0) ARG_0.friendlyDoorCfg:RemoveWingman(joe:GetGuid()) if soJde ~= nil then soJde:UserData():Terminate() end player:UnregisterFollower(joe) return game.delayed:CreateDelayedSynchroObject(100) end, function(ARG_0) action:SetEventName('StartMe') action:SetTextId('0050000023') end }) end
原文地址: https://www.cveoy.top/t/topic/nKdA 著作权归作者所有。请勿转载和采集!