Here are some Bully LUA Script Sources to play around with.
You will need a proper IDE for editing these files if you want to use color coding to make the code easier to read. Notepad++ is one that I highly recommend since it has support for lua.I have some lua code plugins for notepad++ that I can upload here as well to this topic.
NOTE:This is
NOT a complete release of every script in Bully. Bully has over
500 total lua scripts and I only have maybe about half in usable form. I am for now just releasing a small handful of intact rewritten script sources for people to play around with. I also will release a mod source for one of my mods that is fully commented so people basicly will know what various parts of code does.
TestAlly.lua - This is a test script that is part of the debug menu system. This just spawns a single ped and recruits them as your bodyguard.
ImportScript("\\Library\\LibTable.lua") -- imports the LibTable library
ImportScript("\\Library\\LibPed.lua") -- imports the LibPed library
local l_0_0 = false
MissionSetup = function() -- basic mission setup function which is used in almost all bully scripts
local l_1_0 = 270 -- X coords
local l_1_1 = -110 -- Y coords
local l_1_2 = 6.4000000953674 -- Z coords
PlayerSetHealth(200) -- gives the player 200 health
AreaTransitionXYZ(0, l_1_0, l_1_1, l_1_2) -- teleports the player to the sidewalk outside the boys dorm
local l_1_3 = 25 -- Lola (this is her model id number)
local l_1_4, l_1_5, l_1_6 = PedGetPosXYZ(gPlayer) -- gets coordinates of the player on the map
local l_1_7 = PedCreateXYZ(l_1_3, l_1_4 + 1, l_1_5 + 1, l_1_6) -- create a ped (Lola) and spawn them near the player
PedRecruitAlly(gPlayer, l_1_7, true) -- recruits the spawned ped as a bodyguard (local l_1_7 is assigned to model id 25 which is Lola)
PedMakeAmbient(l_1_7) -- makes the spawned ped ambient
end
MissionCleanup = function() -- mission cleanup function
end -- end statement
main = function() -- Main mission function
repeat -- This makes the script run until the bodyguard is dismissed, attacked by the player or the player is busted
Wait(0) -- wait 0 seconds
until l_0_0 ~= false
Wait(3000) -- wait 3 seconds
MissionSucceed() -- ends mission
end
1_01.luaImportScript("Library/LibTable.lua")
ImportScript("Library/LibTrigger.lua")
ImportScript("Library/LibSchool.lua")
local l_0_0 = false
local l_0_1 = 0
local l_0_2 = false
local l_0_3 = nil
local l_0_4 = false
local l_0_5 = false
local l_0_6, l_0_7 = nil, nil
local l_0_8 = false
local l_0_9 = false
local l_0_10 = false
local l_0_11, l_0_12, l_0_13 = nil, nil, nil
local l_0_14 = 0
local l_0_15 = 0
local l_0_16, l_0_17 = nil, nil
local l_0_18 = {}
local l_0_19 = nil
local l_0_20 = 1
local l_0_21 = 1
local l_0_22 = false
local l_0_23 = 0
local l_0_24 = 0
local l_0_25 = false
local l_0_26 = true
local l_0_27 = false
local l_0_28 = {}
local l_0_29 = false
local l_0_30 = false
local l_0_31 = false
local l_0_32 = false
local l_0_33 = false
local l_0_34 = 0
local l_0_35 = false
local l_0_36, l_0_37 = nil, nil
local l_0_38 = false
local l_0_39 = false
local l_0_40 = 0
local l_0_41 = 0
local l_0_42 = 0
local l_0_43 = 0
local l_0_44 = 0
local l_0_45 = 0
local l_0_46 = 0
local l_0_47 = 0
local l_0_48 = 0
local l_0_49 = 0
local l_0_50 = 0
local l_0_51 = 0
local l_0_52 = 0
local l_0_53 = 0
local l_0_54 = 0
local l_0_55 = 0
local l_0_56 = 0
local l_0_57 = 0
local l_0_58 = false
F_CheckInitialPOI = function(l_1_0)
local l_1_1, l_1_2, l_1_3 = AreaPOIGetPosition(l_1_0)
if DistanceBetweenCoords3d(l_1_1, l_1_2, l_1_3, 274.30499267578, -70.682403564453, 5.9864101409912) < 5 then
if not l_0_10 then
l_0_10 = true
return true
else
return false
end
end
end
MissionSetup = function()
DATLoad("1_01.DAT", 2)
DATInit()
LoadActionTree("Act/Conv/1_01.act")
LoadActionTree("Act/Conv/1_02.act")
MissionDontFadeIn()
SoundEnableInteractiveMusic(true)
ClockSet(8, 30)
shared.lockClothingManager = true
if GetMissionAttemptCount("1_01") > 1 then
MissionSurpressMissionNameText()
l_0_0 = true
end
if not l_0_0 then
shared.gOverrideSchoolGates = false
shared.gFrontGateOpen = false
Wait(10)
PAnimCreate(TRIGGER._TSCHOOL_FRONTGATE)
AreaSetDoorOpen(TRIGGER._TSCHOOL_FRONTGATE, true)
PAnimSetActionNode(TRIGGER._TSCHOOL_FRONTGATE, "/Global/1_01/Gates/BarUpHold", "Act/Conv/1_01.act")
PlayCutsceneWithLoad("1-1-1", true, true, true)
PAnimDelete(TRIGGER._TSCHOOL_FRONTGATE)
GeometryInstance("ScGate01Closed", false, 301.43899536133, -72.505897521973, 8.0465698242188, true)
GeometryInstance("ScGate02Closed", false, 225.92799377441, 5.7981600761414, 8.3947095870972, true)
else
CameraSetWidescreen(false)
end
local l_5_0 = -9.9879999160767
local l_5_1 = 21.420000076294
local l_5_2 = 30.059999465942
AreaTransitionXYZ(22, l_5_0, l_5_1, l_5_2)
PlayerFaceHeading(270, 1)
end
MissionCleanup = function()
ToggleHUDComponentVisibility(21, false)
if shared.gSecretaryID ~= nil and PedIsValid(shared.gSecretaryID) then
PedDelete(shared.gSecretaryID)
shared.gSecretaryID = nil
end
ClearTextQueue()
EnablePOI()
gMissionRunning = false
shared.gMissionEventFunction = nil
if l_0_3 then
BlipRemove(l_0_3)
end
PedSetUniqueModelStatus(102, l_0_40)
PedSetUniqueModelStatus(99, l_0_41)
PedSetUniqueModelStatus(85, l_0_42)
PedSetUniqueModelStatus(145, l_0_43)
PedSetUniqueModelStatus(146, l_0_44)
PedSetUniqueModelStatus(75, l_0_45)
PedSetUniqueModelStatus(50, l_0_46)
PedSetUniqueModelStatus(59, l_0_47)
PedSetUniqueModelStatus(69, l_0_48)
PedSetUniqueModelStatus(139, l_0_49)
PedSetUniqueModelStatus(72, l_0_50)
PedSetUniqueModelStatus(73, l_0_51)
PedSetUniqueModelStatus(24, l_0_52)
PedSetUniqueModelStatus(26, l_0_53)
PedSetUniqueModelStatus(34, l_0_54)
PedSetUniqueModelStatus(32, l_0_55)
PedSetUniqueModelStatus(16, l_0_56)
PedSetUniqueModelStatus(12, l_0_57)
UnLoadAnimationGroup("Hang_Talking")
UnLoadAnimationGroup("NPC_AggroTaunt")
UnLoadAnimationGroup("Area_School")
UnLoadAnimationGroup("SBULL_A")
UnLoadAnimationGroup("POI_Smoking")
UnLoadAnimationGroup("B_Striker")
UnLoadAnimationGroup("NPC_Adult")
PlayerSetInvulnerable(false)
WeatherRelease()
TutorialRemoveMessage()
AreaRevertToDefaultPopulation()
PlayerSetControl(1)
DATUnload(2)
PlayerSetPunishmentPoints(0)
end
CB_RenderObj = function()
misObj = MissionObjectiveAdd("1_01_StandGround")
end
main = function()
--gEunice = PedCreatePoint(74, POINTLIST._PRINCIPALROOM, 2)
--PedSetPosPoint(gEunice, POINTLIST._1_02_EUNICE, 1)
CameraFade(500, 0)
SoundPreloadSpeech(gPlayer, "NARRATION", 101, "supersize", true)
CameraSetWidescreen(true)
CameraReset()
Wait(50)
repeat
Wait(0)
until SoundIsSpeechPreloaded()
Wait(10)
CameraFade(500, 1)
Wait(501)
SoundPlayPreloadedSpeech()
repeat
Wait(0)
until not SoundSpeechPlaying(gPlayer, "NARRATION", 101)
-- TextPrintString("You win!", 4, 1)
Wait(15000)
MissionSucceed(true, false, false)
PedSetActionNode(gPlayer, "/Global/Player", "Act/Player.act")
end
F_CreatePeds = function()
Prefect1 = PedCreatePoint(13, POINTLIST._PUNISHTEST_P1)
Wait(5000)
PedFollowPath(Prefect1, PATH._PUNISHTEST_PATH2, 0, 1, F_CallBack)
CreateThread("F_HitCheck")
end
F_CallBack = function(l_6_0, l_6_1, l_6_2)
if l_6_2 == 2 then
PedAttack(l_6_0, gPlayer)
end
end
6_01.lualocal l_0_0 = false
local l_0_1 = nil
local l_0_3 = 0
local l_0_4 = nil
local l_0_5 = false
local l_0_6 = false
MissionSetup = function()
DATLoad("6_01.DAT", 2)
DATLoad("3_08.DAT", 2)
MissionSurpressMissionNameText()
MissionDontFadeIn()
end
main = function()
PlayCutsceneWithLoad("6-0", true, true)
if ClothingGetPlayer(1) == ObjectNameToHashID("S_Sweater5") then
ClothingSetPlayer(1, "B_Jacket6")
end
if ClothingGetPlayer(4) == ObjectNameToHashID("S_Pants1") then
ClothingSetPlayer(4, "B_Pants2")
end
ClothingBuildPlayer()
AreaTransitionPoint(14, POINTLIST._6_01_BDORM, 1, false)
CameraReset()
CameraReturnToPlayer()
CameraFade(500, 1)
Wait(501)
TextPrint("6_01_EXPELLED", 4, 1)
shared.gPlayerInitialArea = nil
MissionSucceed(false, false, false)
end
MissionCleanup = function()
if l_0_0 then
PlayerSetScriptSavedData(3, PlayerGetNumTimesBusted())
PlayerSetScriptSavedData(14, 0)
end
UnpauseGameClock()
CameraSetWidescreen(false)
DATUnload(2)
end
F_PlayerGetOutOfBed = function()
if l_0_4 then
return 1
end
return 0
end
Bike_Gen.lua - This is a library script ran by other scripts that spawns random bikes on the bully world map.
F_VehicleGen = function()
VehicleCreateCarGenerator(513.21002197266, -152.52000427246, 5.2109999656677, 15, 282, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(599.25, -12.78600025177, 6.3959999084473, 90, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(518.20001220703, -32.770000457764, 6.2399997711182, 190, 279, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(485.29998779297, -79.319999694824, 5.4000000953674, 180, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(552.15002441406, -367.70001220703, 2.2349998950958, 140, 279, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(522.72497558594, -487.27499389648, 4.3070001602173, 340, 282, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(238.06100463867, -439.70001220703, 2.6329998970032, 20, 281, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(223.51300048828, -303.35000610352, 5.4650001525879, 180, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(129.80000305176, -407.79699707031, 2.6289999485016, 275, 279, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(118.05000305176, -517.75, 3.319000005722, 30, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(12.75, -448.54998779297, 0.43200001120567, 225, 279, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(219.0299987793, 424.41598510742, 4.8899998664856, 235, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(139.94999694824, 424.36999511719, 8.0349998474121, 342, 282, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(276.04998779297, 207.31799316406, 6.1680002212524, 270, 279, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(349.20001220703, 124.88800048828, 5.375, 90, 282, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(396.75, 148.60400390625, 5.2069997787476, 90, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(401.31100463867, 189.78999328613, 6.6490001678467, 0, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(387.93301391602, 393.29000854492, 21.471000671387, 0, 280, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(482.10000610352, 430.21600341797, 18.05299949646, 90, 279, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(603.45001220703, 393.61599731445, 16.471000671387, 90, 282, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(547.82000732422, 247.16700744629, 16.893999099731, 90, 274, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(332.13000488281, 270.67001342773, 5.9499998092651, 90, 282, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(445.29998779297, 236.5, 9.6999998092651, 90, 282, -1, -1, true, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(498.17001342773, -18.719999313354, 7.25, 0, 293, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(588.90002441406, -139, 6.9800000190735, 0, 297, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(467.9700012207, -204.32000732422, 4.1900000572205, -15, 286, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(548.57000732422, -455.08999633789, 5.4000000953674, -15, 296, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(487.19000244141, -384.2200012207, 3.3299999237061, 75, 294, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(429.67001342773, 163.66999816895, 7.1500000953674, 90, 297, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(317.55999755859, 401.48999023438, 25.729999542236, -30, 292, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(434.39999389648, 486.23999023438, 24.340000152588, 0, 286, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(576.25, 457.2200012207, 19.520000457764, 0, 293, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(310.79998779297, -328.48999023438, 3.5899999141693, 0, 294, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(161.33000183105, -375.48999023438, 3.9900000095367, 100, 291, -1, -1, false, 0, 0, 1500, 45000, true)
VehicleCreateCarGenerator(60.419998168945, -462.30999755859, 5.9699997901917, 135, 291, -1, -1, false, 0, 0, 1500, 45000, true)
end
F_VehicleGen()
F_VehicleGen = nil
SCloth.lua - Library script that controls the clothing outfits
scloth = function()
local l_1_0 = true
local l_1_1 = false
local l_1_2 = true
local l_1_3 = false
-- FriendlyName Head Torso LeftWrist RightWrist Legs Feet
ClothingDefineOutfit("Underwear", "CLT_Undies", "Hair", "P_SSleeves11", "none", "none", "SP_Briefs", "SP_Socks", l_1_3, l_1_1)
ClothingDefineOutfit("Starting", "CLT_Start", "Hair", "B_Jacket6", "none", "none", "B_Pants2", "P_Sneakers2", l_1_2, l_1_1)
ClothingDefineOutfit("Uniform", "CLT_Uniform", "Hair", "S_Sweater5", "none", "none", "S_Pants1", "P_Sneakers2", l_1_3, l_1_1)
ClothingDefineOutfit("Boxing", "CLT_BOX_OUTFIT", "Hair", "SP_BOXING_T", "SP_Boxing_G_L", "SP_Boxing_G_R", "SP_BOXING_L", "SP_BOXING_ft", l_1_3, l_1_0)
ClothingDefineOutfit("Boxing NG", "CLT_BOX_NG", "Hair", "SP_BOXING_T", "none", "none", "SP_BOXING_L", "SP_BOXING_ft", l_1_3, l_1_0)
ClothingDefineOutfit("Wrestling", "CLT_WRS_OUTFIT", "SP_Wrestling_H", "SP_Wrestling_T", "none", "none", "SP_Wrestling_L", "SP_Wrestling_ft", l_1_3, l_1_0)
ClothingDefineOutfit("Mascot", "CLT_MASCOT", "SP_Mascot_H", "none", "none", "none", "none", "SP_Mascot_B", l_1_2, l_1_0)
ClothingDefineOutfit("MascotNoHead", "CLT_MASCOT", "Hair", "none", "none", "none", "none", "SP_Mascot_B", l_1_2, l_1_0)
ClothingDefineOutfit("Orderly", "CLT_OLY_OUTFIT", "Hair", "SP_Orderly_T", "none", "none", "SP_Orderly_P", "SP_Orderly_B", l_1_2, l_1_0)
ClothingDefineOutfit("Halloween", "CLT_HALLOW", "SP_Ween_H", "SP_Ween_T", "none", "none", "SP_Ween_L", "B_Boots1", l_1_2, l_1_1)
ClothingDefineOutfit("PJ", "CLT_PJ", "Hair", "SP_PJ_T", "none", "none", "SP_PJ_L", "SP_Socks", l_1_3, l_1_1)
ClothingDefineOutfit("Prison", "CLT_Prison", "Hair", "SP_Prison_T", "none", "none", "SP_Prison_L", "P_Boots2", l_1_3, l_1_0)
ClothingDefineOutfit("Grotto Master", "CLT_DM", "SP_DM_H", "SP_DM_T", "none", "none", "B_Pants2", "P_Boots2", l_1_3, l_1_1)
ClothingDefineOutfit("Gnome", "CLT_Gnome", "SP_Gnome_H", "SP_Gnome_T", "none", "none", "SP_Gnome_L", "SP_Gnome_ft", l_1_2, l_1_0)
ClothingDefineOutfit("Fast Food", "CLT_Fastfood", "SP_Fries_H", "SP_Fries_T", "none", "none", "SP_Fries_L", "P_Boots2", l_1_2, l_1_1)
ClothingDefineOutfit("Gold Suit", "CLT_Rocker", "SP_Goldsuit_H", "SP_Goldsuit_T", "none", "none", "SP_Goldsuit_L", "SP_Goldsuit_ft", l_1_2, l_1_0)
ClothingDefineOutfit("BMX Champion", "CLT_BMX", "SP_BikeHelmet", "SP_BikeJersey", "none", "none", "B_Pants2", "P_Boots2", l_1_2, l_1_1)
ClothingDefineOutfit("Gym Strip", "CLT_gym", "Hair", "S_SSleeves4", "S_Wristband4", "S_Wristband3", "S_Shorts1", "P_Sneakers1", l_1_3, l_1_1)
ClothingDefineOutfit("Ninja_BLK", "CLT_NinjaBLK", "SP_Ninja_H", "SP_Ninja_T", "none", "none", "SP_Ninja_L", "SP_Ninja_Ft", l_1_2, l_1_1)
ClothingDefineOutfit("Ninja_WHT", "CLT_NinjaWHT", "SP_NinjaW_H", "SP_NinjaW_T", "none", "none", "SP_NinjaW_L", "SP_NinjaW_Ft", l_1_2, l_1_1)
ClothingDefineOutfit("Ninja_RED", "CLT_NinjaRED", "SP_NinjaR_H", "SP_NinjaR_T", "none", "none", "SP_NinjaR_L", "SP_NinjaR_Ft", l_1_2, l_1_1)
ClothingDefineOutfit("Columbus", "CLT_Columbus", "SP_Colum_H", "SP_Colum_T", "none", "none", "SP_Colum_L", "SP_Colum_FT", l_1_2, l_1_0)
ClothingDefineOutfit("Nutcracker", "CLT_Nutcracker", "SP_Nutcrack_H", "SP_Nutcrack_T", "none", "none", "SP_Nutcrack_L", "SP_Nutcrack_FT", l_1_2, l_1_0)
ClothingDefineOutfit("Elf", "CLT_Elf", "SP_Elf_H", "SP_Elf_T", "none", "none", "SP_Elf_L", "SP_Elf_FT", l_1_2, l_1_0)
ClothingDefineOutfit("Marching Band", "CLT_MBand", "SP_MBand_H", "SP_MBand_T", "none", "none", "SP_MBand_L", "SP_MBand_FT", l_1_2, l_1_0)
ClothingDefineOutfit("Nascar", "CLT_Nascar", "SP_Nascar_H", "SP_Nascar_T", "none", "none", "SP_Nascar_L", "SP_Nascar_FT", l_1_2, l_1_0)
ClothingDefineOutfit("80 Rocker", "CLT_80Rocker", "SP_80Rocker_H", "SP_80Rocker_T", "none", "SP_80Bracer", "SP_80Rocker_L", "SP_80Rocker_FT", l_1_3, l_1_0)
ClothingDefineOutfit("Panda", "CLT_Panda", "SP_Panda_H", "none", "none", "none", "none", "SP_Panda_B", l_1_2, l_1_0)
ClothingDefineOutfit("Alien", "CLT_Alien", "SP_Alien_H", "SP_Alien_T", "none", "none", "SP_Alien_L", "P_Boots4", l_1_2, l_1_1)
ClothingDefineOutfit("NerdJimmy", "CLT_Nerd", "SP_Nerd_H", "SP_Nerd_T", "none", "SP_NerdWatch", "SP_Nerd_L", "SP_Nerd_FT", l_1_3, l_1_0)
end
scloth()
scloth = nil
STimeCycle.lua - This is the timecycle script. This controls whether Jimmy passes out after curfew...etc and so on. Passing out
CAN be disabled by correctly editing this script.
main = function()
repeat
Wait(1000)
until not Alive
end
F_AttendedClass = function()
if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
return
end
SetSkippedClass(false)
PlayerSetPunishmentPoints(0)
end
F_MissedClass = function()
if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
return
end
SetSkippedClass(true)
StatAddToInt(166)
end
F_AttendedCurfew = function()
if not PedInConversation(gPlayer) and not MissionActive() then
TextPrintString("You got home in time for curfew", 4)
end
end
F_MissedCurfew = function()
if not PedInConversation(gPlayer) and not MissionActive() then
TextPrint("TM_TIRED5", 4, 2)
end
end
F_StartClass = function()
if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
return
end
F_RingSchoolBell()
local l_6_0 = PlayerGetPunishmentPoints() + GetSkippingPunishment()
end
F_EndClass = function()
if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
return
end
F_RingSchoolBell()
end
F_StartMorning = function()
F_UpdateTimeCycle()
end
F_EndMorning = function()
F_UpdateTimeCycle()
end
F_StartLunch = function()
if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
F_UpdateTimeCycle()
return
end
F_UpdateTimeCycle()
end
F_EndLunch = function()
F_UpdateTimeCycle()
end
F_StartAfternoon = function()
F_UpdateTimeCycle()
end
F_EndAfternoon = function()
F_UpdateTimeCycle()
end
F_StartEvening = function()
F_UpdateTimeCycle()
end
F_EndEvening = function()
F_UpdateTimeCycle()
end
F_StartCurfew_SlightlyTired = function()
F_UpdateTimeCycle()
end
F_StartCurfew_Tired = function()
F_UpdateTimeCycle()
end
F_StartCurfew_MoreTired = function()
F_UpdateTimeCycle()
end
F_StartCurfew_TooTired = function()
F_UpdateTimeCycle()
end
F_EndCurfew_TooTired = function()
F_UpdateTimeCycle()
end
F_EndTired = function()
F_UpdateTimeCycle()
end
F_Nothing = function()
end
F_ClassWarning = function()
if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
return
end
local l_23_0 = math.random(1, 2)
end
F_UpdateTimeCycle = function()
if not IsMissionCompleated("1_B") then
local l_24_0 = GetCurrentDay(false)
if l_24_0 < 0 or l_24_0 > 2 then
SetCurrentDay(0)
end
end
F_UpdateCurfew()
end
F_UpdateCurfew = function()
local l_25_0 = shared.gCurfewRules
if not l_25_0 then
l_25_0 = F_CurfewDefaultRules
end
l_25_0()
end
F_CurfewDefaultRules = function()
local l_26_0 = ClockGet()
if l_26_0 >= 23 or l_26_0 < 7 then
shared.gCurfew = true
else
shared.gCurfew = false
end
end
This should be enough script sources to get people started with learning lua and trying out their own bully mods. Any questions should be posted in this forum section and Red or I will try to answer them as best as we can. We will not respond to requests in this section. Requests need to go to the requests forum section where they belong and IF one of us or another modder has the time to make a requested mod....we will do so.
I will hold off on posting more script sources until I see where this goes since this is quite a large step for most of the community to attempt at this time....but this is the revolution of bully modding since now all hex editing should be stopped and people should give it a try to learn some lua modding instead. Everything that can be done via hex editing can be done via lua as well and is pretty easy to pull off for most things. Some things are a bit harder to do but I will do what I can to help everyone new to lua understand how things work with this new form of bully modding.
NOTES:
To
COMPILE a script just open a windows command prompt window and type
luac -o ArcRace1.lur scriptname.lua and just replace scriptname.lua with the script you want to try out. This will compile the script and name it ArcRace1.lur which is the script for the boys dorm arcade machine. Scripts like 1_01.lua need to be named the same as their compiled versions are (1_01.lur in this case) or any script with lib in the name.
I can explain more about this as needed.
For now....I hope everyone has had a great xmas and enjoy this gift since it has been a very long time coming.