Перейти к содержанию

Рекомендуемые сообщения

Как прописать рейты на уровень и на дроп для премиумов? Скрипт или есть файл отвечающий за это?

Ссылка на комментарий
Поделиться на другие сайты

Нет, поумолчанию ничего нет. Но можно дописать проверочку двухстрочную в pc_calcexp (pc.c), что-то вроде


if(!pc_isGM(sd))
{
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
}
else
{
твоя_измененная_формула
}

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Попробую сегодня с сорсами покопаться, если не сложно будет, напиши, как примерно видоизмененный скрипт будет выглядеть с gmlvl 1 и для него рейты 7x7x7x.

Ссылка на комментарий
Поделиться на другие сайты

if(!pc_isGM(sd))
{
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
}
else
{
твоя_измененная_формула
}

if(!pc_ISGM(sd))

это когда игрок НЕ ГМ а как сделать для опр. уровня догадываюсь, но лучше пусть скажет nomn.

Ссылка на комментарий
Поделиться на другие сайты

if(!pc_isGM(sd))
{
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
}
else
{
твоя_измененная_формула
}

if(!pc_ISGM(sd))

это когда игрок НЕ ГМ а как сделать для опр. уровня догадываюсь, но лучше пусть скажет nomn.

омг...


// Если юзер НЕ гм
if(!pc_isGM(sd))
{
// Стандартный подсчет опыта
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
}
else // Иначе (соответственно если он гм)
{
твоя_измененная_формула
}


можно так:

// Если юзер НЕ гм
if(!pc_isGM(sd))
{
// Стандартный подсчет опыта
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
}
else if(pc_isGM(sd) == 1) // Иначе если гм лвл 1
{
твоя_измененная_формула
}
else if(pc_isGM(sd) == 2) // Иначе если гм лвл 2
{
твоя_измененная_формула_2
}

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Офигенно! Ребят, спасибо, все работает, если надо выложу код. Еще вопрос, а где формула выпадения преметов, чтобы так же прописать рейты на дроп у премов?

Ссылка на комментарий
Поделиться на другие сайты

*/src/map/mob.c,функция mob_dead,cвой код вставляй там после этого куска:

// Increase drop rate if user has SC_ITEMBOOST
if( sd && sd->sc.data[SC_ITEMBOOST] ) // now rig the drop rate to never be over 90% unless it is originally >90%.
drop_rate = max(drop_rate,cap_value((int)(0.5+drop_rate*(sd->sc.data[SC_ITEMBOOST]->val1)/100.),0,9000));

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Почему-то у меня не работает! Что не так то? Рекомпиляция прошла успешно!


/*==========================================
* Alters experienced based on self bonuses that do not get even shared to the party.
*------------------------------------------*/
static void pc_calcexp(struct map_session_data *sd, unsigned int *base_exp, unsigned int *job_exp, struct block_list *src)
{
int bonus = 0;
struct status_data *status = status_get_status_data(src);
if (sd->expaddrace[status->race])
bonus += sd->expaddrace[status->race];
bonus += sd->expaddrace[status->mode&MD_BOSS?RC_BOSS:RC_NONBOSS];
if (battle_config.pk_mode &&
(int)(status_get_lv(src) - sd->status.base_level) >= 20)
bonus += 15; // pk_mode additional exp if monster >20 levels [Valaris]
if (sd->sc.data[SC_EXPBOOST])
bonus += sd->sc.data[SC_EXPBOOST]->val1;

if(!pc_isGM(sd))
{
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus/100., 1, UINT_MAX);
}
else if(pc_isGM(sd) == 1) // Иначе если гм лвл 1
{
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus * 2/100., 1, UINT_MAX);
}
else if(pc_isGM(sd) == 2) // Иначе если гм лвл 2
{
*base_exp = (unsigned int) cap_value(*base_exp + (double)*base_exp * bonus * 3/100., 1, UINT_MAX);
}
if (sd->sc.data[SC_JEXPBOOST])
bonus += sd->sc.data[SC_JEXPBOOST]->val1;
*job_exp = (unsigned int) cap_value(*job_exp + (double)*job_exp * bonus/100., 1, UINT_MAX);
return;
}

Ссылка на комментарий
Поделиться на другие сайты

я думаю,что @rates берет информацию из конфигов

А как можно проверить?

Испытал команду @showexp,всё работает спасибо,а в @rates это дописать никак нельзя?

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика