Сергей Сатанецкий_1207 Опубликовано 26 марта, 2012 Жалоба Поделиться Опубликовано 26 марта, 2012 Как прописать рейты на уровень и на дроп для премиумов? Скрипт или есть файл отвечающий за это? Ссылка на комментарий Поделиться на другие сайты Поделиться
nomn Опубликовано 26 марта, 2012 Жалоба Поделиться Опубликовано 26 марта, 2012 Нет, поумолчанию ничего нет. Но можно дописать проверочку двухстрочную в 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{ твоя_измененная_формула} 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Сатанецкий_1207 Опубликовано 26 марта, 2012 Автор Жалоба Поделиться Опубликовано 26 марта, 2012 А скриптом выполнимо, не касаясь сорсов? Ссылка на комментарий Поделиться на другие сайты Поделиться
nomn Опубликовано 26 марта, 2012 Жалоба Поделиться Опубликовано 26 марта, 2012 Ну разве что вешать Exp Boost (книга на экспу). Но соответственно с книгой не будет плюсоваться Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Сатанецкий_1207 Опубликовано 27 марта, 2012 Автор Жалоба Поделиться Опубликовано 27 марта, 2012 Попробую сегодня с сорсами покопаться, если не сложно будет, напиши, как примерно видоизмененный скрипт будет выглядеть с gmlvl 1 и для него рейты 7x7x7x. Ссылка на комментарий Поделиться на другие сайты Поделиться
Kubix! Опубликовано 27 марта, 2012 Жалоба Поделиться Опубликовано 27 марта, 2012 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. Ссылка на комментарий Поделиться на другие сайты Поделиться
Agasper Опубликовано 27 марта, 2012 Жалоба Поделиться Опубликовано 27 марта, 2012 if(pc_isGM(sd)>=10){ условие } Ссылка на комментарий Поделиться на другие сайты Поделиться
nomn Опубликовано 27 марта, 2012 Жалоба Поделиться Опубликовано 27 марта, 2012 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} 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Сатанецкий_1207 Опубликовано 27 марта, 2012 Автор Жалоба Поделиться Опубликовано 27 марта, 2012 Офигенно! Ребят, спасибо, все работает, если надо выложу код. Еще вопрос, а где формула выпадения преметов, чтобы так же прописать рейты на дроп у премов? Ссылка на комментарий Поделиться на другие сайты Поделиться
Agasper Опубликовано 27 марта, 2012 Жалоба Поделиться Опубликовано 27 марта, 2012 */src/map/mob.c,функция mob_dead,cвой код вставляй там после этого куска:// Increase drop rate if user has SC_ITEMBOOSTif( 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)); 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 16 июля, 2013 Жалоба Поделиться Опубликовано 16 июля, 2013 Почему-то у меня не работает! Что не так то? Рекомпиляция прошла успешно!/*==========================================* 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;} Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 16 июля, 2013 Жалоба Поделиться Опубликовано 16 июля, 2013 что не работает Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 16 июля, 2013 Жалоба Поделиться Опубликовано 16 июля, 2013 ну опыт у премиумов не увеличился ввожу @rates, x1000 как было так и осталось( Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 16 июля, 2013 Жалоба Поделиться Опубликовано 16 июля, 2013 мб уровень гма уже не через pc_isGM(sd) задается? Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 16 июля, 2013 Жалоба Поделиться Опубликовано 16 июля, 2013 не знаю у меня 3ceam,какая команда тогда? Ссылка на комментарий Поделиться на другие сайты Поделиться
kadze Опубликовано 16 июля, 2013 Жалоба Поделиться Опубликовано 16 июля, 2013 я думаю,что @rates берет информацию из конфигов Ссылка на комментарий Поделиться на другие сайты Поделиться
nejiko Опубликовано 16 июля, 2013 Жалоба Поделиться Опубликовано 16 июля, 2013 я думаю,что @rates берет информацию из конфиговА как можно проверить?Испытал команду @showexp,всё работает спасибо,а в @rates это дописать никак нельзя? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения