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.

Messages - Altamurenza

Pages: 1 2 [3] 4 5 ... 9
31
Mod Releases / Re: Selector Mod
« on: April 19, 2022, 12:52:25 AM »
My game: Cannot read Scripts/SelectorMod/SYSTEM/SM_INIT: NOT SUCH FILE OR DIRECTORY

plz help me...

I bet you only copied Scripts.img and Scripts.dir.
You should also move the SelectorMod folder to your Scripts folder.

32
Modding Questions/Help / Re: Get Projectile Position
« on: April 18, 2022, 03:33:39 AM »
There is no easy way to get projectile coordinates if you use CreateProjectile function.
A year ago, i experimented with object functions to achieve that, but failed.

There are three particular functions to measure projectile position based on my logic, the first one is ObjectFindInArea to identify all objects around us, the second function is ObjectIsInAreaXYZ to limit the scope, and the third function is ObjectIsModel to recognize the projectile itself.

I failed because i can't manage ObjectIsModel function to work as there is no any reference that i can use to utilize this function. I was just guessing what its function arguments are, it crashed when i tried ObjectIsModel(OBJ, PROJ_ID). For that reason, i can't identify the projectile i want, so i can't retrieve its position.

That's the end of my story for finding projectile position lol.
I hope this old experiment will be useful for further research or experiment.

33
Mod Releases / Detachable Weapon
« on: April 17, 2022, 07:44:09 AM »
DETACHABLE WEAPON MOD
BY: ALTAMURENZA


"The game did not provide us an ability to detach all weapons in our inventory, so we do it ourselves!"
- modder

How can we detach a baton by pressing R button, but we cannot detach Spud Gun or Stink Bombs at all? That's because R* locked those weapons to prevent them being stolen, so we can only lose them once we got busted. It is clearly not immersive according to the freedom of choice. This 'Detachable Weapon' mod is the solution for that matter, enhance your playing experience and make it more immersive.

Features:
- Player can detach the undetachable weapons like Fire Cracker, Slingshot, Spud Gun, Rocket Launcher, etc.
- Player & NPC can disarm any undetachable weapon from others with a grapple or shoot.
- Player & NPC can loot from knocked out characters.
- Brand new fireworks stores & camera stores across the map. (4 new stores added in total)


- PREVIEW -

DETACH WEAPON MANUALLY
DISARM ENEMY
LOOT FROM PEOPLE
BUYING WEAPON AT STORE

Check out my full review of this mod on my YouTube channel


- DOWNLOAD -


WARNING!
(Do not use SE version on AE or vice versa)
(They are not interchangeable)


- INSTALLATION -

This mod is not STimeCycle script replacement, so manual installation is highly recommended to run along with your favorite mods.

1) MANUAL
    - Open your Scripts.img with IMG Tool 2.0
    - Edit > Find > type SLvesEff.lur > Hit Enter
    - Right click on SLvesEff.lur > Delete
    - Command > Add
    - Find this mod SLvesEff.lur and double click on it
    - Command > Rebuild Archive
    - Close
2) SCRIPTS.IMG
    - Copy Scripts.img and Scripts.dir from this mod
    - Paste it into your Scripts folder and replace everything


- COMPATIBILITY -

This mod replaces SLvesEff.lur, any mod replacing the same script will not be compatible.

Incompatible mods:
   [-] Console Commands 1.0 by Altamurenza (replace the same script)
   [-] Weather & Time Synchronizer by Altamurenza (replace the same script)
   [-] More Scripts to Replace (MSR) SE by Altamurenza (replace the same script)
   [-] More Scripts to Replace (MSR) AE by Altamurenza (replace the same script)
   [-] Beta Firework Store Recreation by deadpoolXYZ (modify the same assets)
   [-] Advanced Trainer by Altamurenza (button conflicts, but patch is available)

Any 'STimeCycle' based mod should be compatible other than the mods listed above, it is even recommended to install this mod manually to get along with your favorite script modification. Patch for Advanced Trainer is included within the AE archive, read "../_PATCH/PATCH INFORMATION.txt" for more information about the patch & the installation.


- FREQUENTLY ASKED QUESTIONS -

How to detach weapon manually?
- SE: Hold R button for two seconds or.. until the weapon is detached from player.
- AE: Hold [JUMP] button for two seconds or.. until the weapon is detached from player.
- Approach the weapon to get it back or leave it to be picked up by NPC.
NOTE: Skateboard cannot be detached due to hard-coded script.

