Прямая проверка работы WR-10//1-5-я серия заточек...///
-
Для того, чтобы не было уклонений в сторону от темы топа, сделаю напоминание:
Цель данной темы - прояснить темный вопрос с WR=10 для профы Смита... Скилы Вайт Смита (т.е. адванс профы) - просьба рассматривать отдельно... Для тех кто забыл еще одно напоминание: Смит умеет точить шмот ровно так как и все остальные - у НПС и никак иначе... Вот мы и вясняем тут - учитывает ли НПС при заточке скилы Смита или не учитывает.
-
Естесственно я тороплюсь и выкладываю сырые непроверенные результаты (в том числе чтобы остальные проверили)
Да, я ошибся и НПС вызывает другую функцию - она зовется getequippercentrefinery в скрипте и buildin_getequippercentrefinery собственно в коде. Отдает она percentrefinery[уровень предмета(0-4 включая броню)][текущая_заточка]
Вот здесьfor(j=0;j<MAX_REFINE && split[j];j++)
percentrefinery**[j]=atoi(split[j+3]);**
**
**
**
**Эти значения берутся из таблицы, указанной Bububu выше, больше нигде не меняются.
**
**
**
НО это все не имеет никакого значения до тех пор, пока мы не узнаем, насколько изменися сам скрипт НПС. В той версии скрипта можно точить сразу на несколько пунктов, у нас не так. -
@абракадавр:
Естесственно я тороплюсь и выкладываю сырые непроверенные результаты (в том числе чтобы остальные проверили)...
Дорогой - а ты не торопись... Торопливых - смею тебя заверить - тут и без тебя хватало всегда... Тебе собственно это сказали сразу - непроверенных и неполных данных полно и без твоих усилий... Опубликованных, но ничем не подтвержденных фрагментов(кроме мнения авторов публикации) - всегда на эту тему хватало...
Зачем их преумножать? Никому неинтересно искать твои ошибки в твоих выводах, поэтому прежде чем выкладывать их - потрудись их проверить со всех сторон так, чтобы они были бесспорными. К примеру не стоит писать, что: "В percentrefinery (это заранее определенный массив) бонус в 10 наличествует.", если ты в эту таблицу даже не потрудился заглянуть... Лично я вот вовсе не собирался публиковать тот фрагмент кода, который привел в ответе тебе - ибо я не считаю его 100% достоверным, я просто был вынужден его привести благодаря твоим усилиям в порядке возражения на то, что в этой таблице "бонус в 10 процентов наличествует". Никак он в этой таблице не наличествует и наличествовать не мог - слишком усложнится такая таблица из-за того, что в ней надо будет отличать профы Смита и Мастер Смита от всех остальных...
Гораздо логичнее - если мы точим у НПС - предполагать, что итоги заточки зависят только от свойст самого НПС и никак не зависят от того - кто к нему пришел... И НПС-у все равно - нуб принес ему броньку или 99/50 лвл... Думаю - что и у Мастер Смита результат заточки у НПС подчинен тем же самым процентам - что и у всех остальных, а приведенный тобой фрагмент кода - это другой вариант, когда Мастер Смит точит что-то сам и не просит это сделать НПС.
-
абракадавр, ты не прав (на всякий случай перевожу на современный русский - убей себя об стену, выпей яду и т.д.).
Вот соотвутствующие куски кода из jAthena, которые не менялись уже очень много версий.
Это релевантная часть скрипта НПЦ, которые производят апгрейдят:
[code:32p18ruk]if ( getequippercentrefinery(@part)<=rand(100) ) {
failedrefitem @part;
close;
}
successrefitem @part;[/code:32p18ruk]Внутри getequippercentrefinery() используется status_percentrefinery(), наиболее интересный кусок которой выглядит так:
[code:32p18ruk]percent=percentrefinery[itemdb_wlv(item->nameid)][(int)item->refine];
percent += pc_checkskill(sd,BS_WEAPONRESEARCH);[/code:32p18ruk]Если в процессе адаптации jAthena под мотр этот код не менялся, то при заточке у кузнеца скил WR учитывается.Единственный вывод, который можно сделать из исходного кода:
WR безусловно влияет на шансы заточки при помощи НПЦ, если используется оригинальная jAthenaМенялись ли эти функции при адаптации jAthena для МОТРа - одному сами знаете кому известно.
На всякий случай вод еще пара интересных кусков кода.
Релевантный кусок кода из функции skill_weapon_refine, которая отвечает за работу скила вайтсмита, при помощи которого вайтсмит может апгрейдить оружие:
[code:32p18ruk]if(atn_rand()%10000 < status_percentrefinery_weaponrefine(sd,&sd->status.inventory[idx])) {
skill_success_weaponrefine(sd,idx);
} else {
skill_fail_weaponrefine(sd,idx);
}[/code:32p18ruk]И вот интересующая нас/вас часть функции status_percentrefinery_weaponrefine():
[code:32p18ruk]percent = percentrefinery[itemdb_wlv(item->nameid)][(int)item->refine]*100 + (joblv - 50)*50;
if(battle_config.allow_weaponrearch_to_weaponrefine) {
percent += pc_checkskill(sd,BS_WEAPONRESEARCH)*100;
}[/code:32p18ruk]battle_config.allow_weaponrearch_to_weaponrefine - это настройка из файла конфигурации, которая по умолчанию равна 0 (false). Так что если конфигурацию не править, то у вайтсмитов при заточке собственным скилом будет только (анти)бонус от джоба. -
@X-Oleg:
Вот соотвутствующие куски кода из jAthena, которые не менялись уже очень много версий.Это релевантная часть скрипта НПЦ, которые производят апгрейдят:
[code:2303kac0]if ( getequippercentrefinery(@part)<=rand(100) ) {
failedrefitem @part;
close;
}
successrefitem @part;[/code:2303kac0]Внутри getequippercentrefinery() используется status_percentrefinery(), наиболее интересный кусок которой выглядит так:
[code:2303kac0]percent=percentrefinery[itemdb_wlv(item->nameid)][(int)item->refine];
percent += pc_checkskill(sd,BS_WEAPONRESEARCH);[/code:2303kac0]Значит я зря предположил, что в eAthena и jAthena эти куски одинаковые. Тогда да.
А нет ли рабочей ссылочки на код jAthena? -
X Oleg
Во-первых давай не уклоняться от темы - я уже просил об этом... Это значит что все кроме рассмотрения скила кузнеца Weapon Research - пускаем побоку или выносим в отдельную тему...
А во вторых в сказанном тобой:
@X-Oleg:
....Вот соотвутствующие куски кода из jAthena, которые не менялись уже очень много версий.
Это релевантная часть скрипта НПЦ, которые производят апгрейдят:
[code:5gk7falw]if ( getequippercentrefinery(@part)<=rand(100) ) {
failedrefitem @part;
close;
}
successrefitem @part;[/code:5gk7falw]Внутри getequippercentrefinery() используется status_percentrefinery(), наиболее интересный кусок которой выглядит так:
[code:5gk7falw]percent=percentrefinery[itemdb_wlv(item->nameid)][(int)item->refine];
percent += pc_checkskill(sd,BS_WEAPONRESEARCH);[/code:5gk7falw]Если в процессе адаптации jAthena под мотр этот код не менялся, то при заточке у кузнеца скил WR учитывается.Единственный вывод, который можно сделать из исходного кода:
WR безусловно влияет на шансы заточки при помощи НПЦ, если используется оригинальная jAthenaМенялись ли эти функции при адаптации jAthena для МОТРа - одному сами знаете кому известно.
... <остаток не по теме топа - удален...
Твой вывод строго говоря некорректен потому, что в добавке к percent используется функция pc_checkskill(sd,BS_WEAPONRESEARCH);, которая содержит 2 параметра и:
- она пока что неизвестно что делает - сама функция она к примеру имеет право возвращать тождественный ноль;
- неясно назначение параметра sd и его взаимодействие со значением скила BS_WEAPONRESEARCH...
Так что писать о безусловном влиянии скила - даже при условии что код не изменялся - пока рано... Код-то как раз скорее всего никем на МОТР-е не изменялся, но вот заметить действие этого скила на многократных заточках - пока что никому не удалось.
Если первая часть кола в твоей цитате - вообще говоря совпадает со всеми публикациями на эту тему, которые я встречал, то вторая им противоречит, поэтому - либо давай более полные цитаты, либо указывай на источник данной информации и давай ссылки на имеющиеся в нем франменты кода - чтобы их можно было посмотреть и оценить их достоверность. Иначе ценность твоей инфы немногим выше цитат абракадабра и тех противоречивых сведений, которые подвигнули меня на прямую проверку этого скила статистическими методами...
PS: Собственно говоря X Oleg не привел никакой новой информации,кроме той что уже публиковалась в прошлом(замечу - к тому же исказив ее немного):
<!-- m --><a class="postlink" href="http://forum.motronline.com/viewtopic.php?p=277495&highlight=percentrefinery#277495">http://forum.motronline.com/viewtopic.p ... ery#277495</a><!-- m -->И которая не дает веских оснований для обоснованных выводов.
-
Bububu, pc_checkskill просто возвращает уровень запрошенного скила. Я не буду тебе или еще кому-то копировать сюда весь исходный код жафины, благо он доступен абсолютно бесплатно, и любой человек может воспользоваться google или хотя бы поиском по этому форуму, чтобы найти его.
Твоя заметка про "исказив её не много" вообще не в тему. Потому что то, что я запостил - куски кода, скопированные из исходного текста жафины, а не какого-либо поста на форуме.
Твой вывод строго говоря некорректен ...
Твоё желание проверить на практике, правильно ли работает компилятор c++ и правильно работает процессор(ы) на серверном компьютере, которые в итоге исполняют этот код, похвально. Ведь в конце концов нальзя исключать такой вариант, что Спакум&Co модифицировали именно эти куски кода.
-
X Oleg, я свою позицию выше высказал... Твоя аргументация - достаточно поверхностна и только повоторяет что уже было сказано 10 раз...
Ну какой серьезный человек скажет такое:"pc_checkskill просто возвращает уровень запрошенного скила." - не приводя фрагмента соответствующего кода? Откуда это видно? :roll:
Если тебе к сказанному добавить нечего - то извини уж меня за то, что у тебя аргументы неубедительны. Прежде всего в них слишком много необоснованных утверждений. Рассуждать о том, что делает pc_checkskill - Не приводя никаких текстов - это произвольное допущение. Ты называешь функцию status_percentrefinery() в то время как на самом указанный тобой текст содержит другая функция pc_percentrefinery(), которая в свою очередь использует pc_checkskill. Возможно в твоей версии кода это и так, но тогда неверно твое же утверждение о том, что эта часть давно не менялась... Я уже просто не говорю о том, что из процитированного тобой и в обсуждении на которое я дал ссылку совершенно неочевидно, что именно этот кусок кода используется неписью при заточке... В общем как ни крути - и указанная мной ссылка и твои аргументы не более чем просто предположения не дающие убедительного ответа на поставленный в топе вопрос. Я именно потому и оставил это на потом - до завершения прямого эксперимента - что все эти аргументы не раз обсуждались, но доказательством они не являются. Неубедительны они, если к делу подходить профессионально.
Меня интересует механика работы скила именно на МТОР-е... Даже если допустить, что ты проанализируешь весь код (я лично сомневаюсь что ты это сделаешь) - и убедительно докажешь, что в твоем коде этот скилл учтен в работе НПС-а, то дальше тебе придется объяснять как так выходит что статистической проверки на МОТР-е твое доказательство не выдерживает?
Меня не интересуют версии - меня интересуют результаты... Поэтому строго говоря пока все приведенно тобой выше никак не отвечает на вопрос топа и к делу не относится... для демонстрации некоторой эрудиции возможно годится, если убрать недочеты, но никак не годится для доказательства того, что у нас скилл работает. Я именно поэтому этот путь оставил на потом.
PS: Кстати если хочешь могу тебе дать ссылки еще на пару серверов, которые построены на том же исходном коде и на которых этот скилл БС-а никогда не работал и не работает как по мнению игроков, так и по мнению админов.
-
Bububu, я вижу ты ни в программировании не разбираешься, ни в пользовании поисковыми системами. Иначе бы ты уже сам давно нашел исходный код жафины. Ни один нормальный человек постить его тебе тут целиком не будет. Я привел ровно те куски, которые описивают изучаемую тобой проблему.
Твой бред про недочеты достал уже. На всякий случай повторю еще раз: я не пишу какую-то отсебятину, я копирую куски кода из реально работающего эмулятора.
Специально для тех, кто не умеет пользоваться google:
<!-- m --><a class="postlink" href="http://ravak.madcow007.com/">http://ravak.madcow007.com/</a><!-- m -->
<!-- m --><a class="postlink" href="http://sourceforge.net/projects/jathena">http://sourceforge.net/projects/jathena</a><!-- m -->Если не сможешь разобраться, то купи какую-нибудь книжку по с/с++.
Если разберешься (я лично сомневаюсь что ты это сделаешь), то замени в файле map/status.c в функции int status_percentrefinery(struct map_session_data *sd,struct item *item)
[code:29bullzi]percent=percentrefinery[itemdb_wlv(item->nameid)][(int)item->refine];
percent += pc_checkskill(sd,BS_WEAPONRESEARCH);[/code:29bullzi]на
[code:29bullzi]percent = 10 * pc_checkskill(sd,BS_WEAPONRESEARCH);[/code:29bullzi]Потом перекомпилируй эмулятор и попробуй что-нибудь заточить персонажем с WR=0 и c WR=10. -
X Oleg, изучаемую мной проблему на МОТР-е описывают пока что только результаты проделанных мной экспериментов - еще незаконченных кстати...
Я подчеркиваю - именно на МОТР-е... Твои же аргументы - если они и соответствуют чему-то - то только некоему абстрактному эмулятору и расходятся с результатами прямых проверок пока что - причем на все 100%...Да я именно настойчив и педантичен к аргументам - тут я возражать не буду... И спорить с тобой - пожалуй тоже не буду Тебе хочется верить в твою непогрешимость - верь на здоровье...
Только тогда сделай все-таки милость - прекрати теоризирование и цитирование ощеизвестных фрагментов - они были известны всем желающим еще до начала моих прямых проверок... Ничего нового для ответа на вопрос топа эти теоризирования не дают... Я не против новых аргументов как за, так и против учета скила WR=10, но я категорически против бесконечного повторения общеизвестных кусков кода...
Еще я против прямого хамства к каковому отношу твой последний пост и пост tanardino, Вам не нравится мой топ - дело Ваше - просто обходите его тогда.... Но - при попытках повторения постов вроде Ваших последних - я обязательно воспользуюсь синей кнопкой... Мое дело решать чем, как и в какой последовательности мне заниматься, а никак не Ваше...
Итак - предлагаю вернуться к обсуждению темы топа или покинуть данный топ... Любая не относящаяся к теме топа информация здесь будет рассматриваться как помеха... А тема простая:* Работает ли скилл WR=10 у Симта на МОТР-е или не работает.... *... Любые другие обсуждения здесь - нежелательны и буду считать помехой...
-
tanardino, устное предупреждение.
-
X Oleg во всем здесь прав, кроме "percent = 10 * pc_checkskill(sd,BS_WEAPONRESEARCH);" Там же шанс сто получается в этом случае - так что не вижу смысла пробовать. =/
А я в который раз повторяю WR дает 1*уровень_скила при заточке у NPC. -
Zeno "percent = 10 * pc_checkskill(sd,BS_WEAPONRESEARCH);" у X_oleg-а - это просто предложение как сделать более явным действие скила, а вовсе исходный текст... Ну хочется ему научить меня как по кодам дебагать и исследовать программы... :roll: :roll: :roll:
Я собственно нисколько не против, хотя и думаю что вряд ли он меня чему нибудь тут научит... Так что в этом он не может быть неправ - ты его просто не понял...Zeno, Ты лучши поясни твое вот это:
А я в который раз повторяю WR дает 1*уровень_скила при заточке у NPC.
И объясни почему ты тогда ответил уклончиво на вопрос работает или не работает WR=10 в вопросах к администрации?
Вот тут:
<!-- m --><a class="postlink" href="http://forum.motronline.com/viewtopic.php?p=839576#839576">http://forum.motronline.com/viewtopic.p ... 576#839576</a><!-- m -->
тобой же написано:Неизвестно. Вы можете сами проверить и высчитать из проверок необходимые вероятности.
Ну и само-собой - объясни получающиеся тогда статистические результаты в топе... :roll:
-
@Zeno:
Там же шанс сто получается в этом случае - так что не вижу смысла пробовать. =/Смысл пробовать - убедиться, что этот код реально выполняется.@Bububu:
объясни получающиеся тогда статистические результаты в топеДля оружия первого уровня при заточке до +10 разница между WR=0 и WR=10 при исходных 1000 предметов всего лишь порядка 50 предметов (там из 1000 исходных матожидание 48 и 105), что не так уж и много.Поэтому лучше делать только первую опасную заточку (+8, ну или считать для целей твоего эксперимента только результаты на +8, и дальше либо просто не точить, либо точить, но не подсчитывать), в этом случае разница между WR=0 и WR=10 при исходных 1000 предметов равна 100 (матожидание 600 и 700).
Хотя всё равно ожидаемая разница что в 50, что в 100 предметов - совсем, совсем не идеальный вариант проверки статистических закономерностей..
-
Хотя всё равно ожидаемая разница что в 50, что в 100 предметов - совсем, совсем не идеальный вариант проверки статистических закономерностей..
Важнее что при заточке до +10 вероятность вдвое выше... Что не может остаться незаметным.
Ровно так же при +9 ожидаемое число заточенных 240 и 350 на каждую 1000
И даже на +8 разница между 600 и 700 из 1000 не проявиться не может, если такая разница есть...Что же до проверки статистической закономерности, то для не всегда было достаточно сделать репрезентативную выборку... По простому выражаясь - достаточно большую... 1000 предметов в данном случае намного больше, чем требуется, чтобы эта разница проявилась...
-
Мои замечания строятся на анализе кода текущей версии жА и собственном опыте и они не имеют отношения к официальному ответу из соответствующего топа.
-
бубубу, ты эксперемент продолжать планируешь?
-
AndrGor13, а я его продолжаю... Вот сегодня - 4-я серия заточек Смитом дала что-то весьма похожее на работающий скилл Wr=10... Пока это вервый случай когда на 100 ножах что-то похожее наблюдается и существенно выше результатов Барда...
-
@Zeno:
Мои замечания строятся на анализе кода текущей версии жА и собственном опыте и они не имеют отношения к официальному ответу из соответствующего топа.Ну а раз анализировал - так прояснил бы:
- Что означает праметр sa в вызове функции pc_checkskill(sd,BS_WEAPONRESEARCH);;
- Что вообще содержит в себе эта функция: pc_checkskill(sd,BS_WEAPONRESEARCH) - для того чтобы выдать просто значение скила WR=10 - отдельная функция (как мне кажется) совершенно никчему...
-
Bububu, ну ты, блин, упорный =\
sd - структура типа map_session_data, содержит всю информацию о текущем игроке и окружающем его мире.
pc_checkskill возвращает уровень запрошеного скила.Так что pc_checkskill(sd,BS_WEAPONRESEARCH), очевидно, возвращает уровень скила WR у текущего игрока.
И вот тебе для раздумий пара картинок (обе лежат в галерее в "разном", размеры в байтах микроскопические):
Серия из 100 событий с одинаковой вероятностью. Отрисованы 4 серии с разной вероятностью (0.105 - заточка оружия первого уровня до +10 при WR=10, 0.048 то же для WR=0, 0.7 - любая первая опасная заточка при WR=10, 0.6 - любая первая опасная заточка при WR=0). График показывает вероятность (ось Y) того, что в какой-то серии из 100 событий произойдет определенное количество успешных событий (ось Х).
Серия из 1000 событий с одинаковой вероятностью.Это тебе наглядная демонстрация, как работает статистика при разных объемах входных данных (хинт: если рассматривать каждую исходную сотню по отдельности, то весьма возможны случаи, когда в серии с вероятностью одного события 0.048 получится больше удачных событий, чем в серии с 0.105; а если брать серию длинной 1000, то такие случаи уже практически невозможны; вывод - на результаты для серии из 100 событий можно не обращать внимания).