DaBOSS54320

Bully LUA: NPC Mod 0.1

Sep 5th, 2015
1,017
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 26.01 KB | None | 0 0
  1. function main()
  2.   Wait(500)
  3.   sensitivity = 0.1
  4.   SetupModelsTable()
  5.   styles = {
  6.     -- NAME     STYLE     STAT
  7.     {"Player","Player","STAT_PLAYER"},
  8.     {"B_Striker_A","B_Striker_A","STAT_B_STRIKER_A"},
  9.     {"CV_Male_A","CV_Male_A","STAT_CV_MALE_A"},
  10.     {"CV_Old","CV_OLD","STAT_CV_MALE_OLD"},
  11.     {"DO_Striker_A","DO_Striker_A","STAT_DO_STRIKER_A"},
  12.     {"DO_Grappler_A","DO_Grappler_A","STAT_DO_GRAPPLER_A"},
  13.     {"GS_Male_A","GS_Male_A","STAT_GS_MALE_A"},
  14.     {"GS_Fat_A","GS_Fat_A","STAT_GS_MALE_A"},
  15.     {"G_Striker_A","G_Striker_A","STAT_G_STRIKER_A"},
  16.     {"G_Grappler_A","G_Grappler_A","STAT_G_GRAPPLER_A"},
  17.     {"G_Melee_A","G_Melee_A","STAT_G_MELEE_A"},
  18.     {"J_Striker_A","J_Striker_A","STAT_J_STRIKER_A"},
  19.     {"J_Grappler_A","J_Grappler_A","STAT_J_GRAPPLER_A"},
  20.     {"J_Melee_A","J_Melee_A","STAT_J_MELEE_A"},
  21.     {"P_Striker_A","P_Striker_A","STAT_P_STRIKER_A"},
  22.     {"P_Striker_B","P_Striker_B","STAT_P_STRIKER_B"},
  23.     {"P_Grappler_A","P_Grappler_A","STAT_P_GRAPPLER_A"},
  24.     {"N_Striker_A","N_Striker_A","STAT_N_STRIKER_A"},
  25.     {"N_Striker_B","N_Striker_B","STAT_N_STRIKER_B"},
  26.     {"N_Ranged_A","N_Ranged_A","STAT_N_RANGED_A"},
  27.     {"Authority","Authority","STAT_PF_BASIC_S"},
  28.     {"LE_Orderly_A","LE_Orderly_A","STAT_LE_ORDERLY_A"},
  29.     {"G_Johnny","G_Johnny","STAT_G_JOHNNY"},
  30.     {"BOSS_Darby","BOSS_Darby","STAT_P_BOXING"},
  31.     {"BOSS_Russell","BOSS_Russell","STAT_B_RUSSELL_A"},
  32.     {"CV_Female_A","CV_Female_A","STAT_CV_FEMALE_A"},
  33.     {"GS_Female_A","GS_Female_A","STAT_GS_FEMALE_A"},
  34.     {"TE_Female_A","TE_Female_A","STAT_TE_FEMALE_A"}
  35.   }
  36.   style = math.random(2,24)
  37.   blip = BlipAddXYZ(-490.6,313.8,31.4,0,0,8)
  38.   moving = false
  39.   strafing = false
  40.   timesSprintPressed = 0
  41.   lastTimeSprintPressed = GetTimer()
  42.   lastTimeRunning = GetTimer()
  43.   lastTimeDoneShit = GetTimer()
  44.   usingStats = false
  45.   maxTrouble = 300
  46.   playerStats = {}
  47.   for i = 0,63 do
  48.     playerStats[i+1] = GameGetPedStat(gPlayer,i)
  49.   end
  50.   -- Start as random ped with random movement
  51.   local health = PlayerGetHealth()
  52.   local weapon = PedGetWeapon(gPlayer)
  53.   PedSetStatsType(gPlayer,styles[style][3])
  54.   if styles[style][3] ~= nil and styles[style][3] ~= "STAT_PLAYER" then
  55.     for i,v in ipairs(playerStats) do
  56.       GameSetPedStat(gPlayer,i-1,v)
  57.     end
  58.     PedSetWeapon(gPlayer,weapon)
  59.     PlayerSetHealth(health)
  60.   end
  61.   PlayerSwapModel(models[math.random(2,47)][1])
  62.   PedSetActionTree(gPlayer,"/Global/Player","Act/Player.act")
  63.   PedSetAITree(gPlayer,"/Global/PlayerAI","Act/PlayerAI.act")
  64.   local model = PedGetModel(gPlayer)
  65.   if model == 0 then model = 1 end
  66.   for f = 0,11 do
  67.     local attitude = PedGetTypeToTypeAttitude(f,models[model][2])
  68.     PedSetTypeToTypeAttitude(f,13,attitude)
  69.     SetFactionRespect(f,attitude*25)
  70.   end
  71.   if models[model][2] == 0 or models[model][2] == 7 or models[model][2] == 8 then
  72.     maxTrouble = 0
  73.   end
  74.   if PedIsFemale(gPlayer) then
  75.     style = math.random(26,28)
  76.   end
  77.   while true do
  78.     -- Load animations
  79.     LoadAnimations()
  80.     -- Menu blip
  81.     if AreaGetVisible() == 14 and PedIsInAreaXYZ(gPlayer,-490.6,313.8,31.4,0.7) then
  82.       TextPrintString("Press \b",0,2)
  83.       if IsButtonBeingPressed(9,0) then
  84.         PlayerSetControl(0)
  85.         PlayerSetPosXYZ(-490.6,313.8,31.4)
  86.         PedFaceXYZ(gPlayer,-492.8,311.6,32)
  87.         local options = {
  88.           {"Model",models[PedGetModel(gPlayer)][1],PedGetModel(gPlayer)},
  89.           {"Movement",styles[style][1],style},
  90.           {"Max Trouble",maxTrouble},
  91.           {"Set Respect"}
  92.         }
  93.         local s = 1
  94.         local model = PedGetModel(gPlayer)
  95.         local h,x,y,z = PedGetHeading(gPlayer),PlayerGetPosXYZ()
  96.         local hx,hy,hz = PedGetHeadPos(gPlayer)
  97.         CameraSetXYZ(-492.8,311.6,32.8,hx,hy,hz)
  98.         repeat
  99.           if IsButtonBeingPressed(2,0) then
  100.             s = s - 1
  101.             if s < 1 then s = 4 end
  102.           elseif IsButtonBeingPressed(3,0) then
  103.             s = s + 1
  104.             if s > 4 then s = 1 end
  105.           end
  106.           if s == 2 then
  107.             if IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0)) then
  108.               style = style - 1
  109.               if style < 1 then style = table.getn(styles) end
  110.             elseif IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0)) then
  111.               style = style + 1
  112.               if style > table.getn(styles) then style = 1 end
  113.             end
  114.             options[2][2] = styles[style][1]
  115.             options[2][3] = style
  116.           elseif s == 1 then
  117.             if IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0)) then
  118.               model = model - 1
  119.               if model < 1 then model = table.getn(models) end
  120.             elseif IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0)) then
  121.               model = model + 1
  122.               if model > table.getn(models) then model = 1 end
  123.             end
  124.             if IsButtonBeingPressed(0,0) or IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0)) or (IsButtonPressed(12,0) and IsButtonPressed(1,0)) then
  125.               PlayerSwapModel(models[model][1])
  126.               PedSetActionTree(gPlayer,"/Global/Player","Act/Player.act")
  127.               PedSetAITree(gPlayer,"/Global/PlayerAI","Act/PlayerAI.act")
  128.             end
  129.             options[1][2] = models[model][1]
  130.             options[1][3] = model
  131.           elseif s == 3 then
  132.             if (IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0))) and maxTrouble > 0 then
  133.               maxTrouble = maxTrouble - 10
  134.             elseif (IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0))) and maxTrouble < 300 then
  135.               maxTrouble = maxTrouble + 10
  136.             end
  137.             options[3][2] = maxTrouble
  138.           elseif s == 4 then
  139.             if IsButtonBeingPressed(7,0) then
  140.               local s = 1
  141.               local factions = {
  142.                 "Prefect","Nerd","Jock","Dropout","Greaser","Prep","Student","Cop","Teacher","Adult","Shop","Bully"}
  143.               repeat
  144.                 if IsButtonBeingPressed(2,0) or (IsButtonPressed(12,0) and IsButtonPressed(2,0)) then
  145.                   s = s - 1
  146.                   if s < 1 then s = table.getn(factions) end
  147.                 elseif IsButtonBeingPressed(3,0) or (IsButtonPressed(12,0) and IsButtonPressed(3,0)) then
  148.                   s = s + 1
  149.                   if s > table.getn(factions) then s = 1 end
  150.                 elseif (IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0))) and GetFactionRespect(s-1) > 0 then
  151.                   SetFactionRespect(s-1,GetFactionRespect(s-1)-10)
  152.                   if GetFactionRespect(s-1) < 0 then
  153.                     SetFactionRespect(s-1,0)
  154.                   end
  155.                   PedSetTypeToTypeAttitude(s-1,13,tonumber(string.format("%.0f",GetFactionRespect(s-1)/25)))
  156.                 elseif (IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0))) and GetFactionRespect(s-1) < 100 then
  157.                   SetFactionRespect(s-1,GetFactionRespect(s-1)+10)
  158.                   if GetFactionRespect(s-1) > 100 then
  159.                     SetFactionRespect(s-1,100)
  160.                   end
  161.                   PedSetTypeToTypeAttitude(s-1,13,tonumber(string.format("%.0f",GetFactionRespect(s-1)/25)))
  162.                 elseif IsButtonBeingPressed(9,0) then
  163.                   local model = PedGetModel(gPlayer)
  164.                   if model == 0 then model = 1 end
  165.                   for f = 0,11 do
  166.                     local attitude = PedGetTypeToTypeAttitude(f,models[model][2])
  167.                     PedSetTypeToTypeAttitude(f,13,attitude)
  168.                     SetFactionRespect(f,attitude*25)
  169.                   end
  170.                 end
  171.                 local text = ""
  172.                 for i,v in ipairs(factions) do
  173.                   if i == s then
  174.                     text = text..">"..v..":"..GetFactionRespect(i-1).."\n"
  175.                   else
  176.                     text = text..v..":"..GetFactionRespect(i-1).."\n"
  177.                   end
  178.                 end
  179.                 TextPrintString(text,0,1)
  180.                 TextPrintString("Press \b to sync with model\nPress \t to exit",0,2)
  181.                 Wait(0)
  182.               until IsButtonBeingPressed(8,0) or PedIsDead(gPlayer)
  183.             end
  184.           end
  185.           if styles[style][2] ~= "Player" then
  186.             if not PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic",true) then
  187.               PedSetActionNode(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic","Act/Anim/"..styles[style][2]..".act")
  188.             end
  189.           else
  190.             PlayerSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
  191.           end
  192.           h = h + GetStickValue(18,0)*0.1
  193.           PlayerFaceHeading(h)
  194.           PlayerSetPosXYZ(x,y,z)
  195.           local text = ""
  196.           for i,v in ipairs(options) do
  197.             if i == s then
  198.               text = text..">"
  199.             end
  200.             if v[2] ~= nil then
  201.               text = text..v[1]..": "..v[2].."\n"
  202.             else
  203.               text = text..v[1].."\n"
  204.             end
  205.           end
  206.           if options[s][3] ~= nil then
  207.             text = text.."("..options[s][3]..")"
  208.           end
  209.           TextPrintString(text,0,1)
  210.           TextPrintString("Press \t to exit",0,2)
  211.           Wait(0)
  212.         until IsButtonBeingPressed(8,0) or PedIsDead(gPlayer)
  213.         CameraReturnToPlayer()
  214.         if styles[style][2] ~= "Player" then
  215.           PedSetActionNode(gPlayer,"/Global/"..styles[style][2].."/Default_KEY","Act/Anim/"..styles[style][2]..".act")
  216.         else
  217.           PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
  218.         end
  219.         PedFaceXYZ(gPlayer,-492.8,311.6,32)
  220.         PlayerSetControl(1)
  221.         -- Set stats type for strafe
  222.         local health = PlayerGetHealth()
  223.         local weapon = PedGetWeapon(gPlayer)
  224.         PedSetStatsType(gPlayer,styles[style][3])
  225.         if styles[style][3] ~= nil and styles[style][3] ~= "STAT_PLAYER" then
  226.           for i,v in ipairs(playerStats) do
  227.             GameSetPedStat(gPlayer,i-1,v)
  228.           end
  229.           PedSetWeapon(gPlayer,weapon)
  230.           PlayerSetHealth(health)
  231.         end
  232.         -- Punishment system
  233.         DisablePunishmentSystem(maxTrouble <= 0)
  234.       end
  235.     end
  236.     -- NPC Movement
  237.     if styles[style][2] ~= "Player" then
  238.       -- Sprint detection
  239.       if IsButtonBeingPressed(7,0) then
  240.         timesSprintPressed = timesSprintPressed + 1
  241.         lastTimeSprintPressed = GetTimer()
  242.       elseif GetTimer() >= lastTimeSprintPressed + 400 then
  243.         timesSprintPressed = 0
  244.       end
  245.       if IsButtonBeingReleased(7,0) then
  246.         lastTimeRunning = GetTimer()
  247.       end
  248.       -- Strafe
  249.       local target = PedGetTargetPed(gPlayer)
  250.       if PedIsValid(target) and (PlayerIsFree() or PlayerIsStrafing()) then
  251.         strafing = true
  252.         if sensitivity <= math.abs(GetStickValue(16,0)) + math.abs(GetStickValue(17,0)) then
  253.           PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/CombatBasic","Act/Anim/"..styles[style][2]..".act")
  254.         else
  255.           PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/StrafeIdle","Act/Anim/"..styles[style][2]..".act")
  256.         end
  257.         local x,y,z = PedGetPosXYZ(target)
  258.         PedFaceXYZ(gPlayer,x,y,z)
  259.       elseif strafing and PlayerIsStrafing() then
  260.         strafing = false
  261.         PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
  262.       end
  263.       -- Set action node
  264.       if PlayerIsFree() then
  265.         if sensitivity <= math.abs(GetStickValue(16,0)) + math.abs(GetStickValue(17,0)) then
  266.           moving = true
  267.           if timesSprintPressed > 1 then
  268.             PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/SprintBasic","Act/Anim/"..styles[style][2]..".act")
  269.           elseif IsButtonPressed(7,0) or GetTimer() < lastTimeRunning + 200 then
  270.             PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/RunBasic","Act/Anim/"..styles[style][2]..".act")
  271.           else
  272.             PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic","Act/Anim/"..styles[style][2]..".act")
  273.           end
  274.         elseif moving then
  275.           moving = false
  276.           PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
  277.         end
  278.       end
  279.       -- Do player stuff
  280.       if (IsButtonBeingPressed(6,0) or IsButtonBeingPressed(8,0) or IsButtonBeingPressed(9,0) or (IsButtonBeingPressed(7,0) and PedIsValid(PedGetTargetPed(gPlayer)))) and (PlayerIsFreeStyle() or PlayerIsStrafing()) and not PedIsValid(PedGetGrappleTargetPed(gPlayer)) then
  281.         if IsButtonBeingPressed(6,0) and (IsButtonPressed(7,0) or timesSprintPressed > 1) then
  282.           PedSetActionNode(gPlayer,"/Global/Player/Attacks/Strikes/RunningAttacks/HeavyAttacks/RunShoulder","Act/Player.act")
  283.         else
  284.           PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
  285.         end
  286.       end
  287.     end
  288.     -- Max trouble
  289.     if PlayerGetPunishmentPoints() > maxTrouble then
  290.       PlayerSetPunishmentPoints(maxTrouble)
  291.     end
  292.     if maxTrouble <= 0 then
  293.       DisablePunishmentSystem(true)
  294.     end
  295.     -- Switch to Jimmy for cutscenes
  296.     if not PedIsModel(gPlayer,0) and GetCutsceneRunning() ~= 0 then
  297.       local model = PedGetModel(gPlayer)
  298.       PlayerSwapModel("player")
  299.       repeat
  300.         Wait(0)
  301.       until GetCutsceneRunning() == 0
  302.       repeat
  303.         while SoundSpeechPlaying(gPlayer,"NARRATION") do
  304.           Wait(0)
  305.         end
  306.         TextPrintString("Press \14 to restore model\nPress \15 to remain player",0,2)
  307.         Wait(0)
  308.       until IsButtonBeingPressed(3,0) or IsButtonBeingPressed(2,0)
  309.       if IsButtonBeingPressed(2,0) then
  310.         PlayerSwapModel(models[model][1])
  311.         PedSetActionTree(gPlayer,"/Global/Player","Act/Player.act")
  312.         PedSetAITree(gPlayer,"/Global/PlayerAI","Act/PlayerAI.act")
  313.       end
  314.     end
  315.     -- Clothing manager
  316.     if not PedIsModel(gPlayer,0) and shared.PlayerInClothingManager then
  317.       PlayerSwapModel("player")
  318.     end
  319.     Wait(0)
  320.   end
  321. end
  322.  
  323. function PedGetModel(ped)
  324.   if PedIsValid(ped) then
  325.     for i = 0,258 do
  326.       if PedIsModel(ped,i) then
  327.         if i ~= 0 then
  328.           return i
  329.         else
  330.           return 1
  331.         end
  332.       end
  333.     end
  334.   end
  335.   return -1
  336. end
  337.  
  338. function PlayerSetActionNode(node,file)
  339.   if PedIsPlaying(gPlayer,node,true) then
  340.     return false
  341.   else
  342.     PedSetActionNode(gPlayer,node,file)
  343.     return true
  344.   end
  345. end
  346.  
  347. function PlayerIsFree()
  348.   return PedIsPlaying(gPlayer,"/Global/Player/Default_KEY",true) or PlayerIsFreeStyle()
  349. end
  350.  
  351. function PlayerIsFreeStyle()
  352.   return PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY",true) or
  353.     PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic",true) or
  354.     PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/RunBasic",true) or
  355.     PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/SprintBasic",true)
  356. end
  357.  
  358. function PlayerIsStrafing()
  359.   return PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/StrafeIdle",true) or
  360.     PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/CombatBasic",true)
  361. end
  362.  
  363. function IsAnyButtonPressed(c)
  364.   for b = 0,15 do
  365.     if IsButtonPressed(b,0) then
  366.       return true
  367.     end
  368.   end
  369.   return false
  370. end
  371.  
  372. function SetupModelsTable()
  373.   models = {
  374.     {"player",13},
  375.     {"DOgirl_Zoe_EG",6},
  376.     {"NDGirl_Beatrice",1},
  377.     {"NDH1a_Algernon",1},
  378.     {"NDH1_Fatty",1},
  379.     {"ND2nd_Melvin",1},
  380.     {"NDH2_Thad",1},
  381.     {"NDH3_Bucky",1},
  382.     {"NDH2a_Cornelius",1},
  383.     {"NDLead_Earnest",1},
  384.     {"NDH3a_Donald",1},
  385.     {"JKH1_Damon",2},
  386.     {"JKH1a_Kirby",2},
  387.     {"JKGirl_Mandy",2},
  388.     {"JKH2_Dan",2},
  389.     {"JKH2a_Luis",2},
  390.     {"JKH3_Casey",2},
  391.     {"JKH3a_Bo",2},
  392.     {"JKlead_Ted",2},
  393.     {"JK2nd_Juri",2},
  394.     {"GR2nd_Peanut",4},
  395.     {"GRH2A_Hal",4},
  396.     {"GRlead_Johnny",4},
  397.     {"GRH1_Lefty",4},
  398.     {"GRGirl_Lola",4},
  399.     {"GRH3_Lucky",4},
  400.     {"GRH1a_Vance",4},
  401.     {"GRH3a_Ricky",4},
  402.     {"GRH2_Norton",4},
  403.     {"PRH1_Gord",5},
  404.     {"PRH1a_Tad",5},
  405.     {"PRH2a_Chad",5},
  406.     {"PR2nd_Bif",5},
  407.     {"PRH3_Justin",5},
  408.     {"PRH2_Bryce",5},
  409.     {"PRH2_Bryce_OBOX",5},
  410.     {"PRlead_Darby",5},
  411.     {"PRGirl_Pinky",5},
  412.     {"GN_Asiangirl",6},
  413.     {"PRH3a_Parker",5},
  414.     {"DOH2_Jerry",3},
  415.     {"DOH1a_Otto",3},
  416.     {"DOH2a_Leon",3},
  417.     {"DOH1_Duncan",3},
  418.     {"DOH3_Henry",3},
  419.     {"DOH3a_Gurney",3},
  420.     {"DO2nd_Omar",3},
  421.     {"DOGirl_Zoe",3},
  422.     {"PF2nd_Max",0},
  423.     {"PFH1_Seth",0},
  424.     {"PFH2_Edward",0},
  425.     {"PFlead_Karl",0},
  426.     {"TO_Orderly",0},
  427.     {"TE_HallMonitor",8},
  428.     {"TE_GymTeacher",8},
  429.     {"TE_Janitor",9},
  430.     {"TE_English",8},
  431.     {"TE_Cafeteria",8},
  432.     {"TE_Secretary",8},
  433.     {"TE_Nurse",8},
  434.     {"TE_MathTeacher",8},
  435.     {"TE_Librarian",8},
  436.     {"TE_Art",8},
  437.     {"TE_Biology",8},
  438.     {"TE_Principal",8},
  439.     {"GN_Littleblkboy",6},
  440.     {"GN_SexyGirl",6},
  441.     {"GN_Littleblkgirl",6},
  442.     {"GN_Hispanicboy",6},
  443.     {"GN_Greekboy",6},
  444.     {"GN_Fatboy",6},
  445.     {"GN_Boy01",6},
  446.     {"GN_Boy02",6},
  447.     {"GN_Fatgirl",6},
  448.     {"DOlead_Russell",11},
  449.     {"TO_Business1",9},
  450.     {"TO_Business2",9},
  451.     {"TO_BusinessW1",9},
  452.     {"TO_BusinessW2",9},
  453.     {"TO_RichW1",9},
  454.     {"TO_RichW2",9},
  455.     {"TO_Fireman",9},
  456.     {"TO_Cop",7},
  457.     {"TO_Comic",9},
  458.     {"GN_Bully03",11},
  459.     {"TO_Bikeowner",9},
  460.     {"TO_Hobo",10},
  461.     {"Player_Mascot",2},
  462.     {"TO_GroceryOwner",9},
  463.     {"GN_Sexygirl_UW",6},
  464.     {"DOLead_Edgar",3},
  465.     {"JK_LuisWrestle",2},
  466.     {"JKGirl_MandyUW",2},
  467.     {"PRGirl_PinkyUW",5},
  468.     {"NDGirl_BeatriceUW",1},
  469.     {"GRGirl_LolaUW",4},
  470.     {"TO_Cop2",7},
  471.     {"Player_OWres",6},
  472.     {"GN_Bully02",11},
  473.     {"TO_RichM1",9},
  474.     {"TO_RichM2",9},
  475.     {"GN_Bully01",11},
  476.     {"TO_FireOwner",9},
  477.     {"TO_CSOwner_2",9},
  478.     {"TO_CSOwner_3",9},
  479.     {"TE_Chemistry",8},
  480.     {"TO_Poorwoman",10},
  481.     {"TO_MotelOwner",10},
  482.     {"JKKirby_FB",2},
  483.     {"JKTed_FB",2},
  484.     {"JKDan_FB",2},
  485.     {"JKDamon_FB",2},
  486.     {"TO_Carny02",9},
  487.     {"TO_Carny01",9},
  488.     {"TO_CarnyMidget",9},
  489.     {"TO_Poorman2",10},
  490.     {"PRH2A_Chad_OBOX",5},
  491.     {"PRH3_Justin_OBOX",5},
  492.     {"PRH3a_Parker_OBOX",5},
  493.     {"TO_BarberRich",9},
  494.     {"GenericWrestler",11},
  495.     {"ND_FattyWrestle",1},
  496.     {"TO_Industrial",10},
  497.     {"TO_Associate",10},
  498.     {"TO_Asylumpatient",9},
  499.     {"TE_Autoshop",8},
  500.     {"TO_Mailman",9},
  501.     {"TO_Tattooist",10},
  502.     {"TE_Assylum",8},
  503.     {"Nemesis_Gary",6},
  504.     {"TO_Oldman2",10},
  505.     {"TO_BarberPoor",10},
  506.     {"PR2nd_Bif_OBOX",5},
  507.     {"Peter",6},
  508.     {"TO_RichM3",9},
  509.     {"Rat_Ped",6},
  510.     {"GN_LittleGirl_2",6},
  511.     {"GN_LittleGirl_3",6},
  512.     {"GN_WhiteBoy",6},
  513.     {"TO_FMidget",9},
  514.     {"Dog_Pitbull",9},
  515.     {"GN_SkinnyBboy",6},
  516.     {"TO_Carnie_female",9},
  517.     {"TO_Business3",9},
  518.     {"GN_Bully04",11},
  519.     {"GN_Bully05",11},
  520.     {"GN_Bully06",11},
  521.     {"TO_Business4",9},
  522.     {"TO_Business5",9},
  523.     {"DO_Otto_asylum",3},
  524.     {"TE_History",8},
  525.     {"TO_Record",9},
  526.     {"DO_Leon_Assylum",3},
  527.     {"DO_Henry_Assylum",3},
  528.     {"NDH1_FattyChocolate",1},
  529.     {"TO_GroceryClerk",9},
  530.     {"TO_Handy",10},
  531.     {"TO_Orderly2",0},
  532.     {"GN_Hboy_Ween",6},
  533.     {"Nemesis_Ween",6},
  534.     {"GRH3_Lucky_Ween",4},
  535.     {"NDH3a_Donald_ween",1},
  536.     {"PRH3a_Parker_Ween",5},
  537.     {"JKH3_Casey_Ween",2},
  538.     {"Peter_Ween",6},
  539.     {"GN_AsianGirl_Ween",6},
  540.     {"PRGirl_Pinky_Ween",5},
  541.     {"JKH1_Damon_ween",2},
  542.     {"GN_WhiteBoy_Ween",6},
  543.     {"GN_Bully01_Ween",11},
  544.     {"GN_Boy02_Ween",6},
  545.     {"PR2nd_Bif_OBOX_D1",5},
  546.     {"GRH1a_Vance_Ween",6},
  547.     {"NDH2_Thad_Ween",1},
  548.     {"PRGirl_Pinky_BW",5},
  549.     {"DOlead_Russell_BU",11},
  550.     {"PRH1a_Tad_BW",5},
  551.     {"PRH2_Bryce_BW",5},
  552.     {"PRH3_Justin_BW",5},
  553.     {"GN_Asiangirl_CH",6},
  554.     {"GN_Sexygirl_CH",6},
  555.     {"PRGirl_Pinky_CH",5},
  556.     {"TO_NH_Res_01",9},
  557.     {"TO_NH_Res_02",9},
  558.     {"TO_NH_Res_03",9},
  559.     {"NDH1_Fatty_DM",1},
  560.     {"TO_PunkBarber",10},
  561.     {"FightingMidget_01",6},
  562.     {"FightingMidget_02",6},
  563.     {"TO_Skeletonman",9},
  564.     {"TO_Beardedwoman",9},
  565.     {"TO_CarnieMermaid",9},
  566.     {"TO_Siamesetwin2",9},
  567.     {"TO_Paintedman",9},
  568.     {"TO_GN_Workman",9},
  569.     {"DOLead_Edgar_GS",3},
  570.     {"DOH3a_Gurney_GS",3},
  571.     {"DOH2_Jerry_GS",3},
  572.     {"DOH2a_Leon_GS",3},
  573.     {"GRH2a_Hal_GS",4},
  574.     {"GRH2_Norton_GS",4},
  575.     {"GR2nd_Peanut_GS",4},
  576.     {"GRH1a_Vance_GS",4},
  577.     {"JKH3a_Bo_GS",2},
  578.     {"JKH1_Damon_GS",2},
  579.     {"JK2nd_Juri_GS",2},
  580.     {"JKH1a_Kirby_GS",2},
  581.     {"NDH1a_Algernon_GS",1},
  582.     {"NDH3_Bucky_GS",1},
  583.     {"NDH2_Thad_GS",1},
  584.     {"PRH3a_Parker_GS",5},
  585.     {"PRH3_Justin_GS",5},
  586.     {"PRH1a_Tad_GS",5},
  587.     {"PRH1_Gord_GS",5},
  588.     {"NDLead_Earnest_EG",1},
  589.     {"JKlead_Ted_EG",2},
  590.     {"GRlead_Johnny_EG",4},
  591.     {"PRlead_Darby_EG",5},
  592.     {"Dog_Pitbull2",9},
  593.     {"Dog_Pitbull3",9},
  594.     {"TE_CafeMU_W",8},
  595.     {"TO_Millworker",9},
  596.     {"TO_Dockworker",9},
  597.     {"NDH2_Thad_PJ",1},
  598.     {"GN_Lblkboy_PJ",6},
  599.     {"GN_Hboy_PJ",6},
  600.     {"GN_Boy01_PJ",6},
  601.     {"GN_Boy02_PJ",6},
  602.     {"TE_Gym_Incog",8},
  603.     {"JK_Mandy_Towel",2},
  604.     {"JK_Bo_FB",2},
  605.     {"JK_Casey_FB",2},
  606.     {"PunchBag",11},
  607.     {"TO_Cop3",7},
  608.     {"GN_GreekboyUW",6},
  609.     {"TO_Construct01",9},
  610.     {"TO_Construct02",9},
  611.     {"TO_Cop4",7},
  612.     {"PRH2_Bryce_OBOX_D1",5},
  613.     {"PRH2_Bryce_OBOX_D2",5},
  614.     {"PRH2A_Chad_OBOX_D1",5},
  615.     {"PRH2A_Chad_OBOX_D2",5},
  616.     {"PR2nd_Bif_OBOX_D2",5},
  617.     {"PRH3_Justin_OBOX_D1",5},
  618.     {"PRH3_Justin_OBOX_D2",5},
  619.     {"PRH3a_Prkr_OBOX_D1",5},
  620.     {"PRH3a_Prkr_OBOX_D2",5},
  621.     {"TE_Geography",8},
  622.     {"TE_Music",8},
  623.     {"TO_ElfF",6},
  624.     {"TO_ElfM",6},
  625.     {"TO_HoboSanta",9},
  626.     {"TO_Santa",9},
  627.     {"TO_Santa_NB",9},
  628.     {"Peter_Nutcrack",6},
  629.     {"GN_Fatgirl_Fairy",6},
  630.     {"GN_Lgirl_2_Flower",6},
  631.     {"GN_Hboy_Flower",6}
  632.   }
  633. end
  634.  
  635. function LoadAnimations()
  636.   if groups == nil then
  637.     groups = {
  638.       "Authority",
  639.       "Boxing",
  640.       "B_Striker",
  641.       "CV_Female",
  642.       "CV_Male",
  643.       "DO_Edgar",
  644.       "DO_Grap",
  645.       "DO_StrikeCombo",
  646.       "DO_Striker",
  647.       "F_Adult",
  648.       "F_BULLY",
  649.       "F_Crazy",
  650.       "F_Douts",
  651.       "F_Girls",
  652.       "F_Greas",
  653.       "F_Jocks",
  654.       "F_Nerds",
  655.       "F_OldPeds",
  656.       "F_Pref",
  657.       "F_Preps",
  658.       "G_Grappler",
  659.       "G_Johnny",
  660.       "G_Striker",
  661.       "Grap",
  662.       "J_Damon",
  663.       "J_Grappler",
  664.       "J_Melee",
  665.       "J_Ranged",
  666.       "J_Striker",
  667.       "LE_Orderly",
  668.       "Nemesis",
  669.       "N_Ranged",
  670.       "N_Striker",
  671.       "N_Striker_A",
  672.       "N_Striker_B",
  673.       "P_Grappler",
  674.       "P_Striker",
  675.       "PunchBag",
  676.       "Qped",
  677.       "Rat_Ped",
  678.       "Russell",
  679.       "Russell_Pbomb",
  680.       "Straf_Dout",
  681.       "Straf_Fat",
  682.       "Straf_Female",
  683.       "Straf_Male",
  684.       "Straf_Nerd",
  685.       "Straf_Prep",
  686.       "Straf_Savage",
  687.       "Straf_Wrest",
  688.       "TE_Female"
  689.     }
  690.   end
  691.   for key,group in ipairs(groups) do
  692.     if not HasAnimGroupLoaded(group) then
  693.       LoadAnimationGroup(group)
  694.     end
  695.   end
  696. end
  697.  
  698. F_AttendedClass = function()
  699.   if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
  700.     return
  701.   end
  702.   SetSkippedClass(false)
  703.   PlayerSetPunishmentPoints(0)
  704. end
  705.  
  706. F_MissedClass = function()
  707.   if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
  708.     return
  709.   end
  710.   SetSkippedClass(true)
  711.   StatAddToInt(166)
  712. end
  713.  
  714. F_AttendedCurfew = function()
  715.   if not PedInConversation(gPlayer) and not MissionActive() then
  716.     --TextPrintString("You got home in time for curfew",4)
  717.   end
  718. end
  719.  
  720. F_MissedCurfew = function()
  721.   if not PedInConversation(gPlayer) and not MissionActive() then
  722.     TextPrint("TM_TIRED5",4,2)
  723.   end
  724. end
  725.  
  726. F_StartClass = function()
  727.   if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
  728.     return
  729.   end
  730.   F_RingSchoolBell()
  731.   local l_6_0 = PlayerGetPunishmentPoints() + GetSkippingPunishment()
  732. end
  733.  
  734. F_EndClass = function()
  735.   if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
  736.     return
  737.   end
  738.   F_RingSchoolBell()
  739. end
  740.  
  741. F_StartMorning = function()
  742.   F_UpdateTimeCycle()
  743. end
  744.  
  745. F_EndMorning = function()
  746.   F_UpdateTimeCycle()
  747. end
  748.  
  749. F_StartLunch = function()
  750.   if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
  751.     F_UpdateTimeCycle()
  752.     return
  753.   end
  754.   F_UpdateTimeCycle()
  755. end
  756.  
  757. F_EndLunch = function()
  758.   F_UpdateTimeCycle()
  759. end
  760.  
  761. F_StartAfternoon = function()
  762.   F_UpdateTimeCycle()
  763. end
  764.  
  765. F_EndAfternoon = function()
  766.   F_UpdateTimeCycle()
  767. end
  768.  
  769. F_StartEvening = function()
  770.   F_UpdateTimeCycle()
  771. end
  772.  
  773. F_EndEvening = function()
  774.   F_UpdateTimeCycle()
  775. end
  776.  
  777. F_StartCurfew_SlightlyTired = function()
  778.   F_UpdateTimeCycle()
  779. end
  780.  
  781. F_StartCurfew_Tired = function()
  782.   F_UpdateTimeCycle()
  783. end
  784.  
  785. F_StartCurfew_MoreTired = function()
  786.   F_UpdateTimeCycle()
  787. end
  788.  
  789. F_StartCurfew_TooTired = function()
  790.   F_UpdateTimeCycle()
  791. end
  792.  
  793. F_EndCurfew_TooTired = function()
  794.   F_UpdateTimeCycle()
  795. end
  796.  
  797. F_EndTired = function()
  798.   F_UpdateTimeCycle()
  799. end
  800.  
  801. F_Nothing = function()
  802. end
  803.  
  804. F_ClassWarning = function()
  805.   if IsMissionCompleated("3_08") and not IsMissionCompleated("3_08_PostDummy") then
  806.     return
  807.   end
  808.   local l_23_0 = math.random(1,2)
  809. end
  810.  
  811. F_UpdateTimeCycle = function()
  812.   if not IsMissionCompleated("1_B") then
  813.     local l_24_0 = GetCurrentDay(false)
  814.     if l_24_0 < 0 or l_24_0 > 2 then
  815.       SetCurrentDay(0)
  816.     end
  817.   end
  818.   F_UpdateCurfew()
  819. end
  820.  
  821. F_UpdateCurfew = function()
  822.   local l_25_0 = shared.gCurfewRules
  823.   if not l_25_0 then
  824.     l_25_0 = F_CurfewDefaultRules
  825.   end
  826.   l_25_0()
  827. end
  828.  
  829. F_CurfewDefaultRules = function()
  830.   local l_26_0 = ClockGet()
  831.   if l_26_0 >= 23 or l_26_0 < 7 then
  832.     shared.gCurfew = true
  833.   else
  834.     shared.gCurfew = false
  835.   end
  836. end
Advertisement
Add Comment
Please, Sign In to add comment