Is it possible that NPC will detach their weapon randomly?
No, but this mod has a support to it. If you're mod developer, you can make NPC to detach their weapon by putting this code into your script. shared.gDetachableWeapon.Framework.Detach[PED] = {nil, {PedGetWeapon(PED), PedGetAmmoCount(PED, PedGetWeapon(PED))}, nil, nil}

How to disarm NPC?
- Close combat in SE:
  - Approach the NPC and press R button while the NPC is holding a weapon.
  - Rapidly smash your R button until it's destroyed you get the weapon.
- Close combat in AE:
  - Approach the NPC and press [GRAB] button while the NPC is holding a weapon.
  - Tap your screen rapidly until the phone broke into pieces you get the weapon.
- Range combat: Throw rubber band ball or.. shoot them with a spud gun.
NOTE: The more bigger NPCs are the more arduous to disarm.

Is it possible that NPC will disarm the player?
Yes, more bigger the NPC is, more faster to disarm you.

How to loot?
- Loot in SE:
  - Approach any dead NPC until '[R] Look' text appears on the left-bottom of your screen.
  - Press R to play the animation.
- Loot in AE:
  - Approach any dead NPC until '[Crouch] Look' text appears on the left-top of your screen.
  - Crouch (swipe down) to play the animation.
NOTE: The loot-able items are depend on the NPC's faction.

Is player can be looted by NPC?
Yes, there is a chance that you will lose some weapons or ammunitions once you are knocked out. Also, the Authorities will take your Slingshot and Super Slingshot if you are getting busted. I was wondering why the developer did not implement this feature in the first place.

How to get some unobtainable weapons like Camera or Slingshot?
You can loot it from any dead NPC randomly or.. buy it from several stores. There are four new stores location added and some weapons added to Dragon Wing's Comic Store.
- There are two Firework Stores added, they sell Fire Cracker, Rocket Ammo, Fountain, and Rigged Rugby Ball.
- There are two Camera Stores added, they sell Camera, Digital Camera, and Skateboard.
- There are 4 new items added to Dragon Wing's Comic Store, they are Slingshot, Super Slingshot, Spud Ammo, and Kick Me Sign In.

Where are the Firework Stores located on?
- Bullworth Town, next to Shiny Bikes store.
- New Coventry, northeast of Yum Yum Market.

Where are the Camera Stores located on?
- Bullworth Town, right corner of Worn In shop line, near police station.
- Old Bullworth Vale, behind of Shiny Bikes store.

34
I've seen a modder named Cautious that did also a great job with his version, even managed to make new models and collisions in the boys room itself

Must admit, Cautious did amazing job. I'm very impressed with his recreation.
By the way, do you mean there is a more updated version of your mod than the one I have? As I can't find those files you mentioned in the current one. I downloaded this version: https://www.youtube.com/watch?v=gl9Q8pJVpLg&t=42s

There should be two more updates since v2.0, they are v2.3a and v2.7c.
I redownloaded the mod, but Tailz did not seem to update it even though there were few major issues going on.

Here, this is the latest change i made in 2019. Download v2.7c.

