Kreol Nekr
Участник форума
- Регистрация
- 21 Ноя 2014
- Сообщения
- 229
- Благодарности
- 109
- Баллы
- 190
А что не понятно? points это переменная, которая принимает значение в зависимости от уровня владения оружием иди же его бонуса к атрибутам.Приветствую.
Пытался приделать урон к оружию от ловкости и всё бы хорошо, если бы при изменении характеристики вместе с тем урон не уходил вниз или вверх. Насколько я соображаю, здесь только один вариант с зацикленной функцией, которая бы записывала бы характеристику при эквипе и при её изменении, соответствующий ей индекс урона прибавлялся или отнимался, а значение характеристики затем перезаписывалось на новое. но пока что не пониманию как это должно выглядеть. Кроме того я не нашел функций с помощью которых можно было бы вызывать текущее значение характеристики у персонажа. Миссия без расширителей выполнима?
Вот сама функция.
func void Equip_Test()
{
if(Npc_IsPlayer(self))
{
self.damage[DAM_INDEX_EDGE] -= self.attribute[ATR_STRENGTH];
self.damage[DAM_INDEX_EDGE] += self.attribute[ATR_DEXTERITY];
};
};
func void UnEquip_Test()
{
if(Npc_IsPlayer(self))
{
self.damage[DAM_INDEX_EDGE] += self.attribute[ATR_STRENGTH];
self.damage[DAM_INDEX_EDGE] -= self.attribute[ATR_DEXTERITY];
};
};[/CODE]
Еще убивает от любопытства скрипт B_RaiseAttribute
Не совсем понятно на что это реагирует. if(attrib == ATR_STRENGTH).Код:func void B_RaiseAttribute(var C_Npc oth,var int attrib,var int points) { var string concatText; if(attrib == ATR_STRENGTH) { oth.attribute[ATR_STRENGTH] = oth.attribute[ATR_STRENGTH] + points; concatText = ConcatStrings(PRINT_LearnSTR,IntToString(points)); PrintScreen(concatText,-1,-1,FONT_Screen,2); }; if(attrib == ATR_DEXTERITY) { oth.attribute[ATR_DEXTERITY] = oth.attribute[ATR_DEXTERITY] + points; if((oth.attribute[ATR_DEXTERITY] >= 90) && (Npc_GetTalentSkill(oth,NPC_TALENT_ACROBAT) == 0)) { Npc_SetTalentSkill(oth,NPC_TALENT_ACROBAT,1); PrintScreen(PRINT_Addon_AcrobatBonus,-1,55,FONT_Screen,2); }; concatText = ConcatStrings(PRINT_LearnDEX,IntToString(points)); PrintScreen(concatText,-1,-1,FONT_Screen,2); }; if(attrib == ATR_MANA_MAX) { oth.attribute[ATR_MANA_MAX] = oth.attribute[ATR_MANA_MAX] + points; concatText = ConcatStrings(PRINT_LearnMANA_MAX,IntToString(points)); PrintScreen(concatText,-1,-1,FONT_Screen,2); }; if(attrib == ATR_HITPOINTS_MAX) { oth.attribute[ATR_HITPOINTS_MAX] = oth.attribute[ATR_HITPOINTS_MAX] + points; concatText = ConcatStrings(PRINT_Learnhitpoints_MAX,IntToString(points)); PrintScreen(concatText,-1,-1,FONT_Screen,2); }; B_RaiseRealAttributeLearnCounter(oth,attrib,points); };
Если аттрибут = сила, то поднять силу на количество points? Как игра распознает аргументы функции и откуда знает для чего они?(в данном случае attrib, oth(почему не self?) и points) функция обслуживает сама себя? Или это записано в ядре? Как я понял функция используется при прокачке перса у НПЦ. Я подумал что можно каким-то образом переиначить это под задачу выше.
А насчет приделать урон от ловкости, тут уже нужно изменять формулу расчета урона в самом движке. Это уже высшая скриптология... Так урон у любого типа оружия расчитывается от силы.