Чет я не понял твой вопрос: что тебе нужно?
А касательно кода твоего:
Этот блок
Код:
"RunScript"
{
"ScriptFile" "tome.lua"
"Function" "item_tome_of_knowledge2_start"
"XpBonus" "%xp_bonus"
}
Вызывает функцию "item_tome_of_knowledge2_start", которая описана в скрипте "tome.lua", который хранится в папке vscripts твоего проекта. Вызывает функцию и еще передает в неё параметр "XpBonus" со значением (%) "xp_bonus". "xp_bonus" в свою очередь у тебя должен быть описан в ability special, что собственно и сделано.
Но вот блок вызова скрипта - он сам по себе не будет работать. Его надо поместить в блок любого события/действия.
Читай
тут, к примеру.
Вот эта же часть:
Код:
function item_tome_of_knowledge2_start(keys)
keys.caster:Heal(keys.HealthRestore, keys.caster)
Должна находиться в скрипте tome.lua. function - оператор объявления функции, метода, с именем "item_tome_of_knowledge2_start" и, в твоем случае, таблицей значений "keys", которые передаются в функцию из вне (из того блока запуска скрипта). Далее идет тело функции, там у тебя строчка:
Код:
keys.caster:Heal(keys.HealthRestore, keys.caster)
, в которой ты обращаешься к таблице "keys", запрашиваешь у неё через оператор "." объект "caster", у которого в свою очередь вызываешь метод
Heal(). Однако этот метод не сработает, так как у тебя попросту нет кастера (caster), ведь ты блок скрипта вызываешь не в блоке каста способности, а вообще не пойми где (походу просто впихнул его после abil spec). Но да еслиб у тебя был кастер, то во первых, он должен быть класса CDOTA BaseNPC (это по сути герои и юниты), а во вторых ты должен передать в него два значения: (float amount, handle source), где amount - это число с плавающей точкой, а source - объект-источник хила. Можно того же кастера указать. Что ты и делаешь:
Код:
(keys.HealthRestore, keys.caster)
Однако, у тебя нет keys.HealthRestore, потому что ты в таблицу данных keys передал только "XpBonus" и стандартные объекты, вроде кастера. И еще не хватает "end" после этой строчки, если это все тело твоей функции.
Стал понятнее собственный код?