35
(even though some of the ones you said doesn't exist like - BOYSDORM_5_09.lur - BOYSDORM_6_01.lur)

To be honest, i kinda forgot about it lol. But i am pretty sure V2.3a should have BOYSDORM_5_09.lur at least.
You are one of the creators of the beta boys doorm right? thanks a lot for making this mod  with your friend and for helping me for mixing it with other mods.

Yep, me and TailzFuzion worked together back then.
I was on the scripts and he was on the textures, we complement each other in this project.

By the way.. thank you. I believe Tailz will be happy to see this appreciation as well.
But, I've encounter only a problem, I'll link a video for reference:  https://www.youtube.com/watch?v=crfqushNYc4

Is this a common bug in your mod? Like that Rusell is bugged like this? or maybe I forgot to add some .lur script / it is a bug for having this mod combined with Ultimate Selector, which modifies "Act" files for fixing some issues with fighting moves so it can cause this?

This mod seems to have minor incompatibilities with mod menu, i guess. My knowledge wasn't good enough to think about compatibilities back then.

However, you need to test it in order to have the right conclusions. Try to uninstall one of them and see if Russell still have that seizure or not. If you have no scripts mod left to uninstall, try to uninstall any Ide.img mod you have. Hope it can help.

36
The MSR tool is only for running multiple STimeCycle and ArcRace1 scripts.
On the other hand, Beta Boys Dorm mod does not use STimeCycle or ArcRace1 script.
These are scripts used by the mod:
- Gdorm.lur
- 1_02A.lur
- 5_09.lur
- 6_01.lur
- BOYSDORM_5_09.lur
- BOYSDORM_6_01.lur
- BOYSDORM_Monitor.lur

In this case, you don't have to use MSR due to the reason above.

I personally have no idea what scripts used by Ultimate Selector Mod V2.
So i think it's better to put Beta Boys Dorm mod scripts that i mentioned before into the Scripts.img from Ultimate Selector Mod V2.

37
Bully Modding / Re: Lua performance & optimisation tips
« on: April 09, 2022, 04:17:07 PM »
Wish I knew this sooner!
Ironically don't really think about this stuff too much even though I primarily mod on the PS2 where that should be a concern lol.

I originally planned it for another thread of Lua tutorial, but since Rangga made it first, why should i keep holding my breath lol.

I heard that PS2 is fragile about memory stuff, but SE and AE are same in my opinion. Optimization stuff will always be a concern to every platform you know. You don't know how much i got crash complaint for my Selector Mod -REMAKE-, that's because i had no idea about how things work and declared 260 global variables at once lmao.

Two days ago, i reinstalled my Selector Mod -REMAKE- to check its memory growth.
It grew up so fast lol. No wonder some people told me it crashes every 10 minutes.

Any way to reduce the growth as much as possible?
I noticed any time I create tables, text... (because of repeatedly running functions when selecting them from a menu) it grows slightly. Not really good for an extended play time, I guess.

Some optimization tips based on my experience:
1. Use local instead of global variable unless you need it the most.
2. Do not set local repeatedly in a loop.
Example:
Code: [Select]
local X, Y, Z
while true do
  X, Y, Z = PlayerGetPosXYZ()
  Wait(0)
end
3. Use collectgarbage() routinely to collect unused and dead objects (except global variables).
4. Avoid to execute function repeatedly unless you don't have any choice.
Example:
Code: [Select]
-- Pause game clock (most used method)
while true do
  PauseGameClock()
  Wait(0)
end

-- Pause game clock (better method)
while true do
  if not ClockIsPaused() then
    PauseGameClock()
  end
  Wait(0)
end

* CMIIW. I'd love to learn too.

Even though Lua 5.0.2 is actually run garbage collection automatically from time to time and Bully itself calls collectgarbage() whenever you exit from an area, it does not help much if you make a huge script. You need to clean your own mess with collectgarbage() because it's effective to reduce the memory growth.

I imagine it's due to the new stuff getting created on top of the old ones, or something?

I can't prove that actually. gcinfo() (or collectgarbage('count') in Lua 5.1) itself is also raising the memory growth.
But, i agree with you in common sense. It's like: you can't achieve anything without any sacrifice.

38
Bully Modding / Re: Lua performance & optimisation tips
« on: April 09, 2022, 03:11:58 AM »
That's cool.

If you are not pretty sure about your script optimization, use gcinfo() to prove it.
Code: [Select]
while true do
  TextPrintString('Memory = '..gcinfo()..' Kb', 0, 2)
  Wait(0)
end
If the memory growth is stable, then it's a good sign.

39
TUTORIALS / Lua Tutorial: Check If a File Exists in Directory
« on: April 07, 2022, 03:25:42 PM »
- INTRODUCTION -

Hey, back with me again in another thread of my Lua tutorial.
As you expect from the title. On this occasion, i will tell you about how can we check if a file exists or not in our beloved game Bully.

If you guys are familiar with Lua scripting, checking a file existence is probably easy with io.open function provided by Lua standard library. But, since Bully use a modified-standard library of Lua where I/O facilities do not exists, so we cannot access all I/O functions such as io.open, io.read, io.write, and many more io. So.. we're going to use loadfile function in order to check if a file exists or not.

This tutorial may become obsolete for PC version in the future because some people are going to reimplement the Lua 5.0.2 standard library into Bully. However, this method maybe useful for those who want to mod in traditional way without mod dependencies or additional tools to check a file.

- CHECK IF A FILE EXISTS -

Let's be honest here, this is not really tutorial lol. I think, it's more like resource or function library.
I made a custom function based on loadfile and i will demonstrate how to use it.

1) 'FILE_EXISTS' FUNCTION
Code: [Select]
FILE_EXISTS = function(PATH, NAME, LUA)
local FILE, INFO = loadfile(PATH..NAME)
local MESSAGE = "'"..NAME.."'"

