If anyone still wants a fix for Skirmish with ranged weapons (actually, it worked with darts etc.), I found what was wrong with the script.
oItem = GetSpellCastItem();
GetWeaponRanged() function doesn't recognize projectiles so I added another condition to account for all ranged projectile weapons, throwing weapons and melee weapons:
if(GetLocalInt(oPC, "ScoutSkirmish") && ( GetWeaponRanged(oItem) || IPGetIsProjectile(oItem) || IPGetIsMeleeWeapon(oItem)) )
I had to add functions to make the damage type change adapt to the ammo/base weapon type (it was going for magical damage due to ammo not having a damage type itself) but there might be more elegant ways to do that and anything else I did but for now all the weapon types I tested (slings, crossbow, bow, dart and a handaxe) worked fine.
I also applied the Eventscript to each ammunition slot (was too lazy to do if conditions for each case):
AddEventScript(oAmmo, EVENT_ITEM_ONHIT, "prc_scout", TRUE, FALSE);
I am not sure how important it is to remove each instance of the EventScript at the end so I left it out for now, that might be something to look out for.