wl.illusion Опубликовано 14 марта, 2015 Жалоба Поделиться Опубликовано 14 марта, 2015 (изменено) [NPC] Случайная заточка v1.02 Вступление Выполнено по просьбе пользователя форума в этой теме. Описание Случайная заточка предметов из указанного списка с шансом сломать вещь (вещь ломается, а не удаляется навсегда, но если нужно, то можно удалить пару строк и предмет будет исчезать навсегда). Скачать Готовый NPC: nt_randomrefine.txt v1.02 Настройка Все настройки прописываются в OnInit, разрешённые предметы прописывать в : setarray .allowed[0],1163,2280; Прописан клеймор и саккат, если первым числом идёт 0, то будут допустимы все предметы. В будущем возможно добавление и списка deny предметов. Цены на заточку: setarray .price[0],5000,5000,10000,15000,25000,50000; Самая первая цена - для бронек, шапок и акссесуаров (у них всегда уровень 0). Шанс поломать предмет: set .breakrate, 30; от 0 до 100 (моё личное мнение: идеально всё-таки 50 и выше). Для совместимости со старыми версиями афины и eA-Mod добавлены закомментированные строчки, искать в файле два места по: // oldversion compatibility Комментируем и снимаем блоки комментариев по необходимости. Изменено 15 марта, 2015 пользователем wl.illusion 7 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 14 марта, 2015 Жалоба Поделиться Опубликовано 14 марта, 2015 goto Ну и rand(101) Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 14 марта, 2015 Автор Жалоба Поделиться Опубликовано 14 марта, 2015 (изменено) goto Ну и rand(101) вы один из тех огромных любителей даже для самых простых задач напихивать кучи ненужных конструкций из if/switch и создавать избыточность функций? А rand(101) вполне к месту. ps я по работе занимаюсь поддержкой чужих сорцов, костылей из кучи функций для вызова 1 раз за всё время работы и конструкций из 15-20 if/switch уже навидался. Спасибо, goto - идеальное решение. Изменено 14 марта, 2015 пользователем wl.illusion 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 14 марта, 2015 Жалоба Поделиться Опубликовано 14 марта, 2015 А rand(101) вполне к месту. И к какому же это месту тут 101? Давно это 1/101 = 1%? И насчет goto - даже в доках рафины есть про его использование. Но конечно же ты самый умный Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 14 марта, 2015 Автор Жалоба Поделиться Опубликовано 14 марта, 2015 И к какому же это месту тут 101? Давно это 1/101 = 1%? И насчет goto - даже в доках рафины есть про его использование. Но конечно же ты самый умный Неумение пользоваться goto не означает, что оно зло, все его боятся из-за риска создать цикличность, это кстати ещё в гайдах по Сям было написано, но вы то тоже самый умный и не читали их. А создание избыточных условий и функций для единственного вызова несут в себе куда большее зло, что в гайдах по тем же Сям имеется. А бросание кубика сделано правильно, можно сделать, как в афине 10000, но статистически процент совпадения будет почти одинаковый, с разницей не превышающей ~5%, что допустимо (провренно написанием скрипта в 1000 запросов тем и другим методом), плюс сотые в нашем вопросе не нужны (они банально не используются, так зачем?). 101 = rand(0,100) (сорц script.c смотреть: max-min+1), но на выполнение у афины уходит меньше времени у запроса с одним входящим, так зачем попу рвать? Можно назвать не нужной оптимизацией. И да, я очень умный, спасибо за комплимент но ещё я очень добрый и скромный, так что такие похвалы мне греют сердце. Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 14 марта, 2015 Жалоба Поделиться Опубликовано 14 марта, 2015 При использовании 'rand(101)' в итоге мы получаем 101 возможный результат, если при 10000 эту 1 ты и не заметишь, то при значении 100 это уже играет роль.Хотя какая разница, может это задумка автора, чтоб шансов поболее было. =) 1 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 14 марта, 2015 Автор Жалоба Поделиться Опубликовано 14 марта, 2015 (изменено) При использовании 'rand(101)' в итоге мы получаем 101 возможный результат, если при 10000 эту 1 ты и не заметишь, то при значении 100 это уже играет роль.Хотя какая разница, может это задумка автора, чтоб шансов поболее было. =)Похоже документацию читал плохо не я, а кто-то другой, ну да ладно, вот что нам говорит официальная документация по скриптам:rand(10) would result in 0,1,2,3,4,5,6,7,8 or 9проще говоря rand(101) даст результат в диапозоне от 0 до 100 включительно. И да, 0 - это тоже результат, который должен учитываться, так же как и 100, но это уже вопрос к некоторым особенностям высшей математики. Изменено 14 марта, 2015 пользователем wl.illusion Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 15 марта, 2015 Жалоба Поделиться Опубликовано 15 марта, 2015 Сам себе противоречишь. Давай по пальцам: rand()%10 вернет нам 10 возможных результатов, включая 0. 1 результат : 02 результат : 13 результат : 24 результат : 35 результат : 46 результат : 57 результат : 68 результат : 79 результат : 810 результат : 9 И естественно по той же схеме rand()%101 вернет нам 101 возможный результат. Математик хренов.. Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 15 марта, 2015 Автор Жалоба Поделиться Опубликовано 15 марта, 2015 (изменено) Сам себе противоречишь. Давай по пальцам: rand()%10 вернет нам 10 возможных результатов, включая 0. Математик хренов.. не путай кол-во результатов и значения, которые они дают - это ваша ошибка, в нашем случае нас интересуют _только_ значения. ну и чтобы закрыть вопрос раз и навсегда: Кубик кидается 10000 раз для каждого варианта, значения имеют приблизительные результаты разброса от желаемого. На картинке проверял шанс в 30%. Результаты для других шансов совпадают. upd ps а, ну и я к вашим словам о том, что эта 1 имеет колосальное значение, с точки зрения математики результаты должны быть в диапозоне от 0 до 100, и думаю на этом вопрос можно закрыть, если вам лично не нравится эта 1, то исправьте для себя, мой учитель по вышке конечно бы на вас посмотре с укором, но вам есть до него дело? Изменено 15 марта, 2015 пользователем wl.illusion Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 15 марта, 2015 Жалоба Поделиться Опубликовано 15 марта, 2015 Всё ясно с вами. Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 15 марта, 2015 Автор Жалоба Поделиться Опубликовано 15 марта, 2015 Дополню отдельно по поводу тестового скрипта, личное наблюдение, при rand(101) флуктуации желаемого результата значительно ниже, чем при rand(100) - разброс значительно дальше уходит в обоих направлениях. Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 15 марта, 2015 Автор Жалоба Поделиться Опубликовано 15 марта, 2015 (изменено) Итак, я веру в местное сообщество малость потерял (без обид, это личное мнение), так что не думаю, что кто-то поймёт и вот эти данные (а тут кроме меня вообще кто-то проверят свои алгоритмы в стресс-тестах?): Для вас терпел пол миллиарда запросов (да это чертовски долго), суть картинки отображение максимальных и минимальныйх отклонений от желаемого значения (в нашем случае 30% от 10000 запросов), сейчас смотря на картинку некоторые двоечники потирают руки, глаза уже залились счастьем и сердцебиение зашкаливает от радости, что вот они же правы! Но нет, я не буду слишком вдаваться в подробности, но в среднем минимальное значение для rand(101) на 0.10% хуже, чем у rand(100), а вот максимальное значение в среднем у rand(101) лучше на 0.25%, чем у rand(100). По-сути, это настолько незначительные отклонения, что их разве что в астрономическом масштабе можно воспринимать серьёзно. Я не думаю, что за всё время жизни любого пиратского сервера кто-то вообще проделает столько запрососв, сколько было сделано мной в стресс-тесте. Тем не менее итог: rand(101) даёт более точные результаты с отклонение шанса в худшую сторону, но в целом показатель на 0.15% для пол миллиарда запросов ближе к искомому значению, а значит на 750 000 запросов будет ближе к желаемому результату. Объективный совет: хотите более честного подхода, тогда ваш выбор rand(101), хотите стабильного отклонения, то ваш выбор rand(100). В рамках данного скрипта это роли особой не играет. ps при увеличении значений (то есть rand(10000) и rand(10001) результат не меняется ни на сотую процента). Изменено 15 марта, 2015 пользователем wl.illusion Ссылка на комментарий Поделиться на другие сайты Поделиться
Extez1 Опубликовано 15 марта, 2015 Жалоба Поделиться Опубликовано 15 марта, 2015 (изменено) goto чем плох переход по лейбел? Изменено 15 марта, 2015 пользователем Extez1 Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 15 марта, 2015 Автор Жалоба Поделиться Опубликовано 15 марта, 2015 чем плох переход по лейбел?Споры про goto так же сильны как споры о религии, почти любой форум по программированию забит срачами на тему, что goto это low и им нельзя пользоваться. Правда основные два тезиса, которые выдвигают противники goto мягко говоря сомнительны:1. goto портит структурный вид кода2. goto может создать dead infinity loopНу, если программист с руками из жопы, то конечно на один из этих пунктов он нарвётся, а то и на оба. На хабре было пару хороших статей в защиту goto и судя по выносу кармы крикунов о том, что goto зло - можно сказать, что большинство поддерживает умеренное использование явных переходов.А так, вообще в любом даже крупном и крутом проекте используются goto. Парочка, но есть. Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 15 марта, 2015 Жалоба Поделиться Опубликовано 15 марта, 2015 (изменено) Итак, я веру в местное сообщество малость потерял (без обид, это личное мнение), так что не думаю, что кто-то поймёт и вот эти данные (а тут кроме меня вообще кто-то проверят свои алгоритмы в стресс-тестах?): Для вас терпел пол миллиарда запросов (да это чертовски долго), суть картинки отображение максимальных и минимальныйх отклонений от желаемого значения (в нашем случае 30% от 10000 запросов), сейчас смотря на картинку некоторые двоечники потирают руки, глаза уже залились счастьем и сердцебиение зашкаливает от радости, что вот они же правы! Но нет, я не буду слишком вдаваться в подробности, но в среднем минимальное значение для rand(101) на 0.10% хуже, чем у rand(100), а вот максимальное значение в среднем у rand(101) лучше на 0.25%, чем у rand(100). По-сути, это настолько незначительные отклонения, что их разве что в астрономическом масштабе можно воспринимать серьёзно. Я не думаю, что за всё время жизни любого пиратского сервера кто-то вообще проделает столько запрососв, сколько было сделано мной в стресс-тесте. Тем не менее итог: rand(101) даёт более точные результаты с отклонение шанса в худшую сторону, но в целом показатель на 0.15% для пол миллиарда запросов ближе к искомому значению, а значит на 750 000 запросов будет ближе к желаемому результату. Объективный совет: хотите более честного подхода, тогда ваш выбор rand(101), хотите стабильного отклонения, то ваш выбор rand(100). В рамках данного скрипта это роли особой не играет. ps при увеличении значений (то есть rand(10000) и rand(10001) результат не меняется ни на сотую процента). Каким образом при выборке из чисел <= 100(101) ты получаешь число выше границы? Или что это за число и как оно считается Изменено 15 марта, 2015 пользователем botka4aet Ссылка на комментарий Поделиться на другие сайты Поделиться
Nurkz Опубликовано 15 марта, 2015 Жалоба Поделиться Опубликовано 15 марта, 2015 чем плох переход по лейбел?int a = rand()%100;if (a>50) goto LOL;int b=rand()%100;LOL:std::cout << a << b << std::endl;Каким образом при выборке из чисел <= 100(101) ты получаешь число выше границы?Или что это за число и как оно считаетсясуть картинки отображение максимальных и минимальныйх отклонений от желаемого значения (в нашем случае 30% от 10000 запросов) Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 15 марта, 2015 Автор Жалоба Поделиться Опубликовано 15 марта, 2015 (изменено) Наглядные графики и пояснения. rand(1,100) и 1 миллион запросов, кучность неплохая. rand(101) заметное смещение на 0.1% (да-да, ровно так выглядит смещение в 0.1%) rand(1,100) и один миллиард запросов, по непонятным мне причинам разброс сглаживается и распределяется равномернее (результаты с отклонением выше 1.5% не учитывались при построение графика). rand(101) и один миллиард запросов, на глаз определить разницу не удалось, но присутствует всё то же отклонение в -0.1% использование rand(100) давало смещение в лучшую сторону: на глаз это не сильно заметно, но смещение в сторону удачного выпадения есть на 0.13% на этом графике. В среднем смещение при rand(100) составляет +0.1% относительно rand(1,100). Отсюда могу сделать только один вывод - используйте rand(1,100), остальные варианты дают смещение. int a = rand()%100;if (a>50) goto LOL;int b=rand()%100;LOL:std::cout << a << b << std::endl; наглядное пособие о жопоруком программисте, такие и без явных переходов наделают говна в коде (точнее оно уже есть в коде и без goto), тут если не читали гайды о правильном программирование, то о чём речь вообще? Изменено 15 марта, 2015 пользователем wl.illusion Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 15 марта, 2015 Жалоба Поделиться Опубликовано 15 марта, 2015 суть картинки отображение максимальных и минимальныйх отклонений от желаемого значения (в нашем случае 30% от 10000 запросов)Я не вижу на картинке число 30 Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 16 марта, 2015 Автор Жалоба Поделиться Опубликовано 16 марта, 2015 Я не вижу на картинке число 3030 - это мнимый результат, можешь считать точку отсчёта на графиках этим значением.да, подписывать графики мне было лень. Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 17 марта, 2015 Жалоба Поделиться Опубликовано 17 марта, 2015 Я не вижу на картинке число 3030 - это мнимый результат, можешь считать точку отсчёта на графиках этим значением.да, подписывать графики мне было лень.Те ты используешь в качестве аргумента графики, основанные на высосанных из пальца числах?Отличный подход Ссылка на комментарий Поделиться на другие сайты Поделиться
wl.illusion Опубликовано 17 марта, 2015 Автор Жалоба Поделиться Опубликовано 17 марта, 2015 Те ты используешь в качестве аргумента графики, основанные на высосанных из пальца числах? Отличный подход Ты же крутой программист возьми и напиши сам, или мне тебе ещё и скрипты выдавать? У меня на написание ушло чуть меньше часа, у такого спеца должно уйти не больше 5-10 минут. Ссылка на комментарий Поделиться на другие сайты Поделиться
botka4aet Опубликовано 19 марта, 2015 Жалоба Поделиться Опубликовано 19 марта, 2015 Ты же крутой программист возьми и напиши сам, или мне тебе ещё и скрипты выдавать? У меня на написание ушло чуть меньше часа, у такого спеца должно уйти не больше 5-10 минут. Я спрашиваю у тебя формулу, а ты мне говоришь про время Ссылка на комментарий Поделиться на другие сайты Поделиться
INSTIGATOR Опубликовано 10 апреля, 2015 Жалоба Поделиться Опубликовано 10 апреля, 2015 если например заточить,а последующий раз оружка будет сломана,то заточка останется или нет? Ссылка на комментарий Поделиться на другие сайты Поделиться
ggRo Опубликовано 10 апреля, 2015 Жалоба Поделиться Опубликовано 10 апреля, 2015 Вещь возвращается без заточки. Допустим было +5 точили сломали результат 0, так же итем вернется в виде сломанного. Ссылка на комментарий Поделиться на другие сайты Поделиться
Fizik Опубликовано 20 августа, 2015 Жалоба Поделиться Опубликовано 20 августа, 2015 [NPC] Случайная заточка v1.02 Вступление Выполнено по просьбе пользователя форума в этой теме. Описание Случайная заточка предметов из указанного списка с шансом сломать вещь (вещь ломается, а не удаляется навсегда, но если нужно, то можно удалить пару строк и предмет будет исчезать навсегда). Скачать Готовый NPC: nt_randomrefine.txt v1.02 Настройка Все настройки прописываются в OnInit, разрешённые предметы прописывать в : setarray .allowed[0],1163,2280; Прописан клеймор и саккат, если первым числом идёт 0, то будут допустимы все предметы. В будущем возможно добавление и списка deny предметов. Цены на заточку: setarray .price[0],5000,5000,10000,15000,25000,50000; Самая первая цена - для бронек, шапок и акссесуаров (у них всегда уровень 0). Шанс поломать предмет: set .breakrate, 30; от 0 до 100 (моё личное мнение: идеально всё-таки 50 и выше). Для совместимости со старыми версиями афины и eA-Mod добавлены закомментированные строчки, искать в файле два места по: // oldversion compatibility Комментируем и снимаем блоки комментариев по необходимости. А можно сделать так что бы в случае неудачной заточки, заточка падала на 1) Например я точу пуху +8 и если неудачно она падает до 7ми) и нужно добавить предмет, например что бы это точнуть принести надо неломайку) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения