Add print(number, ", ", hero, ", ", GetObjectOwner(hero)) before the messages and tell me what it outputs when they touch...
It outputs:
for the first one - 1, Calid, 1
for the second one - 2, Sarge, 2
for the third one - 3, Mardigo, 3
And for the 4th player, respectively