if FILE then
MESSAGE = MESSAGE.." exists!"
else
MESSAGE = MESSAGE.." "..(string.find(INFO, "parser", 1) and "exists"..(LUA and ", but not compiled!" or "!") or "does not exist!")
end

return MESSAGE
end

Function arguments:
    PATH = string, file directory (e.g. "Scripts/")
    NAME = string, file name (e.g. "Scripts.img" or "RESOURCE.lur")
    LUA = boolean, the file you want to check is Lua script or not (e.g. true or false)

2) EXAMPLE OF USE
Check if Lua script exists:
Code: [Select]
local MSG = FILE_EXISTS("Scripts/", "RESOURCE.lur", true)
TextPrintString(MSG, 4, 1)
Check if Scripts.img exists:
Code: [Select]
local MSG = FILE_EXISTS("Scripts/", "Scripts.img", false)
TextPrintString(MSG, 4, 1)
Check if Trigger.img exists:
Code: [Select]
local MSG = FILE_EXISTS("DAT/", "Trigger.img", false)
TextPrintString(MSG, 4, 1)
Check if Music.bin exists:
Code: [Select]
local MSG = FILE_EXISTS("audio/PLAYLIST/", "Music.bin", false)
TextPrintString(MSG, 4, 1)
Check if PropHXDs.dat exists:
Code: [Select]
local MSG = FILE_EXISTS("Config/dat/", "PropHXDs.dat", false)
TextPrintString(MSG, 4, 1)
Check if Bully.exe exists:
Code: [Select]
local MSG = FILE_EXISTS("", "Bully.exe", false)
TextPrintString(MSG, 4, 1)

- CLOSING STATEMENT -

This is my third tutorial in Bully-Board, i hope i'll be able to share some more experiences soon.
Make sure you read all the explanations carefully to avoid any confusion.

Check out my other tutorials:
- Lua Tutorial: Exceeding 112KB Script Limit
- Lua Tutorial: Non-STimeCycle Freeroam Mods

40
TUTORIALS / Re: Lua Tutorial: Non-STimeCycle Freeroam Mods
« on: April 06, 2022, 10:05:08 PM »
You look like very obsessed with this game, XD. Nice find.

Nope, it's not about obsession actually.
Anyway, thanks.
Btw, where's level 3?
Quote
I differentiate it into three levels, ...

Yeah, the level three (hard) is missing.
It supposed to be specific activation method.

I missed the hard one because i was having a hard time to explain it too :wacko:

41
TUTORIALS / Lua Tutorial: Non-STimeCycle Freeroam Mods
« on: April 06, 2022, 02:34:33 AM »
- INTRODUCTION -

We're more than a decade in Bully modding scene, but we still relying ourselves on STimeCycle scripts. We managed to crawl out from ArcRace1 to STimeCycle based script, from arcade mods to freeroam mods. Now, the question is: Why are we stopped here?

That's because we're obviously lack of modding complexity, at least in Lua modding. I think we should start to implement a concept that i would like to call 'Mod's Interdependence' where mod developer should cooperate & add compatibility features for other mods too (if possbile). We know that people demand for having multiple mods at once, so the main obstacle that we should tackle is the variety of script's template.

Need a prove on people demand? Well, i have some.
Prove: 1, 2, 3, 4, and 5

There are many ways to make freeroam mods that are not based on STimeCycle. I differentiate it into three levels, so i hope this tutorial can reach everyone with the least knowledge barrier possible. Let's begin.

- LEVEL 1 (BEGINNER) -

First of all, the easiest way to make Non-STimeCycle Freeroam Mod is using Garages.lua or SLvesEff.lua scripts. Both scripts have very short length of code and they are called in 'main.lua' once the game has started. But, they are different from STimeCycle because both scripts were 'called' rather than 'launched' like STimeCycle. That means the script should not have 'main function' and it would not run independently, so there will be some potential conflicts if you are not careful with variables.

