Bully-Board
Bully Modding Section => Bully Modding => TUTORIALS => Topic started by: Unknownsoldier on November 10, 2015, 10:02:59 PM
-
Hello everyone. This is a well requested tutorial, however, many have already figured out how to even make this work. And I looked around the board for a bit, and discovered there is NO full tutorial on how to actually do this.
So here we go...
BEFORE STARTING THE TUTORIAL, make sure you do this:
Go to control panel, then find Folder Options. Now, go to the second tab on the top,(iirc its View) and uncheck "Hide extensions for known file types". This will allow you to view the full extension of files, and you will also be able to change them. Now click OK.
First, you may need the decompiled scripts. I am not sure if I can release those, so I will post the Last Minute Shopping(note it's most likely not going to be able to compile, but we just need 1 line from it):
-- Decompiled using luadec 3.2 -- Sun Feb 07 23:28:49 2010
-- File name: 2_01.lur
local l_0_0 = false
local l_0_1, l_0_2, l_0_3, l_0_4, l_0_5, l_0_6, l_0_7 = nil, nil, nil, nil, nil, nil, nil
local l_0_8 = 300
local l_0_9 = nil
local l_0_10 = 209.03199768066
local l_0_11 = -73.281303405762
local l_0_12 = 8.6000003814697
local l_0_13 = false
local l_0_14 = false
local l_0_15 = false
local l_0_16 = true
local l_0_17 = nil
local l_0_18 = {}
local l_0_19, l_0_20, l_0_21 = nil, nil, nil
local l_0_22 = {}
local l_0_23, l_0_24, l_0_25, l_0_26, l_0_27 = nil, nil, nil, nil, nil
local l_0_28 = PedGetUniqueModelStatus(58)
local l_0_29, l_0_30, l_0_31, l_0_32, l_0_33, l_0_34 = nil, nil, nil, nil, nil, nil
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Overwrote pending register. (Assignments::assign)
-- Confused at declaration of local variable. (Assignments::declareLocals) -- Overwrote pending register. (Assignments::assign)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Overwrote pending register. (Assignments::assign)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Overwrote pending register. (Assignments::assign)
F_TableInit = function()
l_0_18 = nil
end
F_CameraDebug = function()
while 1 do
if IsButtonPressed(14, 0) then
F_CameraTweak()
end
Wait(0)
end
Wait(0)
end
F_Debug = function()
CameraFade(1000, 1)
AreaTransitionPoint(2, POINTLIST._2_01_PLAYERSTART)
local l_3_0, l_3_1, l_3_2 = nil, nil, nil
TextPrint("2_01_OBACKEDNA", 4, 1)
l_0_2 = nil
l_0_1 = PedCreatePoint(58, POINTLIST._2_01_EDNAFIN)
PedSetFlag(l_0_1, 133, false)
PedSetPosPoint(l_0_1, POINTLIST._2_01_EDNAFIN)
TextPrintString("Move to Caf Entrance to ready NIS", 4, 1)
l_0_2 = AddBlipForChar(l_0_1, 12, 0, 4)
PedSetInvulnerable(l_0_1, true)
repeat
Wait(0)
until PlayerIsInTrigger(TRIGGER._2_01_EDNAFACEPLAYER)
TextPrintString("NIS ready to fire", 4, 1)
PedFaceObject(l_0_1, gPlayer, 3, 1)
repeat
if PlayerIsInAreaObject(l_0_1, 2, 1, 0) then
F_CinEnding()
Wait(500)
l_0_13 = true
end
Wait(0)
until l_0_13
end
MissionSetup = function()
PlayCutsceneWithLoad("2-01", true, true, true)
shared.gEdnaOverride = true
DATLoad("2_01.DAT", 2)
DATInit()
F_TableInit()
SoundPlayInteractiveStream("MS_SearchingLow.rsm", 0.80000001192093)
SoundSetMidIntensityStream("MS_SearchingMid.rsm", 0.80000001192093)
SoundSetHighIntensityStream("MS_SearchingHigh.rsm", 0.80000001192093)
MissionDontFadeIn()
l_0_30 = MissionObjectiveAdd("2_01_O1")
PedSetUniqueModelStatus(58, -1)
LoadAnimationGroup("2_01LastMinuteShop")
LoadAnimationGroup("NIS_2_01")
shared.gOverrideSchoolGates = false
CreateThread("T_BikeMountTut")
end
T_BikeMountTut = function()
repeat
Wait(0)
until if not PlayerIsInTrigger(TRIGGER._2_01_TUTPLAY1) or not PlayerIsInAnyVehicle() then
TutorialShowMessage("TUT_BIKE3", 5000, false)
end
collectgarbage()
end
main = function()
LoadModels(l_0_35)
LoadModels(l_0_36)
LoadWeaponModels(l_0_36)
LoadVehicleModels(l_0_37)
LoadActionTree("Act/Conv/2_01.act")
-- Overwrote pending register. (Assignments::assign)
AreaSetDoorLocked("DT_ischool_Janitor", 370)
shared.gOverrideSchoolGates = false
AreaSetDoorLocked("DT_ischool_Attic", false)
local l_6_0 = nil
if l_0_0 then
F_Debug()
end
CameraFade(500, 0)
Wait(500)
AreaTransitionPoint(2, POINTLIST._2_01_PLAYERSTART, nil, true)
CameraFade(1000, 1)
TextPrintString("Go Find Edna's Bike.", 6, 1)
if PedIsValid(shared.gEdnaID) then
PedDelete(shared.gEdnaID)
end
F_CreateMissionCharacters()
CreateThread("T_FailCond")
CreateThread("T_Timer")
CameraFade(1000, 1)
TextPrint("2_01_OFINDBIKE", 3, 1)
F_tBikeManager()
F_StartCounter()
local l_6_1, l_6_2, l_6_3 = GetPointList(POINTLIST._2_01_RAZORSPAWN)
l_0_20 = BlipAddXYZ(l_6_1, l_6_2, l_6_3, 0, 4)
l_6_1, l_6_2, l_6_3 = GetPointList(POINTLIST._2_01_PLAYERSTORE)
l_0_21 = BlipAddXYZ(l_6_1, l_6_2, l_6_3 + 0.10000000149012, 0, 4)
l_6_1, l_6_2, l_6_3 = GetPointList(POINTLIST._2_01_PANTYSPAWN)
blipCloth = BlipAddXYZ(l_6_1, l_6_2, l_6_3, 0, 4)
l_0_31 = MissionObjectiveAdd("2_01_O2")
l_0_32 = MissionObjectiveAdd("2_01_O3")
l_0_33 = MissionObjectiveAdd("2_01_O4")
F_tIngredientsGet()
repeat
Wait(0)
until AreaGetVisible() == 0
l_0_34 = MissionObjectiveAdd("2_01_GOTOBUS")
TextPrint("2_01_GOTOBUS", 4, 1)
l_0_2 = BlipAddPoint(POINTLIST._2_01_busstoppoint, 0, 1, 2, 0)
TutorialStart("BUS01")
F_CheckBackToEdna()
end
MissionCleanup = function()
BlipRemove(l_0_2)
SoundStopInteractiveStream()
shared.gEdnaOverride = nil
F_CleanBlip(l_0_19)
F_CleanBlip(l_0_21)
F_CleanBlip(l_0_20)
ItemSetCurrentNum(528, 0)
ItemSetCurrentNum(507, 0)
ItemSetCurrentNum(499, 0)
PedSetUniqueModelStatus(58, l_0_28)
if l_0_9 ~= nil then
BlipRemove(l_0_9)
end
if l_0_9 ~= nil then
BlipRemove(l_0_3)
end
CameraAllowChange(true)
CameraReset()
CameraReturnToPlayer()
CameraSetWidescreen(false)
PlayerSetControl(1)
PlayerSetPunishmentPoints(0)
CounterMakeHUDVisible(false)
UnLoadAnimationGroup("2_01LastMinuteShop")
UnLoadAnimationGroup("NIS_2_01")
DATUnload(2)
end
F_CleanBlip = function(l_8_0)
if l_8_0 then
BlipRemove(l_8_0)
l_8_0 = nil
end
end
F_tIngredientsGet = function()
local l_9_0, l_9_1, l_9_2 = nil, nil, nil
local l_9_3 = false
local l_9_4 = false
local l_9_5 = false
local l_9_6 = -1
local l_9_7 = -1
local l_9_8 = -1
local l_9_9, l_9_10, l_9_11 = nil, nil, nil
repeat
if not l_0_39.grocery.got and AreaGetVisible() == 26 then
repeat
Wait(0)
until if not PedIsValid(shared.vendettaClerk) or not l_9_5 then
l_9_8 = PickupCreatePoint(528, POINTLIST._2_01_PLAYERSTORE, 1, 0, "PermanentButes")
l_9_5 = true
end
if PlayerHasItem(528) then
BlipRemove(l_0_21)
l_0_39.grocery.got = true
CounterIncrementCurrent(1)
if PedIsValid(shared.vendettaClerk) then
SoundPlayScriptedSpeechEvent(shared.vendettaClerk, "M_2_01", 6, "SpeechX3")
end
MissionObjectiveComplete(l_0_31)
l_9_0 = true
end
end
if l_9_0 and AreaGetVisible() == 0 then
if CounterGetCurrent() == CounterGetMax() - 1 then
TextPrint("2_01_OGETREMAIN1", 2.5, 1)
l_9_0 = false
else
TextPrint("2_01_OGETREMAIN", 2.5, 1)
l_9_0 = false
end
end
if not l_0_39.barber.got and AreaGetVisible() == 39 then
if not l_9_4 then
l_9_7 = PickupCreatePoint(499, POINTLIST._2_01_RAZORSPAWN, 1, 0, "PermanentButes")
l_9_4 = true
end
if PickupIsPickedUp(l_9_7) then
BlipRemove(l_0_20)
l_0_39.barber.got = true
CounterIncrementCurrent(1)
MissionObjectiveComplete(l_0_32)
l_9_1 = true
end
end
if l_9_1 then
if PlayerIsInTrigger(TRIGGER._2_01_TUTOFF2) and IsButtonPressed(9, 0) then
TutorialRemoveMessage()
end
if AreaGetVisible() == 0 then
if CounterGetCurrent() == CounterGetMax() - 1 then
TextPrint("2_01_OGETREMAIN1", 2.5, 1)
l_9_1 = false
else
TextPrint("2_01_OGETREMAIN", 2.5, 1)
l_9_1 = false
end
end
end
if not l_0_39.clothing.got and AreaGetVisible() == 34 then
if not l_9_3 then
l_9_6 = PickupCreatePoint(507, POINTLIST._2_01_PANTYSPAWN, 1, 0, "PermanentButes")
l_9_3 = true
end
if PickupIsPickedUp(l_9_6) then
BlipRemove(blipCloth)
l_0_39.clothing.got = true
CounterIncrementCurrent(1)
MissionObjectiveComplete(l_0_33)
l_9_2 = true
end
end
if l_9_2 and AreaGetVisible() == 0 then
if CounterGetCurrent() == CounterGetMax() - 1 then
TextPrint("2_01_OGETREMAIN1", 2.5, 1)
l_9_1 = false
else
TextPrint("2_01_OGETREMAIN", 2.5, 1)
l_9_2 = false
end
end
if CounterGetCurrent() == CounterGetMax() then
l_0_15 = true
CounterMakeHUDVisible(false)
end
Wait(0)
until l_0_15
collectgarbage()
end
F_tBike = function()
local l_10_0, l_10_1, l_10_2, l_10_3, l_10_4, l_10_5 = nil, nil, nil, nil, nil, nil
local l_10_6 = false
local l_10_7 = false
repeat
if not PlayerIsInVehicle(l_0_23) then
if not l_0_24 then
l_0_24 = AddBlipForCar(l_0_23, 0, 4)
end
elseif PlayerIsInAnyVehicle() and l_0_24 then
BlipRemove(l_0_24)
l_0_24 = nil
end
if l_0_15 and PlayerIsInTrigger(TRIGGER._AMB_SCHOOL_AREA) then
l_10_7 = true
if l_0_24 then
BlipRemove(l_0_24)
l_0_24 = nil
end
end
Wait(0)
until l_10_7
collectgarbage()
end
T_Timer = function()
MissionTimerStart(325)
repeat
if MissionTimerHasFinished() then
l_0_29 = "2_01_FAILTIME"
l_0_14 = true
end
Wait(0)
until l_0_13
end
F_CinEnding = function()
PlayerSetControl(0)
PedSetPosXYZ(gPlayer, -638.70001220703, -269.5, -1.7000000476837)
CameraSetWidescreen(true)
PedFaceObject(l_0_1, gPlayer, 3, 1)
PedFaceObject(gPlayer, l_0_1, 2, 1)
CameraSetXYZ(-638.61383056641, -271.38647460938, -0.082731001079082, -638.43994140625, -270.41360473633, -0.23510600626469)
F_MakePlayerSafeForNIS(true, true, true)
CameraAllowChange(false)
PedLockTarget(gPlayer, l_0_1, 3)
PedLockTarget(l_0_1, gPlayer, 3)
repeat
Wait(0)
until RequestModel(370)
PedLockTarget(gPlayer, l_0_1, 3)
PedLockTarget(l_0_1, gPlayer, 3)
SoundPlayScriptedSpeechEvent(gPlayer, "M_2_01", 19, "SpeechX3")
repeat
Wait(100)
PedSetActionNode(gPlayer, "/Global/2_01/Anim/Give/GiveEdna_2_01", "Act/Conv/2_01.act")
until PedIsPlaying(gPlayer, "/Global/2_01/Anim/Give/GiveEdna_2_01", true)
repeat
Wait(0)
until not PedIsPlaying(gPlayer, "/Global/2_01/Anim/Give/GiveEdna_2_01", true)
PedLockTarget(gPlayer, l_0_1, 3)
PedLockTarget(l_0_1, gPlayer, 3)
CameraSetXYZ(-638.68316650391, -270.42636108398, -0.35699498653412, -638.39971923828, -269.4704284668, -0.28116899728775)
F_PlaySpeechWait(l_0_1, 20, "/Global/2_01/Anim/EndingNIS/20")
shared.gEdnaID = l_0_1
PedMakeAmbient(shared.gEdnaID)
PedSetMissionCritical(l_0_1, false)
PedMoveToXYZ(shared.gEdnaID, 0, -629.4033203125, -264.99234008789, -0.66108798980713)
Wait(100)
CameraFade(500, 0)
Wait(501)
CameraAllowChange(true)
PlayerSetPosPoint(POINTLIST._2_01_CAFENDPOS, 1)
CameraSetWidescreen(true)
Wait(10)
CameraReset()
Wait(1)
CameraSetXYZ(-639.10656738281, -275.26489257813, -0.46272400021553, -639.08819580078, -274.26519775391, -0.45218300819397)
Wait(10)
Wait(500)
CameraFade(500, 1)
Wait(501)
MinigameSetCompletion("M_PASS", true, 1500)
SoundPlayMissionEndMusic(true, 10)
repeat
Wait(0)
until not MinigameIsShowingCompletion()
CameraFade(500, 0)
Wait(501)
CameraReset()
CameraReturnToPlayer()
MissionSucceed(false, false, false)
CameraSetWidescreen(false)
F_MakePlayerSafeForNIS(false)
Wait(500)
CameraFade(500, 1)
Wait(101)
PlayerSetControl(1)
end
F_CBPlayerEndPath = function(l_13_0, l_13_1, l_13_2)
if l_13_2 == PathGetLastNode(l_13_1) then
l_0_27 = true
end
end
F_KillCars = function()
local l_14_0 = true
repeat
if PlayerIsInTrigger(TRIGGER._AMB_BUSINESS_AREA) then
l_14_0 = false
end
until not l_14_0
end
F_tBikeManager = function()
local l_15_0 = nil
l_0_23 = VehicleCreatePoint(281, POINTLIST._2_01_BIKESPAWN)
l_0_24 = AddBlipForCar(l_0_23, 0, 4)
VehicleSetOwner(l_0_23, gPlayer)
repeat
if not l_15_0 and PlayerIsInTrigger(TRIGGER._2_01_MOUNTBIKE) then
l_15_0 = true
end
Wait(0)
until PlayerIsInAnyVehicle() or PlayerIsInTrigger(TRIGGER._AMB_BUSINESS_AREA)
MissionObjectiveComplete(l_0_30)
TextPrint("2_01_OFINDITEMS", 3, 1)
BlipRemove(l_0_24)
l_0_24 = nil
end
F_CreateMissionCharacters = function()
l_0_1 = PedCreatePoint(58, POINTLIST._2_01_EDNA)
PedSetFlag(l_0_1, 133, false)
PedSetMissionCritical(l_0_1, true, cbFail, true)
PedIgnoreStimuli(l_0_1, true)
end
F_CreatePedTable = function(l_17_0)
for l_17_4 = l_17_0, nil, nil do
l_17_4.id = PedCreatePoint(l_17_4.model, l_17_4.point, l_17_4.element)
if l_17_4.animation then
Wait(0)
end
end
end
F_tEdnaWalk = function()
l_0_25 = true
local l_18_0 = nil
local l_18_1 = 1
local l_18_2 = GetTimer()
l_0_26 = GetTimer()
repeat
if l_0_25 and GetTimer() > l_0_26 + 1000 then
PedSetActionNode(l_0_1, "/Global/2_01/Anim/EdnaShrug", "Act/Conv/2_01.act")
l_18_0 = math.random(1, table.getn(l_0_18))
repeat
l_18_0 = math.random(1, table.getn(l_0_18))
Wait(0)
until l_18_0 ~= l_18_1
PedFollowPath(l_0_1, l_0_18[l_18_0], 3, 0, F_CBShrug)
l_0_25 = false
l_18_1 = l_18_0
end
Wait(0)
until l_0_15
PedStop(l_0_1)
PedClearObjectives(l_0_1)
end
cbFail = function()
l_0_29 = "2_01_HITEDNA"
l_0_14 = true
end
T_FailCond = function()
repeat
Wait(0)
if PedIsValid(l_0_1) and PedGetWhoHitMeLast(l_0_1) == gPlayer then
l_0_29 = "2_01_HITEDNA"
l_0_14 = true
end
if l_0_14 then
if l_0_1 then
shared.gEdnaID = l_0_1
PedMakeAmbient(shared.gEdnaID)
end
SoundPlayMissionEndMusic(false, 10)
MissionFail(false, true, l_0_29)
Wait(50000)
end
until l_0_13
end
F_CBShrug = function()
l_0_25 = true
l_0_26 = GetTimer()
end
F_CheckBackToEdna = function()
local l_22_0, l_22_1, l_22_2 = nil, nil, nil
repeat
Wait(0)
until until PlayerIsInTrigger(TRIGGER._ZONESCHOOL) and not shared.gBusTransition
MissionObjectiveComplete(l_0_34)
l_0_34 = MissionObjectiveAdd("2_01_OBACKEDNA")
TextPrint("2_01_OBACKEDNA", 4, 1)
BlipRemove(l_0_2)
l_0_2 = nil
PedSetPosPoint(l_0_1, POINTLIST._2_01_EDNAFIN)
l_0_2 = AddBlipForChar(l_0_1, 12, 0, 4)
repeat
Wait(0)
until PlayerIsInTrigger(TRIGGER._2_01_EDNAFACEPLAYER)
PedFaceObject(l_0_1, gPlayer, 3, 1)
repeat
if not l_0_14 and PlayerIsInAreaObject(l_0_1, 2, 1, 0) then
if PedIsValid(l_0_1) then
PedSetInvulnerable(l_0_1, true)
end
MissionTimerStop()
MissionObjectiveComplete(l_0_34)
F_CinEnding()
if PedIsValid(l_0_1) then
PedAddPedToIgnoreList(l_0_1, gPlayer)
PedSetInvulnerable(l_0_1, false)
BlipRemove(l_0_2)
end
end
Wait(0)
until l_0_13
end
F_StartCinematic = function(l_23_0, l_23_1, l_23_2)
CameraSetWidescreen(true)
PlayerSetControl(0)
PedStop(l_23_0)
PedStop(gPlayer)
PedFaceObject(l_23_0, gPlayer, 2, 0)
PedFaceObject(gPlayer, l_23_0, 2, 0)
PedStartConversation(l_23_1, l_23_2, gPlayer, l_23_0)
repeat
Wait(100)
until until not PedInConversation(l_23_0) and not PedInConversation(gPlayer)
CameraSetWidescreen(false)
PlayerSetControl(1)
end
F_StartCounter = function()
CounterSetIcon("caflady", "caflady_x")
CounterMakeHUDVisible(true)
CounterSetCurrent(0)
CounterSetMax(3)
end
F_BlipCreateXYZ = function(l_25_0, l_25_1, l_25_2)
local l_25_3 = nil
l_25_3 = BlipAddXYZ(l_25_0, l_25_1, l_25_2, 0)
table.insert(l_0_22, {blip = l_25_3})
return l_25_3
end
F_BlipCleanup = function()
for l_26_3 = l_0_22, nil, nil do
if l_26_3.blip ~= nil then
BlipRemove(l_26_3.blip)
end
end
l_0_22 = nil
end
F_FindClosestPed = function()
local l_27_0 = {}
local l_27_1, l_27_2, l_27_3 = PlayerGetPosXYZ(), {target = -1}, {target = -1}
-- Overwrote pending register. (Assignments::assign) -- Overwrote pending register. (Assignments::assign)
local l_27_4 = {target = -1}
-- Overwrote pending register. (Assignments::assign)
local l_27_5 = {target = -1}
-- Overwrote pending register. (Assignments::assign)
local l_27_6 = {target = -1}
-- Overwrote pending register. (Assignments::assign)
local l_27_7 = {target = -1}
-- Overwrote pending register. (Assignments::assign)
local l_27_8 = {target = -1}
-- Overwrote pending register. (Assignments::assign)
local l_27_9 = l_27_0[6]
target = PedFindInAreaXYZ(l_27_1, l_27_2, l_27_3, 19)
-- Attempted to generate an assignment, but got confused about usage of registers. (Assignments::flushPending)
l_27_4 = table
l_27_4 = l_27_4.getn
l_27_5 = l_27_0
l_27_4 = l_27_4(l_27_5)
l_27_5 = 1
l_27_6 = -1
l_27_4 = l_27_4 - l_27_6
l_27_7 = PedIsValid
l_27_8 = l_27_0[l_27_4]
l_27_8 = l_27_8.target
l_27_7 = l_27_7(l_27_8)
if l_27_7 then
l_27_7 = l_27_0[l_27_4]
l_27_7 = l_27_7.target
return l_27_7
end
end
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Confused at declaration of local variable. (Assignments::declareLocals)
-- Confused at declaration of local variable. (Assignments::declareLocals) -- Overwrote pending register. (Assignments::assign)
-- Overwrote pending register. (Assignments::assign)
-- Overwrote pending register. (Assignments::assign)
-- Overwrote pending register. (Assignments::assign)
-- Confused at declaration of local variable. (Assignments::declareLocals) -- Overwrote pending register. (Assignments::assign)
F_PlaySpeechWait = function()
end
T_NIS_Loop = function()
while 1 do
if not l_0_41 and F_IsButtonPressedWithDelayCheck(6, 1) then
if AreaIsDoorLocked("DT_tbusines_BikeShopDoor") then
AreaSetDoorLocked("DT_tbusines_BikeShopDoor", false)
TextPrintString("Unlocking Bikeshopdoor", 4, 1)
else
AreaSetDoorLocked("DT_tbusines_BikeShopDoor", true)
TextPrintString("Locking Bikeshopdoor", 4, 1)
end
end
Wait(0)
end
end
F_Clamp = function(l_38_0, l_38_1)
if l_38_0 <= 0 then
l_38_0 = l_38_1
elseif l_38_1 < l_38_0 then
l_38_0 = 1
else
end
return l_38_0
end
F_NISSelect = function()
if F_IsButtonPressedWithDelayCheck(11, 1) then
l_0_40 = l_0_40 - 1
l_0_40 = F_Clamp(l_0_40, l_0_42)
TextPrintString("NIS: " .. l_0_40, 3, 1)
elseif F_IsButtonPressedWithDelayCheck(13, 1) then
l_0_40 = l_0_40 + 1
l_0_40 = F_Clamp(l_0_40, l_0_42)
TextPrintString("NIS: " .. l_0_40, 3, 1)
elseif F_IsButtonPressedWithDelayCheck(6, 1) then
TextPrintString("run NIS", 3, 1)
F_RunNIS = l_0_47[l_0_40]
F_RunNIS()
TextPrintString("Finished NIS", 4, 1)
Wait(1000)
end
end
-- Confused about usage of registers for local variables. (Assignments::releaseLocals)
On line 95, there is a line of code with TutorialShowMessage("TUT_BIKE3", 5000, false)
As you can see, there is no possible way of using this TutorialShowMessage() function in ONLY the lua script. Thus, we'll have to go even deeper.
We are going to need a tool. You can download it here (http://puu.sh/lh9Tu/5812d17987.zip).
Now that you have that, drag it to the <bully root>\Config\Text folder.
Before we can go any further, you must find out what language of Bully you're using. Don't get the British and American confused. Note that in the British version, favor is actually spelled favour (from the 3_03 beta mission).
Now, drag both the .dir and .img (of the language you're using) over the executable file. (BullyLanguageFilesEditor_en.exe)
Once you've done that, a folder should be created with the same name of the .IMG you dragged.
(http://i.imgur.com/o09yMMT.png)
Now, open Notepad++ again, then press CTRL+F, and click the tab "Find in Files"
(http://i.imgur.com/vZEeRQ1.png)
You also need to know what the tutorial box shows in that part of the mission.
And I know that it definitely has the word "bike" in it, as that was the only tutorial box in the mission. So type the word "bike" in the first textbox, and adjust the perimeters to match your bully folder.
When you click "Find All" this should appear on the bottom of the notepad window:
(http://i.imgur.com/kLWxNOp.png)
We can see there are 2. So what do we do now? Well, instead of pulling a trial and error, we can just edit both of them with whatever you want your textbox to say.
Once you've done that, SAVE the file. Now go back to the Text folder. Drag the folder which was generated earlier, over the executable file once more. Now, you should see 2 new files. They should be with a .gv extension.
Delete the original .img and .dir files you used, then rename the .gv files, without the .gv extension. They should be a .dir and .img now.
Almost done. Now, in your script, you can use TutorialShowMessage("TUT_BIKE3", 5000, false) to display the new text you inserted.
I apologize for not uploading more screenshots, but I will try to edit this soon, and make it more detailed and hopefully easier to understand.
If you have further questions, please add me on steam(unknownsoldier1138), or leave a reply asking what you didn't understand.
-
Great job, but I think it's the same method that I did with the white text.
-
well you asked for TEXT boxes, and this is a text box. And it's a SIMILAR way you did it, but I don't think anyone else has ever done the custom tutorial boxes before I uploaded this. I'm a first. :D
-
Great tutorial, Unknown.
-
Thanks for making this tutorial so I can make a boss selector mod. With full styles even tho The Dream Is Dead made this before. But with a bit different features. So I might be doing this. But I need more texts since there's a lot of peds with boss styles. I only found out 8 texts M_PASS,M_FAIL,TUT_BIKE3,2_01_OFINDBIKE,2_01_GOTOBUS,2_01_OGETREMAIN,2_01_OGETREMAIN1 and 2_01_OFINDITEMS. Do you have 3 more? I need 11 texts.
-
Yeah, i've got every occurrence of it in the Scripts.img. here you go:
C:\Games\BULLY\Scripts\Mods\Decompile\1_02.lua (3 hits)
Line 417: TutorialShowMessage("TUT_RMGL1", 5000, false)
Line 1275: TutorialShowMessage("1_02_FightTut", 3500, false)
Line 1277: TutorialShowMessage("TUT_TARGET01", 4000, false)
C:\Games\BULLY\Scripts\Mods\Decompile\1_02B.lua (11 hits)
Line 413: TutorialShowMessage("TUT_RUSS01A", 4500, false)
Line 423: TutorialShowMessage("TUT_RUSS02C", -1, false)
Line 433: TutorialShowMessage("TUT_RUSS03A", 4500, false)
Line 443: TutorialShowMessage("TUT_RUSS03C", -1, false)
Line 455: TutorialShowMessage("TUT_RUSS04A", 5000, false)
Line 553: TutorialShowMessage("TUT_EUNSOC01", 4500, false)
Line 557: TutorialShowMessage("TUT_EUNSOC03", -1, false)
Line 598: TutorialShowMessage("1_02B_TUT09", 6000)
Line 772: TutorialShowMessage("TUT_PUN01", 4500, false)
Line 774: TutorialShowMessage("TUT_PUN04", 4500, false)
Line 776: TutorialShowMessage("TUT_PUN03", 4500, false)
C:\Games\BULLY\Scripts\Mods\Decompile\1_02C.lua (3 hits)
Line 71: TutorialShowMessage("TUT_CLASS01", 4500, false)
Line 73: TutorialShowMessage("TUT_CLASS02", 4500, false)
Line 75: TutorialShowMessage("TUT_CLASS03", 4500, false)
C:\Games\BULLY\Scripts\Mods\Decompile\1_03.lua (8 hits)
Line 547: TutorialShowMessage("TUT_RSPX02", 4500, true)
Line 549: TutorialShowMessage("TUT_RSPX03", 4500, true)
Line 677: TutorialShowMessage("TUT_GBIN1")
Line 903: TutorialShowMessage(l_63_1)
Line 924: TutorialShowMessage(l_64_2)
Line 928: TutorialShowMessage(l_64_2)
Line 941: TutorialShowMessage("1_03_T01")
Line 951: TutorialShowMessage("1_03_T02")
C:\Games\BULLY\Scripts\Mods\Decompile\1_06_01.lua (1 hit)
Line 269: TutorialShowMessage("TUT_TRANX01", 4500, false)
C:\Games\BULLY\Scripts\Mods\Decompile\1_08.lua (2 hits)
Line 1035: TutorialShowMessage("1_08_OBJ08", 6000)
Line 1521: TutorialShowMessage("1_08_OBJ14", 4)
C:\Games\BULLY\Scripts\Mods\Decompile\1_E01.lua (6 hits)
Line 204: l_5_5 = TutorialShowMessage
Line 212: l_5_5 = TutorialShowMessage
Line 240: TutorialShowMessage("TUT_ERR3", -1, false)
Line 255: TutorialShowMessage("TUT_ERR4", 4500, false)
Line 262: TutorialShowMessage("TUT_ERR5", -1, false)
Line 286: TutorialShowMessage("TUT_ERR6", 4500, false)
C:\Games\BULLY\Scripts\Mods\Decompile\2_01.lua (1 hit)
Line 95: TutorialShowMessage("TUT_BIKE3", 5000, false)
C:\Games\BULLY\Scripts\Mods\Decompile\2_02.lua (1 hit)
Line 432: TutorialShowMessage("BIKECOMBAT_TUT01", 6000)
C:\Games\BULLY\Scripts\Mods\Decompile\2_03.lua (1 hit)
Line 228: TutorialShowMessage("2_03_22", 4000)
C:\Games\BULLY\Scripts\Mods\Decompile\2_06.lua (1 hit)
Line 963: TutorialShowMessage("TUT_APOLOGY1", 4000, false)
C:\Games\BULLY\Scripts\Mods\Decompile\2_G2.lua (2 hits)
Line 143: TutorialShowMessage("2_G2_FLOWERTUT", 6000, true)
Line 874: TutorialShowMessage("2_G2_TUT_01", 6000)
C:\Games\BULLY\Scripts\Mods\Decompile\2_R03.lua (1 hit)
Line 703: TutorialShowMessage("2_R03_05", 4000, true)
C:\Games\BULLY\Scripts\Mods\Decompile\2_S02.lua (2 hits)
Line 789: TutorialShowMessage("TUT_SKTC01", 5000, false)
Line 930: TutorialShowMessage("2_S02_24", 4000)
C:\Games\BULLY\Scripts\Mods\Decompile\2_S06.lua (1 hit)
Line 724: TutorialShowMessage("TUT_GIRLD1", 5000)
C:\Games\BULLY\Scripts\Mods\Decompile\3_01A.lua (1 hit)
Line 246: TutorialShowMessage("3_01A_WARNING2", -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\3_S10.lua (1 hit)
Line 694: TutorialShowMessage("3_S10_12", 7000)
C:\Games\BULLY\Scripts\Mods\Decompile\3_S11.lua (1 hit)
Line 612: TutorialShowMessage("3_S11_SNEAK", 10000, false)
C:\Games\BULLY\Scripts\Mods\Decompile\4_06.lua (4 hits)
Line 411: TutorialShowMessage("TUT_BULL1")
Line 1679: TutorialShowMessage("TUT_MARBX1", 6000)
Line 2109: TutorialShowMessage("4_06_OBJDANCE", 5000)
Line 2124: TutorialShowMessage("4_06_OBJDANCE", 5000)
C:\Games\BULLY\Scripts\Mods\Decompile\4_B2.lua (1 hit)
Line 312: TutorialShowMessage("4_B2_Tut1", 9500, true)
C:\Games\BULLY\Scripts\Mods\Decompile\5_B.lua (3 hits)
Line 349: TutorialShowMessage("5_B_Tut1", 5000, true)
Line 380: TutorialShowMessage("5_B_Tut2", 5000, true)
Line 470: TutorialShowMessage("5_B_Tut3", 5000, true)
C:\Games\BULLY\Scripts\Mods\Decompile\Boxing.lua (1 hit)
Line 192: TutorialShowMessage("TUT_AQUA1", 5000, false)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassArt.lua (5 hits)
Line 473: TutorialShowMessage("MGCA_KISS01", -1, true)
Line 481: TutorialShowMessage("MGCA_KISS02", -1, true)
Line 498: TutorialShowMessage("MGCA_KISS03", -1, true)
Line 507: TutorialShowMessage(l_8_3, -1, true)
Line 521: TutorialShowMessage(l_8_3, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassBiology.lua (1 hit)
Line 301: TutorialShowMessage(unlockTextRoom, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassChem.lua (2 hits)
Line 387: TutorialShowMessage("C4_INST01")
Line 709: TutorialShowMessage(l_12_4, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassEnglish.lua (14 hits)
Line 401: TutorialShowMessage("MGCE_TUTORIAL01", -1, true)
Line 412: TutorialShowMessage("MGCE_TUTORIAL02", -1, true)
Line 446: TutorialShowMessage(l_12_1, -1, true)
Line 458: TutorialShowMessage("MGCE_TAUNT01", -1, true)
Line 470: TutorialShowMessage("MGCE_TAUNT02", -1, true)
Line 497: TutorialShowMessage(l_12_1, -1, true)
Line 512: TutorialShowMessage("MGCE_PREFAPOL01", -1, true)
Line 523: TutorialShowMessage("MGCE_PREFAPOL02", -1, true)
Line 554: TutorialShowMessage("MGCE_TUTORIAL02", -1, true)
Line 583: TutorialShowMessage(l_12_1, -1, true)
Line 596: TutorialShowMessage("MGCE_ENG0401", -1, true)
Line 609: TutorialShowMessage("MGCE_ENG0402", -1, true)
Line 633: TutorialShowMessage(l_12_1, -1, true)
Line 646: TutorialShowMessage(l_12_1, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassGeography.lua (1 hit)
Line 287: TutorialShowMessage(unlockTextRoom, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassMath.lua (1 hit)
Line 914: TutorialShowMessage(l_10_2, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassPhoto.lua (1 hit)
Line 773: TutorialShowMessage(l_18_1, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\ClassShop.lua (2 hits)
Line 320: TutorialShowMessage("C6_INST01")
Line 486: TutorialShowMessage(l_7_21, -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\Copy of 1_01.lua (2 hits)
Line 242: TutorialShowMessage("TUT_START1A", 4500, false)
Line 244: TutorialShowMessage("TUT_START1B", 4500, false)
C:\Games\BULLY\Scripts\Mods\Decompile\DodgeballGame.lua (2 hits)
Line 571: TutorialShowMessage("DB_TUT_HOLDBALL", 5000)
Line 693: TutorialShowMessage("DB_UNLOCK01", -1, true)
C:\Games\BULLY\Scripts\Mods\Decompile\FreakShow.lua (1 hit)
Line 241: TutorialShowMessage("MIF_BET01")
C:\Games\BULLY\Scripts\Mods\Decompile\GoKartRaces.lua (1 hit)
Line 263: TutorialShowMessage("TUT_PSLIDE", 4000)
C:\Games\BULLY\Scripts\Mods\Decompile\GraffitiCleanup.lua (1 hit)
Line 531: TutorialShowMessage("TUT_GP_02", 6000)
C:\Games\BULLY\Scripts\Mods\Decompile\LawnMowing.lua (3 hits)
Line 1240: TutorialShowMessage(gTutorialMessage, 8000)
Line 1243: TutorialShowMessage(gTutorialMessage2, 8000)
Line 1252: TutorialShowMessage("TUT_LMP_03", 8000)
C:\Games\BULLY\Scripts\Mods\Decompile\MGHacky.lua (2 hits)
Line 210: TutorialShowMessage("MGSK_11", 5000)
Line 339: TutorialShowMessage("MGSK_21")
C:\Games\BULLY\Scripts\Mods\Decompile\MGSocPen.lua (2 hits)
Line 114: TutorialShowMessage("MGSP_INST")
Line 342: TutorialShowMessage("MGSP_BTUT")
C:\Games\BULLY\Scripts\Mods\Decompile\PriOff.lua (1 hit)
Line 59: TutorialShowMessage("TUT_NOW01", 5000, false)
C:\Games\BULLY\Scripts\Mods\Decompile\P_Snow.lua (1 hit)
Line 65: TutorialShowMessage("TUT_SP_01", 7000)
C:\Games\BULLY\Scripts\Mods\Decompile\SGlFunc.lua (1 hit)
Line 494: TutorialShowMessage(l_43_0)
C:\Games\BULLY\Scripts\Mods\Decompile\SScriptTracks.lua (1 hit)
Line 351: TutorialShowMessage("CHEMSET_FULL", 3000)
C:\Games\BULLY\Scripts\Mods\Decompile\SStores.lua (1 hit)
Line 134: TutorialShowMessage("TUT_VESPA", 5000)
C:\Games\BULLY\Scripts\Mods\Decompile\Wrestling1.lua (1 hit)
Line 747: TutorialShowMessage("C3_01_03", 4000)
Ignore the other arguments in the function (like the numbers, and true/false)