What I believe you have to do is to use an interaction callback function that triggers when you use the empty bucket on the barrel with acid. I'm not the best scripter out there, but here's how I'd do it:
1: I'd place a script area right on top of the acid in the barrel. Name the area to whatever you want.
2: Then create this script function in the "void OnStart()" section:
AddUseItemCallback(string& asName, string& asItem, string& asEntity, string& asFunction, bool abAutoDestroy);
...where
string& asName is the internal name of the function, could be blank, but still requires
"" to be put in to avoid errors.
string& asItem is the name of the item (in your case, the bucket) that you will use it on.
string& asEntity is the name of the script area you created earlier.
string& asFunction is the name of the callback function; i.e. "void YourCallbackFunction"
bool abAutoDestroy will determine if the item, in your case the bucket, will be destroyed when the callback is called.
3: Now you can use the bucket on the script area, which will be on top of the barrel, and therefore it will look like you're using the bucket right on the acid.
Next thing you want to do is to add the filled bucket to your inventory. This is done by using this function:
GiveItemFromFile(string& asName, string& asFileName)
...where
string& asName is the internal name of the item, can be blank if you want to, and
string& asFileName is the file name of the item. Remember to write down the full name, including the extention
.ent
I hope it helps! I'm in a hurry at the moment, so I just threw it all together really quickly
If you need any further help, just PM me, I'll be happy to assist!