![]() |
Прокачка умений
Подскажите люди добрые... Правильно ли я поступаю
Я дружинник Выучил только два умения длин.лезв и сбить - Чем меньше умений тем быстрее качаются? У меня мудра 13 и ум 12 - это способствует прокачке? наверно раз 500 удачно сбивал, а все равно ум. сбить 12% от чего оно зависит? Если не в облом пожалста обьясните нубу механизм прокачки... |
Re: Прокачка умений
ты раз 500 сбивал 1 и того же моба чтоль?)
ваще за 500 раз буит как мин процентов 40% ) |
Re: Прокачка умений
а как влияет тип моба или уровень моба на прокачку?
|
Re: Прокачка умений
ну вроде как чем выше моб = тем больше шанс получить просвет на нем.
бывают мобы типа !трен, за них экспы не дают и просветы на них не случаются - это например крестьяне в родовых и всякие горожане в городах. удачно или неудачно ты сбиваешь - пофиг, качается независимо от результата. скиллов можно набирать столько сколько у тебя мудры, да и вобще вроде говорили, что убрали зависимость скорости прокачки от соотношения мудрости и числа выученных умений. инта влияет на скорость роста умения (частоту просветов), мудрость - на максимальный уровень умения на данном левеле. |
Re: Прокачка умений
Цитата:
|
Re: Прокачка умений
на скока мне известно от левла моба, твоей визды...и упорства...зависит уровень прокачки....
а не качается на тех мобах за которых не дают опыт :d |
Re: Прокачка умений
делить дружа с такими статами .....
|
Re: Прокачка умений
Решил запостить для исчерпывающего ответа, потому как тема возникает довольно часто.
void improove_skill(CHAR_DATA * ch, int skill_no, int success, CHAR_DATA * victim) { int skill_is, diff = 0, how_many = 0, prob, div; if (IS_NPC(ch)) - у мобов(и чармисов) умения не качаются return; if (victim && (IS_HORSE(victim) || MOB_FLAGGED(victim, MOB_NOTRAIN))) return; не качаются на лошадяках и мобах с флагом NOTRAIN if (IS_IMMORTAL(ch) || ((!victim || OK_GAIN_EXP(ch, victim)) && IN_ROOM(ch) != NOWHERE && !ROOM_FLAGGED(IN_ROOM(ch), ROOM_PEACEFUL) && // Стрибог !ROOM_FLAGGED(IN_ROOM(ch), ROOM_ARENA) && //Свентовит !ROOM_FLAGGED(IN_ROOM(ch), ROOM_HOUSE) && !ROOM_FLAGGED(IN_ROOM(ch), ROOM_ATRIUM) && (diff = wis_app[GET_REAL_WIS(ch)].max_learn_l20 * GET_LEVEL(ch) / 20 - GET_SKILL(ch, skill_no)) > 0 && GET_SKILL(ch, skill_no) < MAX_EXP_PERCENT + GET_REMORT(ch) * 5)) { не качается на мобах за которых не дают экспу, в комнате "нигде", в мирках, на арене, в замках, входе в замок. Ограниченно по мудрости для каждого левела. и ограничено по ремотрам. for (prob = how_many = 0; prob <= MAX_SKILLS; prob++) if (GET_SKILL(ch, prob)) how_many++; считаем количество выученных скилов how_many += (im_get_char_rskill_count(ch) + 1) >> 1; прибавляем к ним выученные рецепты деленые на 2 /* Success - multy by 2 */ prob = success ? 20000 : 15000; если фейл то шанс примерно на 1/4 выше div = int_app[GET_REAL_INT(ch)].improove /* + diff */ ; чем выше интеллект персонажа тем выше шанс просвета if ((int) GET_CLASS(ch) >= 0 && (int) GET_CLASS(ch) < NUM_CLASSES) div += (skill_info[skill_no].k_improove[(int) GET_CLASS(ch)][(int) GET_KIN(ch)] / 100); prob /= (MAX(1, div)); if ((diff = how_many - wis_app[GET_REAL_WIS(ch)].max_skills) < 0) prob += (5 * diff); else prob += (10 * diff); чем больше мудрость и чем меньше умений тем больше шанс просвета prob += number(1, GET_SKILL(ch, skill_no) * 5); чем больше процент скила тем меньше шанс просвета skill_is = number(1, MAX(1, prob)); if ( (victim && skill_is <= GET_REAL_INT(ch) * GET_LEVEL(victim) / GET_LEVEL(ch)) || (!victim && skill_is <= GET_REAL_INT(ch))) { чем больше отношение левелов моба и персонажа(идеальный случай персонаж 1 уровня а моб 50) тем выше шанс просвета if (success) sprintf(buf, "%sВы повысили уровень умения \"%s\".%s\r\n", CCICYN(ch, C_NRM), skill_name(skill_no), CCNRM(ch, C_NRM)); else sprintf(buf, "%sПоняв свои ошибки, Вы повысили уровень умения \"%s\".%s\r\n", CCICYN(ch, C_NRM), skill_name(skill_no), CCNRM(ch, C_NRM)); send_to_char(buf, ch); GET_SKILL(ch, skill_no) += number(1, 2); просветы бывают только на 1 или 2 процента за раз if (!IS_IMMORTAL(ch)) GET_SKILL(ch, skill_no) = MIN(MAX_EXP_PERCENT + GET_REMORT(ch) * 5, GET_SKILL(ch, skill_no)); // скилл прокачался, помечаю моба (если он есть) if (victim && IS_NPC(victim)) SET_BIT(MOB_FLAGS(victim, MOB_NOTRAIN), MOB_NOTRAIN); если кто-то уже получил просвет на мобе, то моба помечают флагом NOTRAIN(больше никто на нем не получит просвет) } } } |
Часовой пояс GMT +4, время: 01:20. |
Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot