News: Welcome back to Bullworth! If you haven't already, you will need to reset your password..


Show Posts

Messages | * Topics | Attachments

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - DaBOSS54320

Pages: [1] 2 3 ... 6
1
Suggestions & Feedback / This IS a problem
« on: December 20, 2016, 03:09:24 PM »
I love Bully-Board, I always have, a few bad experiences aside, it's like my home, this however is honestly unacceptable. I hate to make a topic about it, but it really needs to be publicized and something needs to happen to keep this board alive. I've had multiple friends try to sign up for this site and not even get approved. The point... the admins here are VERY inactive. Here, check this out, these are the times the admins were last active as of 12/20/2016:
  King Cobra      - 12/06/2016 - 14 days
  Jared           - 11/22/2014 - 2 years
  Chrissy         - 12/09/2016 - 11 days
  AJ Collins      - 12/08/2016 - 12 days
  DGAF555         - 10/10/2006 - 10 years
  |XF|-MadmaN[AR] - 12/05/2016 - 15 days
  DGAF            - 08/11/2014 - 2 years

The MOST recent admin login was 11 days ago, nearly two full weeks. I hate to say it but well, nothing is being done, and I'm scared the forum is dying. It really doesn't help when nobody can even sign up anymore because by the time they get accepted they've given up hope.

2
Download it here!

A mod for exploration, scripting, or simply just some fun.
  - Flying, the original purpose of the mod, you can fly anywhere you want and through walls.
  - Free camera, could be used for simple videos or just to look around places.
  - Coordinate display, for scripters, get both player and camera coordinates.
  - Rubber band balls, trust me they're fun.

Oh, and the mod has a readme.txt, I suggest reading it.

3
Mod Releases / Bully: Insanity Edition!
« on: August 11, 2016, 12:33:53 AM »
Bully: Insanity Edition

Bully: Insanity Edition is quite simply a mod that tries to make the game as insane as possible. Feel like Bullworth is getting a bit dull? Spice it up with this mod!

Download the mod here.
Watch SWEGTA's insanity Edition video series here.

4
Bully Modding Archives / So uh... who's still active?
« on: January 11, 2016, 09:14:18 PM »
As it's been said a thousand times bully modding is sadly starting to die down... so I'm wondering, who's still out there? If you still mod, leave a reply and tell us what's up, or if you quit tell us why the fuck you abandoned us and acted like a c00ld0c26.

I'm currently working on a few projects, mainly Bullshit. Development on that is slow since I'm currently working on rewriting the script and I want to make sure I design it well as the script simply needs to be perfect... and there are also some other technical hurdles we need to overcome.

I want to make some new missions and maybe a new fight club, but I dunno, we'll see what happens.

5
Mod Releases / NPC MOD 0.1!!!
« on: September 23, 2015, 08:44:10 PM »
Well I haven't released anything in a while... so I thought I'd release this, I call it NPC Mod. Not a very creative name but... well it lets you be an NPC. I made it a little while ago however I never released it. Basically the idea started as me wanting to make it so you could move like you do in GTA IV/GTA V: normally you walk, hold sprint to jog, and tap sprint to sprint. Then I also added a little more to it... here's a list of features:

- Be any model you want
- Control movement speed in a way similar to GTA IV/GTA V (read above)
- Select strafe/walking style
- Set max trouble points
- Set the respect of each faction towards you (and sync it with the current model if you choose)

Download: Mediafire