To solve the 'main function' problem, use CreateThread function to create our own 'main function'. But, the fundamental aspect that you should give more attention is variable. 'main.lua' is the central of scripts which has many variables in there, so i will strongly advise you to use 'shared' variable instead of global. It's more flexible compared to global and effective to avoid variable conflicts between your mods and 'main.lua', you can also modify it from your other scripts.

Without further ado, here are the templates that you can use to make freeroam mods.

1) Garages.lua
Code: [Select]
if type(F_InitGarages) ~= 'function' then
F_InitGarages = function()
DATLoad('Garages.DAT', 1)
GarageClearAll()
GarageAdd(TRIGGER._Garage_SchoolGrounds, POINTLIST._Garage_SchoolGrounds)
GarageAdd(TRIGGER._Garage_RichArea, POINTLIST._Garage_RichArea)
GarageAdd(TRIGGER._Garage_BusinessArea, POINTLIST._Garage_BusinessArea)
GarageAdd(TRIGGER._Garage_PoorArea, POINTLIST._Garage_PoorArea)
end
end

_G.MOD_NAME = function()
while not SystemIsReady() or AreaIsLoading() do
Wait(0)
end

while true do
Wait(0)
end
end

shared.gModName_MainThread = CreateThread('MOD_NAME')
2) SLvesEff.lua
Code: [Select]
if not SystemIsReady() then
EffectAddLeavesInArea(POINTLIST._LEAVESMAIN, 0)
EffectAddLeavesInArea(POINTLIST._LEAVESBUSINESS, 0)
EffectAddLeavesInArea(POINTLIST._LEAVESRICHAREA, 0)
end

_G.MOD_NAME = function()
while not SystemIsReady() or AreaIsLoading() do
Wait(0)
end

while true do
Wait(0)
end
end

shared.gModName_MainThread = CreateThread('MOD_NAME')

You can also theoretically implement this activation method in SWinEff.lua, SRoomEff.lua, SLightEff.lua, and Bike_gen.lua. These scripts are just a bit larger compared to Garages.lua and SLvesEff.lua, but it is not a big deal since they already got fully decompiled before.

- LEVEL 2 (INTERMEDIATE) -

Warning: If you have not completely understand the level 1, please master it first!

In level two, we are going to use globally imported scripts such as SInitGl.lua, SGlFunc.lua, SMStat.lua, SScriptTracks.lua, SFaction.lua, SCutscenes.lua, and SMissPass.lua. These scripts do not possess the same activation method as level one, we do our mod activation through function hooking. The requirement of function we need is pretty much simple, it must be used once the game has started.

These are my most preferred functions to activate our mod through 'function hooking':
- HasStoryModeBeenSelected()
- ClothingBuildPlayer()
- PlayerCreateXYZ(X, Y, Z)
NOTE: There are many references from other scripts too, but 'main.lua' is the most likely place where functions are called upon start. You can start there if you are looking for function to hook.

Before we start, there is one big problem that you should expect from the beginning. We only have one fully decompiled script of seven globally imported scripts, and that was SMStat.lua. The other scripts are not suitable for direct edit due to some missing parts, so we will need some extra steps in order to use them as our templates. I will use SInitGl.lua to demonstrate that matter, but i will show you the SMStat.lua first before that.

1) SMStat.lua
Code: [Select]
if type(F_VendettaGreasers) ~= 'function' then
F_VendettaGreasers = function()
return g_3RM01_GreaserLevel > 3 and 0 or 1
end

F_VendettaPreppies = function()
return g_3RM01_PreppyLevel > 3 and 0 or 1
end
end

_G.HSMBS = _G.HasStoryModeBeenSelected
_G.HasStoryModeBeenSelected = function()
-- Make sure our script isn't active yet, it's important step to avoid multiple activation!
if not shared.gModName_MainThread then

_G.MOD_NAME = function()
while true do
Wait(0)
end
end

shared.gModName_MainThread = CreateThread('MOD_NAME')
end

-- Execute function.
return _G.HSMBS()
end

2) THE REST OF THEM (Demonstrated with SInitGl.lua)
In this matter, we need the original compiled script in order to be the same as original source code. Why we need the compiled one? That is because we are not sure about things going on there, the source codes are missing some parts due to limitation of the tool. There is a high risk when we use that half-finished source code, it leads us to instability or crash.

Script template:
Code: [Select]
ImportScript("SInitGl_data.lua") -- It depends on script you want to replace and its name, in this demonstration i want to replace SInitGl.lur.

