As far as I remember, there is a function called ChangeHeroStat - it can be used not only to manipulate experience but also other hero stats (including removing or adding movement points).
Added 4 minutes later
void ChangeHeroStat(sHeroName, nStatID, nDelta)
This function retrieves or modifies a specific hero stat. The corresponding constants for nStatID are defined in /scripts/advmap-startup.lua and are as follows:
STAT_EXPERIENCE = 0
STAT_ATTACK = 1
STAT_DEFENCE = 2
STAT_SPELL_POWER = 3
STAT_KNOWLEDGE = 4
STAT_LUCK = 5
STAT_MORALE = 6
STAT_MOVE_POINTS = 7
STAT_MANA_POINTS = 8
Please note that the ChangeHeroStat function does not set a stat, but modifies it. That is, the third parameter is not the new value of the stat, but the difference from the old one (which can also be negative). Unlike others, STAT_EXPERIENCE cannot be decreased. STAT_MOVE_POINTS and STAT_MANA_POINTS represent the current values of the corresponding parameters, and you cannot set them higher than the maximum.
Пробуждение зла
Нашествие из Преисподней
Смена эпох
Скачать все кампании одним архивом: Яндекс.Диск Google.Диск
You can download the set of 3 Campaigns (English version) here
Одиночные сценарии Heroes V 3.1:
Незваные гости
Красный кристалл
Синий кристалл
Закат тьмы
Мультиплеерные карты для Heroes V 3.1:
Легендарная война
Сердце вулкана
Передел мира