Source (intended to be a replacement of STimeCycle.lur):
Code: [Select]
function main()
  Wait(500)
  sensitivity = 0.1
  SetupModelsTable()
  styles = {
    -- NAME     STYLE     STAT
    {"Player","Player","STAT_PLAYER"},
    {"B_Striker_A","B_Striker_A","STAT_B_STRIKER_A"},
    {"CV_Male_A","CV_Male_A","STAT_CV_MALE_A"},
    {"CV_Old","CV_OLD","STAT_CV_MALE_OLD"},
    {"DO_Striker_A","DO_Striker_A","STAT_DO_STRIKER_A"},
    {"DO_Grappler_A","DO_Grappler_A","STAT_DO_GRAPPLER_A"},
    {"GS_Male_A","GS_Male_A","STAT_GS_MALE_A"},
    {"GS_Fat_A","GS_Fat_A","STAT_GS_MALE_A"},
    {"G_Striker_A","G_Striker_A","STAT_G_STRIKER_A"},
    {"G_Grappler_A","G_Grappler_A","STAT_G_GRAPPLER_A"},
    {"G_Melee_A","G_Melee_A","STAT_G_MELEE_A"},
    {"J_Striker_A","J_Striker_A","STAT_J_STRIKER_A"},
    {"J_Grappler_A","J_Grappler_A","STAT_J_GRAPPLER_A"},
    {"J_Melee_A","J_Melee_A","STAT_J_MELEE_A"},
    {"P_Striker_A","P_Striker_A","STAT_P_STRIKER_A"},
    {"P_Striker_B","P_Striker_B","STAT_P_STRIKER_B"},
    {"P_Grappler_A","P_Grappler_A","STAT_P_GRAPPLER_A"},
    {"N_Striker_A","N_Striker_A","STAT_N_STRIKER_A"},
    {"N_Striker_B","N_Striker_B","STAT_N_STRIKER_B"},
    {"N_Ranged_A","N_Ranged_A","STAT_N_RANGED_A"},
    {"Authority","Authority","STAT_PF_BASIC_S"},
    {"LE_Orderly_A","LE_Orderly_A","STAT_LE_ORDERLY_A"},
    {"G_Johnny","G_Johnny","STAT_G_JOHNNY"},
    {"BOSS_Darby","BOSS_Darby","STAT_P_BOXING"},
    {"BOSS_Russell","BOSS_Russell","STAT_B_RUSSELL_A"},
    {"CV_Female_A","CV_Female_A","STAT_CV_FEMALE_A"},
    {"GS_Female_A","GS_Female_A","STAT_GS_FEMALE_A"},
    {"TE_Female_A","TE_Female_A","STAT_TE_FEMALE_A"}
  }
  style = math.random(2,24)
  blip = BlipAddXYZ(-490.6,313.8,31.4,0,0,8)
  moving = false
  strafing = false
  timesSprintPressed = 0
  lastTimeSprintPressed = GetTimer()
  lastTimeRunning = GetTimer()
  lastTimeDoneShit = GetTimer()
  usingStats = false
  maxTrouble = 300
  playerStats = {}
  for i = 0,63 do
    playerStats[i+1] = GameGetPedStat(gPlayer,i)
  end
  -- Start as random ped with random movement
  local health = PlayerGetHealth()
  local weapon = PedGetWeapon(gPlayer)
  PedSetStatsType(gPlayer,styles[style][3])
  if styles[style][3] ~= nil and styles[style][3] ~= "STAT_PLAYER" then
    for i,v in ipairs(playerStats) do
      GameSetPedStat(gPlayer,i-1,v)
    end
    PedSetWeapon(gPlayer,weapon)
    PlayerSetHealth(health)
  end
  PlayerSwapModel(models[math.random(2,47)][1])
  PedSetActionTree(gPlayer,"/Global/Player","Act/Player.act")
  PedSetAITree(gPlayer,"/Global/PlayerAI","Act/PlayerAI.act")
  local model = PedGetModel(gPlayer)
  if model == 0 then model = 1 end
  for f = 0,11 do
    local attitude = PedGetTypeToTypeAttitude(f,models[model][2])
    PedSetTypeToTypeAttitude(f,13,attitude)
    SetFactionRespect(f,attitude*25)
  end
  if models[model][2] == 0 or models[model][2] == 7 or models[model][2] == 8 then
    maxTrouble = 0
  end
  if PedIsFemale(gPlayer) then
    style = math.random(26,28)
  end
  while true do
    -- Load animations
    LoadAnimations()
    -- Menu blip
    if AreaGetVisible() == 14 and PedIsInAreaXYZ(gPlayer,-490.6,313.8,31.4,0.7) then
      TextPrintString("Press \b",0,2)
      if IsButtonBeingPressed(9,0) then
        PlayerSetControl(0)
        PlayerSetPosXYZ(-490.6,313.8,31.4)
        PedFaceXYZ(gPlayer,-492.8,311.6,32)
        local options = {
          {"Model",models[PedGetModel(gPlayer)][1],PedGetModel(gPlayer)},
          {"Movement",styles[style][1],style},
          {"Max Trouble",maxTrouble},
          {"Set Respect"}
        }
        local s = 1
        local model = PedGetModel(gPlayer)
        local h,x,y,z = PedGetHeading(gPlayer),PlayerGetPosXYZ()
        local hx,hy,hz = PedGetHeadPos(gPlayer)
        CameraSetXYZ(-492.8,311.6,32.8,hx,hy,hz)
        repeat
          if IsButtonBeingPressed(2,0) then
            s = s - 1
            if s < 1 then s = 4 end
          elseif IsButtonBeingPressed(3,0) then
            s = s + 1
            if s > 4 then s = 1 end
          end
          if s == 2 then
            if IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0)) then
              style = style - 1
              if style < 1 then style = table.getn(styles) end
            elseif IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0)) then
              style = style + 1
              if style > table.getn(styles) then style = 1 end
            end
            options[2][2] = styles[style][1]
            options[2][3] = style
          elseif s == 1 then
            if IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0)) then
              model = model - 1
              if model < 1 then model = table.getn(models) end
            elseif IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0)) then
              model = model + 1
              if model > table.getn(models) then model = 1 end
            end
            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
              PlayerSwapModel(models[model][1])
              PedSetActionTree(gPlayer,"/Global/Player","Act/Player.act")
              PedSetAITree(gPlayer,"/Global/PlayerAI","Act/PlayerAI.act")
            end
            options[1][2] = models[model][1]
            options[1][3] = model
          elseif s == 3 then
            if (IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0))) and maxTrouble > 0 then
              maxTrouble = maxTrouble - 10
            elseif (IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0))) and maxTrouble < 300 then
              maxTrouble = maxTrouble + 10
            end
            options[3][2] = maxTrouble
          elseif s == 4 then
            if IsButtonBeingPressed(7,0) then
              local s = 1
              local factions = {
                "Prefect","Nerd","Jock","Dropout","Greaser","Prep","Student","Cop","Teacher","Adult","Shop","Bully"}
              repeat
                if IsButtonBeingPressed(2,0) or (IsButtonPressed(12,0) and IsButtonPressed(2,0)) then
                  s = s - 1
                  if s < 1 then s = table.getn(factions) end
                elseif IsButtonBeingPressed(3,0) or (IsButtonPressed(12,0) and IsButtonPressed(3,0)) then
                  s = s + 1
                  if s > table.getn(factions) then s = 1 end
                elseif (IsButtonBeingPressed(0,0) or (IsButtonPressed(12,0) and IsButtonPressed(0,0))) and GetFactionRespect(s-1) > 0 then
                  SetFactionRespect(s-1,GetFactionRespect(s-1)-10)
                  if GetFactionRespect(s-1) < 0 then
                    SetFactionRespect(s-1,0)
                  end
                  PedSetTypeToTypeAttitude(s-1,13,tonumber(string.format("%.0f",GetFactionRespect(s-1)/25)))
                elseif (IsButtonBeingPressed(1,0) or (IsButtonPressed(12,0) and IsButtonPressed(1,0))) and GetFactionRespect(s-1) < 100 then
                  SetFactionRespect(s-1,GetFactionRespect(s-1)+10)
                  if GetFactionRespect(s-1) > 100 then
                    SetFactionRespect(s-1,100)
                  end
                  PedSetTypeToTypeAttitude(s-1,13,tonumber(string.format("%.0f",GetFactionRespect(s-1)/25)))
                elseif IsButtonBeingPressed(9,0) then
                  local model = PedGetModel(gPlayer)
                  if model == 0 then model = 1 end
                  for f = 0,11 do
                    local attitude = PedGetTypeToTypeAttitude(f,models[model][2])
                    PedSetTypeToTypeAttitude(f,13,attitude)
                    SetFactionRespect(f,attitude*25)
                  end
                end
                local text = ""
                for i,v in ipairs(factions) do
                  if i == s then
                    text = text..">"..v..":"..GetFactionRespect(i-1).."\n"
                  else
                    text = text..v..":"..GetFactionRespect(i-1).."\n"
                  end
                end
                TextPrintString(text,0,1)
                TextPrintString("Press \b to sync with model\nPress \t to exit",0,2)
                Wait(0)
              until IsButtonBeingPressed(8,0) or PedIsDead(gPlayer)
            end
          end
          if styles[style][2] ~= "Player" then
            if not PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic",true) then
              PedSetActionNode(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic","Act/Anim/"..styles[style][2]..".act")
            end
          else
            PlayerSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
          end
          h = h + GetStickValue(18,0)*0.1
          PlayerFaceHeading(h)
          PlayerSetPosXYZ(x,y,z)
          local text = ""
          for i,v in ipairs(options) do
            if i == s then
              text = text..">"
            end
            if v[2] ~= nil then
              text = text..v[1]..": "..v[2].."\n"
            else
              text = text..v[1].."\n"
            end
          end
          if options[s][3] ~= nil then
            text = text.."("..options[s][3]..")"
          end
          TextPrintString(text,0,1)
          TextPrintString("Press \t to exit",0,2)
          Wait(0)
        until IsButtonBeingPressed(8,0) or PedIsDead(gPlayer)
        CameraReturnToPlayer()
        if styles[style][2] ~= "Player" then
          PedSetActionNode(gPlayer,"/Global/"..styles[style][2].."/Default_KEY","Act/Anim/"..styles[style][2]..".act")
        else
          PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
        end
        PedFaceXYZ(gPlayer,-492.8,311.6,32)
        PlayerSetControl(1)
        -- Set stats type for strafe
        local health = PlayerGetHealth()
        local weapon = PedGetWeapon(gPlayer)
        PedSetStatsType(gPlayer,styles[style][3])
        if styles[style][3] ~= nil and styles[style][3] ~= "STAT_PLAYER" then
          for i,v in ipairs(playerStats) do
            GameSetPedStat(gPlayer,i-1,v)
          end
          PedSetWeapon(gPlayer,weapon)
          PlayerSetHealth(health)
        end
        -- Punishment system
        DisablePunishmentSystem(maxTrouble <= 0)
      end
    end
    -- NPC Movement
    if styles[style][2] ~= "Player" then
      -- Sprint detection
      if IsButtonBeingPressed(7,0) then
        timesSprintPressed = timesSprintPressed + 1
        lastTimeSprintPressed = GetTimer()
      elseif GetTimer() >= lastTimeSprintPressed + 400 then
        timesSprintPressed = 0
      end
      if IsButtonBeingReleased(7,0) then
        lastTimeRunning = GetTimer()
      end
      -- Strafe
      local target = PedGetTargetPed(gPlayer)
      if PedIsValid(target) and (PlayerIsFree() or PlayerIsStrafing()) then
        strafing = true
        if sensitivity <= math.abs(GetStickValue(16,0)) + math.abs(GetStickValue(17,0)) then
          PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/CombatBasic","Act/Anim/"..styles[style][2]..".act")
        else
          PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/StrafeIdle","Act/Anim/"..styles[style][2]..".act")
        end
        local x,y,z = PedGetPosXYZ(target)
        PedFaceXYZ(gPlayer,x,y,z)
      elseif strafing and PlayerIsStrafing() then
        strafing = false
        PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
      end
      -- Set action node
      if PlayerIsFree() then
        if sensitivity <= math.abs(GetStickValue(16,0)) + math.abs(GetStickValue(17,0)) then
          moving = true
          if timesSprintPressed > 1 then
            PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/SprintBasic","Act/Anim/"..styles[style][2]..".act")
          elseif IsButtonPressed(7,0) or GetTimer() < lastTimeRunning + 200 then
            PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/RunBasic","Act/Anim/"..styles[style][2]..".act")
          else
            PlayerSetActionNode("/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic","Act/Anim/"..styles[style][2]..".act")
          end
        elseif moving then
          moving = false
          PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
        end
      end
      -- Do player stuff
      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
        if IsButtonBeingPressed(6,0) and (IsButtonPressed(7,0) or timesSprintPressed > 1) then
          PedSetActionNode(gPlayer,"/Global/Player/Attacks/Strikes/RunningAttacks/HeavyAttacks/RunShoulder","Act/Player.act")
        else
          PedSetActionNode(gPlayer,"/Global/Player","Act/Player.act")
        end
      end
    end
    -- Max trouble
    if PlayerGetPunishmentPoints() > maxTrouble then
      PlayerSetPunishmentPoints(maxTrouble)
    end
    if maxTrouble <= 0 then
      DisablePunishmentSystem(true)
    end
    -- Switch to Jimmy for cutscenes
    if not PedIsModel(gPlayer,0) and GetCutsceneRunning() ~= 0 then
      local model = PedGetModel(gPlayer)
      PlayerSwapModel("player")
      repeat
        Wait(0)
      until GetCutsceneRunning() == 0
      repeat
        while SoundSpeechPlaying(gPlayer,"NARRATION") do
          Wait(0)
        end
        TextPrintString("Press \14 to restore model\nPress \15 to remain player",0,2)
        Wait(0)
      until IsButtonBeingPressed(3,0) or IsButtonBeingPressed(2,0)
      if IsButtonBeingPressed(2,0) then
        PlayerSwapModel(models[model][1])
        PedSetActionTree(gPlayer,"/Global/Player","Act/Player.act")
        PedSetAITree(gPlayer,"/Global/PlayerAI","Act/PlayerAI.act")
      end
    end
    -- Clothing manager
    if not PedIsModel(gPlayer,0) and shared.PlayerInClothingManager then
      PlayerSwapModel("player")
    end
    Wait(0)
  end
end

function PedGetModel(ped)
  if PedIsValid(ped) then
    for i = 0,258 do
      if PedIsModel(ped,i) then
        if i ~= 0 then
          return i
        else
          return 1
        end
      end
    end
  end
  return -1
end

function PlayerSetActionNode(node,file)
  if PedIsPlaying(gPlayer,node,true) then
    return false
  else
    PedSetActionNode(gPlayer,node,file)
    return true
  end
end

function PlayerIsFree()
  return PedIsPlaying(gPlayer,"/Global/Player/Default_KEY",true) or PlayerIsFreeStyle()
end

function PlayerIsFreeStyle()
  return PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY",true) or
    PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/WalkBasic",true) or
    PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/RunBasic",true) or
    PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/Free/SprintBasic",true)
end

function PlayerIsStrafing()
  return PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/StrafeIdle",true) or
    PedIsPlaying(gPlayer,"/Global/"..styles[style][2].."/Default_KEY/ExecuteNodes/LocomotionOverride/Combat/CombatBasic",true)
end

function IsAnyButtonPressed(c)
  for b = 0,15 do
    if IsButtonPressed(b,0) then
      return true
    end
  end
  return false
end

function SetupModelsTable()
  models = {
    {"player",13},
    {"DOgirl_Zoe_EG",6},
    {"NDGirl_Beatrice",1},
    {"NDH1a_Algernon",1},
    {"NDH1_Fatty",1},
    {"ND2nd_Melvin",1},
    {"NDH2_Thad",1},
    {"NDH3_Bucky",1},
    {"NDH2a_Cornelius",1},
    {"NDLead_Earnest",1},
    {"NDH3a_Donald",1},
    {"JKH1_Damon",2},
    {"JKH1a_Kirby",2},
    {"JKGirl_Mandy",2},
    {"JKH2_Dan",2},
    {"JKH2a_Luis",2},
    {"JKH3_Casey",2},
    {"JKH3a_Bo",2},
    {"JKlead_Ted",2},
    {"JK2nd_Juri",2},
    {"GR2nd_Peanut",4},
    {"GRH2A_Hal",4},
    {"GRlead_Johnny",4},
    {"GRH1_Lefty",4},
    {"GRGirl_Lola",4},
    {"GRH3_Lucky",4},
    {"GRH1a_Vance",4},
    {"GRH3a_Ricky",4},
    {"GRH2_Norton",4},
    {"PRH1_Gord",5},
    {"PRH1a_Tad",5},
    {"PRH2a_Chad",5},
    {"PR2nd_Bif",5},
    {"PRH3_Justin",5},
    {"PRH2_Bryce",5},
    {"PRH2_Bryce_OBOX",5},
    {"PRlead_Darby",5},
    {"PRGirl_Pinky",5},
    {"GN_Asiangirl",6},
    {"PRH3a_Parker",5},
    {"DOH2_Jerry",3},
    {"DOH1a_Otto",3},
    {"DOH2a_Leon",3},
    {"DOH1_Duncan",3},
    {"DOH3_Henry",3},
    {"DOH3a_Gurney",3},
    {"DO2nd_Omar",3},
    {"DOGirl_Zoe",3},
    {"PF2nd_Max",0},
    {"PFH1_Seth",0},
    {"PFH2_Edward",0},
    {"PFlead_Karl",0},
    {"TO_Orderly",0},
    {"TE_HallMonitor",8},
    {"TE_GymTeacher",8},
    {"TE_Janitor",9},
    {"TE_English",8},
    {"TE_Cafeteria",8},
    {"TE_Secretary",8},
    {"TE_Nurse",8},
    {"TE_MathTeacher",8},
    {"TE_Librarian",8},
    {"TE_Art",8},
    {"TE_Biology",8},
    {"TE_Principal",8},
    {"GN_Littleblkboy",6},
    {"GN_SexyGirl",6},
    {"GN_Littleblkgirl",6},
    {"GN_Hispanicboy",6},
    {"GN_Greekboy",6},
    {"GN_Fatboy",6},
    {"GN_Boy01",6},
    {"GN_Boy02",6},
    {"GN_Fatgirl",6},
    {"DOlead_Russell",11},
    {"TO_Business1",9},
    {"TO_Business2",9},
    {"TO_BusinessW1",9},
    {"TO_BusinessW2",9},
    {"TO_RichW1",9},
    {"TO_RichW2",9},
    {"TO_Fireman",9},
    {"TO_Cop",7},
    {"TO_Comic",9},
    {"GN_Bully03",11},
    {"TO_Bikeowner",9},
    {"TO_Hobo",10},
    {"Player_Mascot",2},
    {"TO_GroceryOwner",9},
    {"GN_Sexygirl_UW",6},
    {"DOLead_Edgar",3},
    {"JK_LuisWrestle",2},
    {"JKGirl_MandyUW",2},
    {"PRGirl_PinkyUW",5},
    {"NDGirl_BeatriceUW",1},
    {"GRGirl_LolaUW",4},
    {"TO_Cop2",7},
    {"Player_OWres",6},
    {"GN_Bully02",11},
    {"TO_RichM1",9},
    {"TO_RichM2",9},
    {"GN_Bully01",11},
    {"TO_FireOwner",9},
    {"TO_CSOwner_2",9},
    {"TO_CSOwner_3",9},
    {"TE_Chemistry",8},
    {"TO_Poorwoman",10},
    {"TO_MotelOwner",10},
    {"JKKirby_FB",2},
    {"JKTed_FB",2},
    {"JKDan_FB",2},
    {"JKDamon_FB",2},
    {"TO_Carny02",9},
    {"TO_Carny01",9},
    {"TO_CarnyMidget",9},
    {"TO_Poorman2",10},
    {"PRH2A_Chad_OBOX",5},
    {"PRH3_Justin_OBOX",5},
    {"PRH3a_Parker_OBOX",5},
    {"TO_BarberRich",9},
    {"GenericWrestler",11},
    {"ND_FattyWrestle",1},
    {"TO_Industrial",10},
    {"TO_Associate",10},
    {"TO_Asylumpatient",9},
    {"TE_Autoshop",8},
    {"TO_Mailman",9},
    {"TO_Tattooist",10},
    {"TE_Assylum",8},
    {"Nemesis_Gary",6},
    {"TO_Oldman2",10},
    {"TO_BarberPoor",10},
    {"PR2nd_Bif_OBOX",5},
    {"Peter",6},
    {"TO_RichM3",9},
    {"Rat_Ped",6},
    {"GN_LittleGirl_2",6},
    {"GN_LittleGirl_3",6},
    {"GN_WhiteBoy",6},
    {"TO_FMidget",9},
    {"Dog_Pitbull",9},
    {"GN_SkinnyBboy",6},
    {"TO_Carnie_female",9},
    {"TO_Business3",9},
    {"GN_Bully04",11},
    {"GN_Bully05",11},
    {"GN_Bully06",11},
    {"TO_Business4",9},
    {"TO_Business5",9},
    {"DO_Otto_asylum",3},
    {"TE_History",8},
    {"TO_Record",9},
    {"DO_Leon_Assylum",3},
    {"DO_Henry_Assylum",3},
    {"NDH1_FattyChocolate",1},
    {"TO_GroceryClerk",9},
    {"TO_Handy",10},
    {"TO_Orderly2",0},
    {"GN_Hboy_Ween",6},
    {"Nemesis_Ween",6},
    {"GRH3_Lucky_Ween",4},
    {"NDH3a_Donald_ween",1},
    {"PRH3a_Parker_Ween",5},
    {"JKH3_Casey_Ween",2},
    {"Peter_Ween",6},
    {"GN_AsianGirl_Ween",6},
    {"PRGirl_Pinky_Ween",5},
    {"JKH1_Damon_ween",2},
    {"GN_WhiteBoy_Ween",6},
    {"GN_Bully01_Ween",11},
    {"GN_Boy02_Ween",6},
    {"PR2nd_Bif_OBOX_D1",5},
    {"GRH1a_Vance_Ween",6},
    {"NDH2_Thad_Ween",1},
    {"PRGirl_Pinky_BW",5},
    {"DOlead_Russell_BU",11},
    {"PRH1a_Tad_BW",5},
    {"PRH2_Bryce_BW",5},
    {"PRH3_Justin_BW",5},
    {"GN_Asiangirl_CH",6},
    {"GN_Sexygirl_CH",6},
    {"PRGirl_Pinky_CH",5},
    {"TO_NH_Res_01",9},
    {"TO_NH_Res_02",9},
    {"TO_NH_Res_03",9},
    {"NDH1_Fatty_DM",1},
    {"TO_PunkBarber",10},
    {"FightingMidget_01",6},
    {"FightingMidget_02",6},
    {"TO_Skeletonman",9},
    {"TO_Beardedwoman",9},
    {"TO_CarnieMermaid",9},
    {"TO_Siamesetwin2",9},
    {"TO_Paintedman",9},
    {"TO_GN_Workman",9},
    {"DOLead_Edgar_GS",3},
    {"DOH3a_Gurney_GS",3},
    {"DOH2_Jerry_GS",3},
    {"DOH2a_Leon_GS",3},
    {"GRH2a_Hal_GS",4},
    {"GRH2_Norton_GS",4},
    {"GR2nd_Peanut_GS",4},
    {"GRH1a_Vance_GS",4},
    {"JKH3a_Bo_GS",2},
    {"JKH1_Damon_GS",2},
    {"JK2nd_Juri_GS",2},
    {"JKH1a_Kirby_GS",2},
    {"NDH1a_Algernon_GS",1},
    {"NDH3_Bucky_GS",1},
    {"NDH2_Thad_GS",1},
    {"PRH3a_Parker_GS",5},
    {"PRH3_Justin_GS",5},
    {"PRH1a_Tad_GS",5},
    {"PRH1_Gord_GS",5},
    {"NDLead_Earnest_EG",1},
    {"JKlead_Ted_EG",2},
    {"GRlead_Johnny_EG",4},
    {"PRlead_Darby_EG",5},
    {"Dog_Pitbull2",9},
    {"Dog_Pitbull3",9},
    {"TE_CafeMU_W",8},
    {"TO_Millworker",9},
    {"TO_Dockworker",9},
    {"NDH2_Thad_PJ",1},
    {"GN_Lblkboy_PJ",6},
    {"GN_Hboy_PJ",6},
    {"GN_Boy01_PJ",6},
    {"GN_Boy02_PJ",6},
    {"TE_Gym_Incog",8},
    {"JK_Mandy_Towel",2},
    {"JK_Bo_FB",2},
    {"JK_Casey_FB",2},
    {"PunchBag",11},
    {"TO_Cop3",7},
    {"GN_GreekboyUW",6},
    {"TO_Construct01",9},
    {"TO_Construct02",9},
    {"TO_Cop4",7},
    {"PRH2_Bryce_OBOX_D1",5},
    {"PRH2_Bryce_OBOX_D2",5},
    {"PRH2A_Chad_OBOX_D1",5},
    {"PRH2A_Chad_OBOX_D2",5},
    {"PR2nd_Bif_OBOX_D2",5},
    {"PRH3_Justin_OBOX_D1",5},
    {"PRH3_Justin_OBOX_D2",5},
    {"PRH3a_Prkr_OBOX_D1",5},
    {"PRH3a_Prkr_OBOX_D2",5},
    {"TE_Geography",8},
    {"TE_Music",8},
    {"TO_ElfF",6},
    {"TO_ElfM",6},
    {"TO_HoboSanta",9},
    {"TO_Santa",9},
    {"TO_Santa_NB",9},
    {"Peter_Nutcrack",6},
    {"GN_Fatgirl_Fairy",6},
    {"GN_Lgirl_2_Flower",6},
    {"GN_Hboy_Flower",6}
  }
end

function LoadAnimations()
  if groups == nil then
    groups = {
      "Authority",
      "Boxing",
      "B_Striker",
      "CV_Female",
      "CV_Male",
      "DO_Edgar",
      "DO_Grap",
      "DO_StrikeCombo",
      "DO_Striker",
      "F_Adult",
      "F_BULLY",
      "F_Crazy",
      "F_Douts",
      "F_Girls",
      "F_Greas",
      "F_Jocks",
      "F_Nerds",
      "F_OldPeds",
      "F_Pref",
      "F_Preps",
      "G_Grappler",
      "G_Johnny",
      "G_Striker",
      "Grap",
      "J_Damon",
      "J_Grappler",
      "J_Melee",
      "J_Ranged",
      "J_Striker",
      "LE_Orderly",
      "Nemesis",
      "N_Ranged",
      "N_Striker",
      "N_Striker_A",
      "N_Striker_B",
      "P_Grappler",
      "P_Striker",
      "PunchBag",
      "Qped",
      "Rat_Ped",
      "Russell",
      "Russell_Pbomb",
      "Straf_Dout",
      "Straf_Fat",
      "Straf_Female",
      "Straf_Male",
      "Straf_Nerd",
      "Straf_Prep",
      "Straf_Savage",
      "Straf_Wrest",
      "TE_Female"
    }
  end
  for key,group in ipairs(groups) do
    if not HasAnimGroupLoaded(group) then
      LoadAnimationGroup(group)
    end
  end
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



Why is it 0.1?
Because the mod probably has room for improvement... however it is pretty stable and playable, and I haven't released anything in a while, so here ya go!

Can I add stuff to the mod?
Sure, it's open-source and I give anyone who wants to full permission to use the code how they want.

6
Auditory Experiences / Damon stole a paddle!
« on: June 16, 2015, 08:52:03 PM »
So I found some interesting lines... I guess they were unused. These set of lines further confirm that prefects indeed once used paddle in an earlier concept of the game, and also some type of mission or something where damon stole a paddle... I wonder what that's all about.

I attached the audio files to this post (I think you have to be signed in to download it)

Any thoughts?

7
Visual Experiences / PS2 VS PC Graphics
« on: June 13, 2015, 10:17:25 AM »
So, obviously the PC version (or well Scholarship Edition in general) came out after the original PS2 version. There was dramatic graphical changes as it runs on an entirely different engine. In some aspects... the PC does look better, but at the same time I personally still really like the PS2's look. It looks a bit more realistic to me in a way, except for the shitty shadows.
I think the PS2 version really thrives in interiors, but the PC version probably takes the win when outside.

Here's some screenshots I took on both PS2 and PC in similar situations so you can compare. Here's some details about the screenshots:
The PC screenshots I took running max settings of the regular patched version of the game. No graphic mods or world.img mods at all.
The PS2 screenshots I took on PCSX2, I was running in software mode. I had 6x native resolution and some anti aliasing.
If you can't tell which is PC and which is PS2, just look for the clock. When I took the screenshots I didn't unlock the clock yet so the PS2 screenshots lack a clock.




8
TUTORIALS / LUA Timing
« on: June 06, 2015, 09:17:57 PM »
As you probably know... you can use Wait(ms) to make a script wait for a certain amount of time. This works... when you want the script to temporarily stop processing anything. When a script "waits" using the Wait function, it let's the game process everything it needs to process when your script is running (this is the reason that the game will crash if you're in a loop too long without "waiting", and why you need a Wait(0) in most loops). The game won't do anything but process the functions called in your script until "Wait" is called. 0 ms being a single frame. On a similar note, we should look at the button functions (IsButtonBeingPressed, IsButtonPressed, IsButtonBeingReleased). IsButtonPressed returns true (and will thus activate an "if" statement") if the button (or key) is being pressed when the script reaches the IsButtonPressed (because obviously that's when it will be called, so that's when it will be processed). So if you have a Wait(ms) before it, you'll have to still be pressing the button by the time the script gets past the Wait() for it to return true. This is simple enough, but let's look at how IsButtonBeingPressed and IsButtonBeingReleased in a more technical fashion as the Wait function can influence them.
IsButtonBeingPressed, returns true if the button was just pressed. But... let's see how that works exactly. As we know a Wait(0) will let 1 frame pass, then our script will run, and the game will be paused and not process anything but the script until the script "Waits" again. Well IsButtonBeingPressed actually technically means, was the button pressed on this specific frame? Let's look at some ways this could affect your script.
Situation 1: You have a "Wait(2000)" then immediately after, IsButtonBeingPressed(3,0). Well the IsButtonBeingPressed(3,0) will only return true if you press the button 3 (zoom-out) on the single frame after the 2 second wait (which is very difficulty, as there are 30-60 frames every second). So this could badly hurt your script.
Situation 2: You don't "Wait" at all, because you don't want the game to process and you want the game to be frozen until a button is pressed. This is a bad idea and won't work at all. The reason behind it is because button detection takes place while the game processes outside of your script (during a Wait). So it is ideal to always just have a Wait(0) running so that you can always detect button presses and respond to them. Unless you want to temporarily disable button pressing of course...
Situation 3: You have 2 "Wait(0)"s (or Wait(0) is somehow called twice) before an IsButtonBeingPressed. The IsButtonBeingPressed will of course only return true if pressed during the second Wait(0) (the one that happened last before IsButtonBeingPressed).

