I've faced the pickup problem in Squirrel plugin. It is hard to reproduce.
What happens is, when the script creates, removes, recreates pickups frequently their IDs get mixed up internally.
So, when you compare the pickup ID before deciding what to do with the picked event, you are dealt with a wrong ID, which produces a wrong behavior. Sometimes the flag could act like a barrel, teleport or vice versa.
Workaround: Generate a unique ID for the pickup when it is created. On all pickup events, use that unique ID instead of internal pickup IDs.
or, compare pickup's Model instead of it's ID. Since the red/blue flag's model is unique, it would work. However, the problem will persist in case of barrels or teleport pickups.
Interesting! If this bug also happens in the Squirrel plugin then that would mean that it's not a bug in the squirrel or the java plugin but in the server itself.
I'm actually already generating a unique "label" string for each pickup and using it to better identify them in several places on the script. For instance, the blue flag pickup has a "blueFlag" label attached to it and the red flag has a "redFlag" label attached to it, while the barrels also have the "redBarrel" label and the "blueBarrel" label aswell. Portals just have portal1, portal2, portal3, etc...but the onPickupPicked event is the only place on the script that was still comparing the pickup id instead of that label that's attached, so your theory makes sense to me.
I suspect this issue was also amplified as I found out that the library I was using for interthread messaging was messing up some of the VCMP server event callbacks by calling some events multiple times even though the event was only called once. For instance, during the private alpha tests I found out that when I used this library on the OnPlayerKill event, the event would get called 2 or 3 times per kill. Back then I removed that code from the OnPlayerKill event and that fixed the issue, but before last night's update there was still some code left from that library on some events like the OnPickupPicked event, but now with that library completely removed, I doubt we'll have similar problems.
I'll be replacing the line that's comparing the pickup id's with the one that compares the pickup labels instead. Thanks for the heads up, I'll be releasing an update soon.
Starting a round with /switchedctf still appears to be rather problematic.
A North Mall round was started using it and our blue team was on the Vinyl CDs side (not the GASH side), and after the countdown ended I was teleported to the same spot as a red member.
I'm looking into this one. By countdown you mean the loading bar when players are choosing the weps right? Also, are you completely sure that you were teleported to a red team spawnpoint and not to a different blue spawnpoint? Because I've noticed this one happening sometimes.