Автор: kreogen87: Дата: 06.14.2011
Всем привет! Столкнулся с превышением урона. К примеру, если соник в сумме превышает 6~7кк, то кросс хилит врага :D Где можно установить максимально допустимый урон? Или как с этим бороться? Помогите, пожалуйста. Спасибо!
Автор: Кеник: Дата: 06.14.2011
+1 к посту выше.. Говнохайрейт детектед :D
Я бы предложил просто при превышении приравнивать дамаг к макс. числу и все..
Автор: kreogen87: Дата: 06.15.2011
Спасибо, буду искать :)
Автор: Кеник: Дата: 06.15.2011
Пожалста, будут проблемы - обращаяйся.
Волшебный пендель: pc.c
Автор: kadze: Дата: 06.15.2011
скорее battle.c
Автор: Cole McCormick: Дата: 06.15.2011
Скорее оба
Автор: kadze: Дата: 06.15.2011
нет только battle.c )
Автор: kreogen87: Дата: 06.15.2011
Цитата kadze;43436:
нет только battle.c )
Автор: kadze: Дата: 06.15.2011
где производится подсчет урона там и ищи))
Автор: Less: Дата: 06.15.2011
Просто интересно
а азура у тебя не лечит? или у тебя азура меньше соника?))
Это просто любопытство :)
Автор: kadze: Дата: 06.15.2011
ты еще спроси не лечит ли у него вулкан с танатосом и тд)
Автор: kreogen87: Дата: 06.15.2011
Азура тоже лечит :D Все что дает максимальный урон начинает бить по 1 и подлечивать противника.
Пробовал увеличивать/уменьшать коэффициенты в функции int battle_calc_damage а фале battle.c. Такая же ерунда, только с другими показателями повреждений. Может дело в другом?
Автор: kadze: Дата: 06.15.2011
дело совсем в другом :) но подсказывать не буду потому что мне никто не подсказал когда я тут спрашивал
Автор: kreogen87: Дата: 06.15.2011
Цитата kadze;43473:
дело совсем в другом :) но подсказывать не буду потому что мне никто не подсказал когда я тут спрашивал
Автор: Kill Spirit: Дата: 06.15.2011
Цитата kreogen87;43474:
Спасибо! Значит я не одинок и то радует :D
Автор: Cole McCormick: Дата: 06.15.2011
А мы думали ты сдох от передоза...
Автор: Kill Spirit: Дата: 06.15.2011
Цитата Naota;43487:
А мы думали ты сдох от передоза...
Автор: Apachie: Дата: 06.16.2011
файл battle.c строка 784
тут можешь подрезать дамаг наносимый катарами(любыми)
case W_KATAR:
if((skill = pc_checkskill(sd,AS_KATAR)) > 0)
damage += (skill * 3);
break;
ATK_ADDRATE(map_flag_gvg(src->m)?25:100); //+25% урона на WoE /+100% урона в остальное время
case MO_EXTREMITYFIST:
ATK_ADD(250 + 150*skill_lv);
break;
Автор: Apachie: Дата: 06.16.2011
А на счет вас флудеры!!!!!! Ну вы и уродцы, парень с проблемой пришел а вам по приколу пофлудить по глумиться над парнем, а то нашлись тут "я не буду" или "тупые", идите на башорг там веселее.
Автор: Кеник: Дата: 06.16.2011
Цитата Apachie;43491:
А на счет вас флудеры!!!!!! Ну вы и уродцы, парень с проблемой пришел а вам по приколу пофлудить по глумиться над парнем, а то нашлись тут "я не буду" или "тупые", идите на башорг там веселее.
Автор: kreogen87: Дата: 06.16.2011
Ребят, давайте не будем срач разводить на таком чудном форуме :) Он ведь не для этого! Спасибо за дельные советы! Можно, конечно фиксить каждый спелл отдельно. Этого и сторонился. Надеялся на более централизованное решение. Ещё раз спасибо всем! :drinks_cheers:
Автор: kadze: Дата: 06.16.2011
есть более централизорванное решение xDDD в 1 строчку прям
Автор: Кеник: Дата: 06.16.2011
Цитата kreogen87;43495:
Ребят, давайте не будем срач разводить на таком чудном форуме :) Он ведь не для этого! Спасибо за дельные советы! Можно, конечно фиксить каждый спелл отдельно. Этого и сторонился. Надеялся на более централизованное решение. Ещё раз спасибо всем! :drinks_cheers:
Автор: Apachie: Дата: 06.16.2011
МОДЕРАТОР ПОЧИСТИ ФЛУД В ЭТОЙ ТЕМЕ!!!!!!!!!
Посмотрим что останется!
Автор: kreogen87: Дата: 06.16.2011
Цитата Кеник;43497:
Сделай проверку на овердамаг. Мол если "конечный урон" > "макс. дамага" => "конечный урон" = "макс дамаг". Не думаю, что у тебя есть ХП у персонажей, больше, чем максимальный урон :D
Автор: Кеник: Дата: 06.16.2011
Цитата kreogen87;43499:
Это прописывать к каждому умению? Или можно глобально где-то задать?
P.S.: Попробовал что порекомендовал Apachie, не помогло :(
int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int damage,int skill_num,int skill_lv)
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43499:
Это прописывать к каждому умению? Или можно глобально где-то задать?
P.S.: Попробовал что порекомендовал Apachie, не помогло :(
Автор: kreogen87: Дата: 06.16.2011
Компилирую, компилирую :D Да, на эту фунцию уже вторые сутки любуюсь :D Будет результат, отпишу :)
Автор: Renegade: Дата: 06.16.2011
тогда получается что у соника, азуры, вотербола, юпа, ада - будет вообще одинаковый дамаг убивающий с одного удара? Ахуенчик баланс будет.
Лучше убить такой сервер в зародыше.
Автор: Fox[RM]: Дата: 06.16.2011
battle.c
//Special no damage states
if(flag&BF_WEAPON && sd->special_state.no_weapon_damage)
damage -= damage*sd->special_state.no_weapon_damage/100;
if(flag&BF_MAGIC && sd->special_state.no_magic_damage)
damage -= damage*sd->special_state.no_magic_damage/100;
if(flag&BF_MISC && sd->special_state.no_misc_damage)
damage -= damage*sd->special_state.no_misc_damage/100;
Автор: Apachie: Дата: 06.16.2011
Цитата Renegade;43503:
тогда получается что у соника, азуры, вотербола, юпа, ада - будет вообще одинаковый дамаг убивающий с одного удара? Ахуенчик баланс будет.
Лучше убить такой сервер в зародыше.
Автор: kreogen87: Дата: 06.16.2011
Цитата Requiem;43504:
battle.c
//Special no damage states
if(flag&BF_WEAPON && sd->special_state.no_weapon_damage)
damage -= damage*sd->special_state.no_weapon_damage/100;
if(flag&BF_MAGIC && sd->special_state.no_magic_damage)
damage -= damage*sd->special_state.no_magic_damage/100;
if(flag&BF_MISC && sd->special_state.no_misc_damage)
damage -= damage*sd->special_state.no_misc_damage/100;
возможно это решит проблему...
Автор: Apachie: Дата: 06.16.2011
Цитата Requiem;43504:
battle.c
//Special no damage states
if(flag&BF_WEAPON && sd->special_state.no_weapon_damage)
damage -= damage*sd->special_state.no_weapon_damage/100;
if(flag&BF_MAGIC && sd->special_state.no_magic_damage)
damage -= damage*sd->special_state.no_magic_damage/100;
if(flag&BF_MISC && sd->special_state.no_misc_damage)
damage -= damage*sd->special_state.no_misc_damage/100;
возможно это решит проблему...
int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int damage,int skill_num,int skill_lv)
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43506:
Эти коэффициенты всяко крутил. Меняется только урон, а сам по себе эффект остается тот же :)
Автор: kreogen87: Дата: 06.16.2011
Мне кажется kadze знает решение всех проблем и забавляется нашими потугами :D
Автор: Fox[RM]: Дата: 06.16.2011
я щас просто не дома, так бы порылся в сорсах :), попробуй это ...
battle.c
if (cardfix != 10000)
md.damage=md.damage*cardfix/10000;
Автор: kreogen87: Дата: 06.16.2011
Цитата Requiem;43510:
я щас просто не дома, так бы порылся в сорсах :), попробуй это ...
battle.c
if (cardfix != 10000)
md.damage=md.damage*cardfix/10000;
Автор: Apachie: Дата: 06.16.2011
Цитата Requiem;43510:
я щас просто не дома, так бы порылся в сорсах :), попробуй это ...
battle.c
if (cardfix != 10000)
md.damage=md.damage*cardfix/10000;
Автор: Кеник: Дата: 06.16.2011
Цитата Renegade;43503:
тогда получается что у соника, азуры, вотербола, юпа, ада - будет вообще одинаковый дамаг убивающий с одного удара? Ахуенчик баланс будет.
Лучше убить такой сервер в зародыше.
Автор: kreogen87: Дата: 06.16.2011
Цитата Apachie;43512]А зачем карты фиксить?
Как я понял у него 2 скила с ВериХайРейт дамагом это соник и азура или я не прав?
Просто не легче ли понизить рейты сервера с 1кк (к примеру) до 100к разница будет не очень велика)
Автор: Apachie: Дата: 06.16.2011
Цитата Кеник;43513:
Когда?
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43514:
статы 1000 all
Автор: Fox[RM]: Дата: 06.16.2011
Цитата Apachie;43516:
попробуй стату 999 поставить хотя наверно ничего не изменится
Автор: Кеник: Дата: 06.16.2011
Цитата Apachie;43515:
В голове :D Ведь сначала зарождается мысль в голове! Так что вывод Решил сделать себе хай-рейт сервер выпусти пулю прям в висок! :)
Автор: kreogen87: Дата: 06.16.2011
Requiem, пробовал 4 варианта:
if (cardfix != 10000)
md.damage=md.damage*cardfix/100;
if (cardfix != 100)
md.damage=md.damage*cardfix/100;
if (cardfix != 1)
md.damage=md.damage*cardfix/1;
if (cardfix != 100)
md.damage=md.damage*cardfix/100;
if (cardfix != 1000000)
md.damage=(int)((int64)md.damage*cardfix/1000000);
Автор: Apachie: Дата: 06.16.2011
не знаю где но как помню (просто в проект и в ро вернулся недели 2 назад) у айс пики есть макс дамаг 99999 нужно найти этот "обрез" и попробывать функцию в ставить в балт_калк
Автор: Кеник: Дата: 06.16.2011
ea/src/map/battle.c
в функции
int battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int damage,int skill_num,int skill_lv)
return damage;
if(damage > 6000000) {
damage = 5999999;
}
return damage;
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43519:
Requiem, пробовал 4 варианта:
if (cardfix != 10000)
md.damage=md.damage*cardfix/100;
if (cardfix != 100)
md.damage=md.damage*cardfix/100;
if (cardfix != 1)
md.damage=md.damage*cardfix/1;
if (cardfix != 100)
md.damage=md.damage*cardfix/100;
if (cardfix != 1000000)
md.damage=(int)((int64)md.damage*cardfix/1000000);
Никаких изменений не заметил. Может делаю что-то не так?
Автор: Fox[RM]: Дата: 06.16.2011
Цитата Apachie;43522:
это ты так в сорсе поставил или это твои попытки
if (cardfix != 10000)
md.damage=md.damage*cardfix/8000;
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43519:
Никаких изменений не заметил. Может делаю что-то не так?
Автор: Кеник: Дата: 06.16.2011
и?
Автор: kadze: Дата: 06.16.2011
нету передамага :D стимул
Автор: Кеник: Дата: 06.16.2011
мдо..
UPD: 94кк. Нет переполнения. Тип переменной сменил?
Автор: kreogen87: Дата: 06.16.2011
Так... Статы 999 делал
Менял
if (cardfix != 10000)
md.damage=md.damage*cardfix/10000;
if (cardfix != 10000)
md.damage=md.damage*cardfix/8000;
return damage;
if(damage > 6000000) {
damage = 5999999;
}
return damage;
Автор: kadze: Дата: 06.16.2011
нет как был инт так и остался
Автор: Fox[RM]: Дата: 06.16.2011
что-то мне подсказывает что надо еще и в status.c лезть :)
Автор: Renegade: Дата: 06.16.2011
ТС, а ты после изменения сорцев рекомпил делаешь?
Автор: kreogen87: Дата: 06.16.2011
Цитата Renegade;43532:
ТС, а ты после изменения сорцев рекомпил делаешь?
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43533:
Да, делаю! Вот этим - Microsoft Visual C++ 2008 Express Edition
Автор: Кеник: Дата: 06.16.2011
Цитата Apachie;43547:
а как ты открываешь eAthena-10.sln не пойму Восьмой не открывает его ты походу релизы не те делаешь
Вот и еще укажи версию сборки и другую инфу по серверу рейты итд итп
Автор: Less: Дата: 06.16.2011
по-моему ты какую-то уйню натворил с сорцами и тебе просто следуют откатить свои изменения
дамаг окло 8кк и все ок.
А да, чтобы добиться дамага в 8кк по вальке, мне пришлось взять катар с 4 абисами, курсед ватер, едп, и статы по 3к(!), но никак не 1к. Вот то, как ты разгонял урон, там видимо и накосячил.
Автор: kreogen87: Дата: 06.16.2011
Apachie, восьмой вроде нормально собирает. Релиз eAthena r14432. Рейты? 1000/120. Или ты про что?
Автор: Apachie: Дата: 06.16.2011
Цитата Кеник;43548:
Не знаю как у него, но у меня *.sln файлы есть и 10, и 9, и 8
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43550:
Apachie, восьмой вроде нормально собирает. Релиз eAthena r14432. Рейты? 1000/120. Или ты про что?
Автор: kreogen87: Дата: 06.16.2011
Цитата Less;43549:
по-моему ты какую-то уйню натворил с сорцами и тебе просто следуют откатить свои изменения
дамаг окло 8кк и все ок.
А да, чтобы добиться дамага в 8кк по вальке, мне пришлось взять катар с 4 абисами, курсед ватер, едп, и статы по 3к(!), но никак не 1к. Вот то, как ты разгонял урон, там видимо и накосячил.
Автор: kreogen87: Дата: 06.16.2011
Цитата Apachie;43552:
Ты мне скажи ты релиз делаешь как с eAthena-10.sln??????
просто я сомневаюсь
Автор: Less: Дата: 06.16.2011
Но я же не по мобам бью =/а какая разница?
Нет с eAthena-9.sln
Автор: Apachie: Дата: 06.16.2011
Цитата Less;43555:
а какая разница?
найди разницу между 9 и 10
Автор: kreogen87: Дата: 06.16.2011
Не ну я понимаю вам смешно :D Прошареные в этом деле. Я то не так давно этим увлекаюсь :)
Автор: Fox[RM]: Дата: 06.16.2011
Хех, kreogen87 ,ты меня конечно опечалил :)
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43557:
Не ну я понимаю вам смешно :D Прошареные в этом деле. Я то не так давно этим увлекаюсь :)
Автор: Fox[RM]: Дата: 06.16.2011
Скачай по новой свн, ну вобщем все с НУЛЯ!!! Мне помогало!!! Но я после каждого таково действия читал все больше и больше информации!!!
Автор: kreogen87: Дата: 06.16.2011
Я делал все как вы рекомендовали :huh:
Автор: Less: Дата: 06.16.2011
И НАЧНИ ВСЕ С "ЧИСТОГО ЛИСТА"!!! Скачай по новой свн, ну вобщем все с НУЛЯ!!! Мне помогало!!!
Автор: Apachie: Дата: 06.16.2011
Цитата kreogen87;43562]Я делал все как вы рекомендовали :huh:
Автор: kadze: Дата: 06.16.2011
решения про овердамаг нигде нету можешь не искать.я на этом собаку съел :D
UPD:это по поводу ресурсов очень много)
Автор: Less: Дата: 06.16.2011
ну нет на стандартной механике овердамага, нет его.
Просто ради интереса разогнала соник на 1.1кк с удара (итого почти 9кк), по персонажу, не по мобу.
Персонаж умирает.
ищи косяки в своих правках.
Автор: kadze: Дата: 06.16.2011
попробуй танатос 3 тг по 1к вите и ок.или азуру с 2к статов х)
Автор: kreogen87: Дата: 06.16.2011
Я знаю что десятку 2008 с++ не скомпилируешь. Если нужен 2010 с++, чтобы сделать нужные поправки, так бы и сказали. Хочу быстрее - это да, поэтому к Вам и обратился :)
Ну как то же справляются на других серверах.. почему нет то?
Автор: kadze: Дата: 06.16.2011
на таких серверах либо администрация понимает,либо покупает решение)
Автор: Less: Дата: 06.16.2011
атакающуий: инфиль, танатос, 4гидры, статы 11к, едп. (хотя статы после 1-3к не сильно решают)
деф: статы по 4к (ради танатоса), и щит с алиской.
урон по 1.07кк с удара
деф.персонаж умирает.
Ок?)
Ну нету овердамага в классической афине
Автор: kadze: Дата: 06.16.2011
слишком много статов)
Автор: Less: Дата: 06.16.2011
Да, у меня нет овер дамага который лечит, потому что у меня овердамаг который убивает:D:D:D
Автор: kadze: Дата: 06.16.2011
1кк с удара это мало...потести азуру лучше х)
Автор: Кеник: Дата: 06.16.2011
А насчет овердамага... Я натыкался как-то давно (не меньше года назад, даже больше) на ea.ws на темку с переполнением дамага АД у креаторов на хайрейтах. Вот там были пара решений, одно из них заключалось как раз в смене типа переменной, чтобы большие значения хранить могла, но помню это все еле-смутно, я просто постебался почитал и забыл..
Автор: Less: Дата: 06.16.2011
мм, да азура лечит :)
Тогда нафик так разгонять урон, чтобы с 1 удара соника шло по 8кк.. это же ппц, я 8кк в сумме то еле собрала.
Автор: kadze: Дата: 06.16.2011
на 1к лвл тока эта проблема )
там все балансировать сильно надо
Автор: Less: Дата: 06.16.2011
На 255 балансировать не намного меньше, хотя наверное проблем с мегауроном нет.
Автор: kadze: Дата: 06.16.2011
самое главное на 1к лвл это убрать танатос xD ибо песдес
Автор: kreogen87: Дата: 06.16.2011
Цитата Less;43581:
мм, да азура лечит :)
Тогда нафик так разгонять урон, чтобы с 1 удара соника шло по 8кк.. это же ппц, я 8кк в сумме то еле собрала.
Автор: kadze: Дата: 06.16.2011
особенность сервера - новые классы ок.
Автор: Less: Дата: 06.16.2011
Ну вот у меня в сумме почти 9кк и норм, а вот азура действительно лечит.
Хотя от ревизии зависит еще
они раньше очень сильно экономили память, сейчас многим переменным тип поменяли.
Автор: kreogen87: Дата: 06.17.2011
Цитата Less;43588:
Ну вот у меня в сумме почти 9кк и норм, а вот азура действительно лечит.
Хотя от ревизии зависит еще
они раньше очень сильно экономили память, сейчас многим переменным тип поменяли.
Автор: Apachie: Дата: 06.17.2011
Цитата kreogen87;43612:
Фиг знает. Я снизил урон. Но мне это не помогло.
Автор: kreogen87: Дата: 06.17.2011
Цитата Apachie;43624:
Компил какой? надеюсь 10?
Автор: kreogen87: Дата: 06.24.2011
Получилось! B) Кени посоветовал сравнивать на максимальный урон, а он оказывается при "хиле" уходил в минус :D Этим кодом заменил return damage; в конце фунции battle_calc_damage. Может кому-то ещё поможет:
if(damage < 0) {
damage = - damage;
}
return damage;
Автор: Кеник: Дата: 06.27.2011
А пасипки? :(