Alright, so after all that technical crap, we have a new question. We know buttons can't be detected during a long Wait(ms) because more than 1 frame will pass during that time. But... what if we want time to pass while still detecting buttons? Or what if we just want to process other things while waiting? It's quite simple, we can use the "GetTimer" function! GetTimer() returns a time in milliseconds for how long the script has been running. Here's a basic example of it's use.

local t = GetTimer() -- This gets the current time, and stores it in "t" (t is short for time. We can't use "time" because that is a reserved keyword)
repeat -- repeat, you should know this
  -- Process shit
  Wait(0) -- A frame pass
until GetTimer() > t + 3000 -- repeat until the current time goes past what the time was before the repeat loop + 3000

Basically, that code will run a repeat loop for 3 seconds. (3000 ms)
The basic code GetTimer() > t + 3000 works fairly well. GetTimer() gets the current time, and "t" (or whatever you decide to name it) stores the time from an earlier point. Basically the code returns true if it's been the specified amount of milliseconds (replace 3000) since the earlier time.

Here's some possible uses:
Timing a cutscene (like in a custom mission)
Hiding a menu after inactivity ("t" would be changed to the current time whenever the menu is used)
An event in a mission where you have to quickly do something or fail

There is tons of uses too, and I hope you guys find them and find this tutorial helpful!

9
Mod Releases / The Cure 2!
« on: June 06, 2015, 11:16:35 AM »
Download The Cure 2 here! (Version 1.7)

The readme file, since a shocking number of people don't open it:
The Cure 2 - DaBOSS54320

This is a sequel to "The Cure". Play that mission here: http://bit.ly/1QzdwSI
or at least watch a video: https://youtu.be/Qi3UM__cPzI?t=13s

I suggest using a save file with the game completed when playing this mission or you may not be able to enter some interiors.
Use the default pedstats.dat, using a modded one may throw off the difficulty.

To install this mod, copy the "Scripts.img" and "Scripts.dir" to /Bully Root/Scripts and replace.
To play this mod, use the arcade machine in the boy's dorm.

Source included, if you aren't a bully script modder yourself you don't need to worry about it. (The .lua file)

My steam profile: http://bit.ly/1yK593y


VERSION HISTORY
V1: Initial release
V1.1: Patched dialouge, "Default" is now slow, but skippable (so your own pace). "Auto" plays itself. "Off" skips. Patched some minor bugs. Decided it would be a good idea to add "version history" for the future.
V1.2: Small patch, changed names of dialouge options to make more sense. "Off", "Default", "Manual".
V1.3: Minor dialouge patch... again. Now I think it is perfected.
V1.4: Small patch of mispelling "dialogue"... silly me.
V1.5: Ugh... another patch, I suck. Fixed a few bugs.
V1.6: Small bug fixes. Maybe the last one? idk...
V1.7: A bug fix that proves I need to test more before releasing.



Here's some hints/tips that may help...

In the warehouse, enemies will not attack until provoked, this gives you a chance to be strategic how you do your task.
In the warehouse, there is a beam cola machine, it is quite helpful.


Have fun!

10
TUTORIALS / Save Data In LUA Scripts
« on: April 05, 2015, 03:15:11 AM »
Edit: I really suggest you don't use this, because it can mess up some things in your save file. If you do decide to use it be careful, as it replaces other data the game needs.

PlayerSetScriptSavedData(slot,value)
PlayerGetScriptSavedData(slot,value)

These are some interesting functions... they can save data that, if the game file is saved, should be able to be read by the script next time around. But sadly... it isn't for individual scripts, the slots used here are used by all scripts, and there are only about 200ish slots that will work (The first 200). Another problem is some are frequently changed by the game, some are unlockables, and changing the values could maybe have bad effects on the game. However as of now it's the only way that I know to save data in LUA that can be used in between game sessions. This could help people who have mods that need saving. Try the demo below to see it work. If you change a value of one of the slots then save the game and reload, it should stay the same.

Be careful using these though because of all the problems I mentioned above that may affect the player's save in bad ways.

STimeCycle.lur demo
Code: [Select]
function main()
  local s = 1
  local saveSlot = 1
  repeat
    if IsButtonPressed(0,0) then
  s = s - 1
  Wait(10)
elseif IsButtonPressed(1,0) then
  s = s + 1
  Wait(10)
end
if IsButtonPressed(3,0) then
  PlayerSetScriptSavedData(saveSlot,s)
end
    if IsButtonPressed(11,0) then
  saveSlot = saveSlot - 1
  Wait(60)
elseif IsButtonPressed(13,0) then
  saveSlot = saveSlot + 1
  Wait(60)
end
TextPrintString("SELECT: "..s.."\nSAVE SLOT "..saveSlot..": "..PlayerGetScriptSavedData(saveSlot),1,1)
TextPrintString("Press down to save\nWeapon buttons to change slot",1,2)
    Wait(0)
  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

11
Bully 1 Discussion / Fuck Crabblesnitch [VIDEO]
« on: March 04, 2015, 03:34:31 AM »

12
Mod Releases / Insult Factions
« on: February 22, 2015, 05:43:45 PM »
Download!

This mod will allow Jimmy to dish out even nastier insults directed personally at each faction.

Insult Factions

13
Mod Releases / Let's FIGHT!!!
« on: February 20, 2015, 01:53:41 PM »
Challenge anyone to a good ol' fight in this mod. Not just any fight either, hopefully it'll be a nice challenging one.
When you insult someone, they will become aggressive towards you and their fighting skills will also be increased. Adults will fight back as well.
In the start of the mod, you will have an option to disable cops/prefects completely, limit to an orange wanted level, or leave as is.

Mediafire Download

Code: [Select]
function main()
Wait(500)
LoadAllAnim()
local affected = {}
repeat
TextPrintString("AUTHORITY SETTING\n\nLeft: Disable & remove\nRight: Limit trouble\nDown: No effect",0,1)
Wait(0)
until IsButtonBeingPressed(0,0) or IsButtonBeingPressed(1,0) or IsButtonBeingPressed(3,0)
if IsButtonBeingPressed(0,0) then
CreateThread("F_RemoveAuthority")
elseif IsButtonBeingPressed(1,0) then
CreateThread("F_TroubleMeterLimiter")
end
repeat
if IsButtonBeingPressed(8,0) and PedIsValid(PedGetTargetPed()) and not PedIsValid(PedGetGrappleTargetPed()) then
local ped = PedGetTargetPed()
PedSetPedToTypeAttitude(ped,13,1)
PedSetEmotionTowardsPed(ped,gPlayer,1)
if not F_IsPedInTable(affected,ped) then
local percentOfHealth = PedGetHealth(ped)/PedGetMaxHealth(ped)
PedSetHealth(ped,PedGetMaxHealth(ped)*math.random(2,5)) -- A good fight should be a long fight
PedSetHealth(ped,PedGetMaxHealth(ped)*percentOfHealth) -- Return to same % of health
PedSetInfiniteSprint(ped,true) -- No running away Jimmy!
GameSetPedStat(ped,6,0) -- Fearless! We can't have our opponent chickening out now can we?
GameSetPedStat(ped,7,0) -- Snitches need to learn to fight
GameSetPedStat(ped,8,5000000) -- The key to victory: Attack as much as fucking possible!!!
GameSetPedStat(ped,10,95) -- Sharp shooter
GameSetPedStat(ped,11,100) -- Trigger happy
GameSetPedStat(ped,12,math.random(90,100)) -- Blocking attacks is just as important
GameSetPedStat(ped,13,math.random(70,95)) -- Evade frequency (Prep's only)
GameSetPedStat(ped,14,100) -- What is there in fights? ANGER! Set it to 100!
GameSetPedStat(ped,20,GameGetPedStat(ped,20)*math.random(100,150)/100) -- Up to 50% faster! Dayum son!
GameSetPedStat(ped,38,90) -- Reverse dem striking grapples
GameSetPedStat(ped,39,100) -- Unhand me!
GameSetPedStat(ped,63,0) -- Fight to the death!
if PedHasAdultStyle(ped) then
local styles = {"G_Striker_A","J_Striker_A","J_Melee_A","P_Striker_A","Nemesis","G_Johnny","G_Melee_A"}
local style = styles[math.random(1,table.getn(styles))]
PedSetActionTree(ped,"/Global/"..style,"Act/Anim/"..style..".act")
end
table.insert(affected,ped)
end
elseif IsButtonBeingPressed(7,0) and PedIsValid(PedGetTargetPed()) and not PedIsValid(PedGetGrappleTargetPed()) then
if PedGetPedToTypeAttitude(PedGetTargetPed(),13) == 1 then
PedSetPedToTypeAttitude(PedGetTargetPed(),13,2)
end
if PedGetEmotionTowardsPed(PedGetTargetPed(),gPlayer) == 1 then
PedSetEmotionTowardsPed(PedGetTargetPed(),gPlayer,2)
end
end
F_CleanInvalidPeds(affected)
Wait(0)
until not Alive
end

function F_RemoveAuthority()
local authority = {49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,83,97,158,234,238}
while true do
DisablePunishmentSystem(true)
PlayerSetPunishmentPoints(0)
for i = 1,table.getn(authority) do
PedSetUniqueModelStatus(authority[i],-1)
end
Wait(0)
end
end

function F_TroubleMeterLimiter()
while true do
if PlayerGetPunishmentPoints() > 200 then
PlayerSetPunishmentPoints(200)
end
Wait(0)
end
end

function PedHasAdultStyle(ped)
local styles = {"Authority","TE_Female_A","TE_Secretary","CV_Male_A"}
for i = 1,table.getn(styles) do
if PedIsPlaying(ped,"/Global/"..styles[i],"Act/Anim/"..styles[i]..".act") then
return true
end
end
return false
end

function F_CleanInvalidPeds(peds)
local result = peds
for i = 1,table.getn(peds) do
if not PedIsValid(peds[i]) then
table.remove(result,i)
end
end
return result
end

function F_IsPedInTable(peds,ped)
for i = 1,table.getn(peds) do
if peds[i] == ped then
return true
end
end
return false
end

function LoadAllAnim()
LoadAnimationGroup("Authority")
LoadAnimationGroup("Boxing")
LoadAnimationGroup("B_Striker")
LoadAnimationGroup("CV_Female")
LoadAnimationGroup("CV_Male")
LoadAnimationGroup("DO_Edgar")
LoadAnimationGroup("DO_Grap")
LoadAnimationGroup("DO_StrikeCombo")
LoadAnimationGroup("DO_Striker")
LoadAnimationGroup("F_Adult")
LoadAnimationGroup("F_BULLY")
LoadAnimationGroup("F_Crazy")
LoadAnimationGroup("F_Douts")
LoadAnimationGroup("F_Girls")
LoadAnimationGroup("F_Greas")
LoadAnimationGroup("F_Jocks")
LoadAnimationGroup("F_Nerds")
LoadAnimationGroup("F_OldPeds")
LoadAnimationGroup("F_Pref")
LoadAnimationGroup("F_Preps")
LoadAnimationGroup("G_Grappler")
LoadAnimationGroup("G_Johnny")
LoadAnimationGroup("G_Striker")
LoadAnimationGroup("Grap")
LoadAnimationGroup("J_Damon")
LoadAnimationGroup("J_Grappler")
LoadAnimationGroup("J_Melee")
LoadAnimationGroup("J_Ranged")
LoadAnimationGroup("J_Striker")
LoadAnimationGroup("LE_Orderly")
LoadAnimationGroup("Nemesis")
LoadAnimationGroup("N_Ranged")
LoadAnimationGroup("N_Striker")
LoadAnimationGroup("N_Striker_A")
LoadAnimationGroup("N_Striker_B")
LoadAnimationGroup("P_Grappler")
LoadAnimationGroup("P_Striker")
LoadAnimationGroup("PunchBag")
LoadAnimationGroup("Qped")
LoadAnimationGroup("Rat_Ped")
LoadAnimationGroup("Russell")
LoadAnimationGroup("Russell_Pbomb")
LoadAnimationGroup("Straf_Dout")
LoadAnimationGroup("Straf_Fat")
LoadAnimationGroup("Straf_Female")
LoadAnimationGroup("Straf_Male")
LoadAnimationGroup("Straf_Nerd")
LoadAnimationGroup("Straf_Prep")
LoadAnimationGroup("Straf_Savage")
LoadAnimationGroup("Straf_Wrest")
LoadAnimationGroup("TE_Female")
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

14
Suggestions & Feedback / Bigger signature text
« on: February 16, 2015, 07:52:00 PM »
The max size for text in signatures when using the size tag is 3.75, so actually 3 since you can't do decimals. However, the normal text in a signature out of the size tag is far bigger than 3.75. I think the max size should be the same as normal text out of size tags, so I can have text slightly bigger than normal text but not microscopic. It's a small detail sure but, it'd be nice if it was fixed and I don't imagine it'd be really hard.. but what do I know

15
Mod Releases / Rapid Mounted Punches!
« on: February 14, 2015, 08:39:02 PM »

Pages: [1] 2 3 ... 6