_G.CBP = _G.ClothingBuildPlayer
_G.ClothingBuildPlayer = function()
-- Make sure our script isn't active yet, it's important step to avoid multiple activation!
if not shared.gModName_MainThread then

_G.MOD_NAME = function()
while true do
Wait(0)
end
end

shared.gModName_MainThread = CreateThread('MOD_NAME')
end

-- Execute function.
return _G.CBP()
end

Now, we need to compiled script (SInitGl.lur) and rename it according to our script (SInitGl_data.lur).
Here's the tutorial:
- Open Scripts.img with IMG Tool 2.0
- Find the name of compiled script we need (SInitGl.lur) and enter
  * NOTE: I use SInitGl.lua in this demonstration, so i should find SInitGl.lur
- Right click on SInitGl.lur and extract to a folder where your SInitGl.lua is there
- Close IMG Tool 2.0
- Open folder where you extracted SInitGl.lur
- Rename SInitGl.lur to SInitGl_data.lur
  * NOTE: You can rename it to anything you want, but i highly recommend a name that close to its original name.

- CLOSING STATEMENT -

This is my second tutorial in Bully-Board, i hope i'll be able to share some more experiences soon.
Make sure you read all the explanations carefully to avoid any confusion.

Check out my other tutorials:
- Lua Tutorial: Exceeding 112KB Script Limit
- Lua Tutorial: Check If a File Exists in Directory

42
The game will start acting weird, like softlocking randomly, A-posing peds, areas loading slower...
I experienced the A-posing peds on PC when loading many collisions at once, and the rest primarily on PS2, but I don't mod PC often so I'd have to try again and check the results.

I see, what can we expect from 2005-2008's game engine.
I was wondering if fastman92's limit adjuster would help on PC.
Haha, you're welcome!
It's funny because if I remember right, I mentioned that I figured it out quickly. It is a pretty a basic process.

Maybe, but still.. if you didn't tell people about that, then most people wouldn't realize that including me :biggrin:.

43
I'm not sure if it's worth figuring out a solution for now, as editing Cloths.dat to add new stuff will make the game severely unstable after just a few more new entries are added.

Ahh.. that reminds me on one of my old experiment too.

I remembered the time you shared your knowledge on how to add some custom clothes in Bully. A year ago, i thought about 'Clothing Variants' idea like when you press Crouch button you'll have different color variants or different model variants of your current clothes. It was based on new meshes & textures, not the programming one because i was incapable to do that lol. So.. i literally add 1.095 new meshes & textures (2.190 in total) to World.img, register all of them to Cloths.dat, and make a Lua script to track our choices in wardrobe.

The game crashed on startup  :blank:

Then i learned that we can't put more than 100 new meshes & textures to World.img, so i reduced the number of clothing variants to 25 (1 meshes + 1 textures, so 50 new meshes & textures in total) and it worked pretty nice. I'm not sure what indicator you use to describe 'unstable', but for me, it was crash to desktop (CTD) on startup. I know, i know.. that was 'unplayable' rather than 'unstable'. In my opinion, as long as it doesn't CTD, then it's stable :laugh:.

Also, i think we should figure it out, at least in SE. Some modders like Actedstream 41 & Alex RK800 made many great clothing & outfit replacements, i hope we'll be able to add something with less sacrifice in the future. For example, this Brown Jacket with School Vest would be more suitable as clothing variants of School Vest rather than a replacement of something or a new added torso.

Anyway, you did inspire me a lot by sharing 'adding custom clothes' knowledge on Bully via YouTube. It's one of the greatest potential breakthrough in my opinion.

44
Bully Modding / Game Limitation: Quantity of Items in Wardrobe/Closet
« on: March 25, 2022, 06:18:26 AM »
I was told by an old friend a few years ago that our wardrobe/closet have a number limitation in Bully SE, like how much you can store your clothes to your wardrobe/closet. I was unaware before until i decided to test it myself days ago. I tried to store 364 piece of clothes one by one via ClothingGivePlayer(MODEL, BODY_PART_ID) and it stopped at 347 items, the game did not store any further.

So.. it seems like the wardrobe/closet have maximum capacity at 347 items and it doesn't seem like we can adjust it via Lua scripts (like some functions or variables related to this). This has not come to a conclusion yet, still merely assumptions or hypothesis from my experiment.

Credit: ProgrammerGaming/Neo (old friend who told me about this limitation)

Pages: 1 2 [3] 4 5 ... 9