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

wl.illusion

Проверенные
  • Постов

    122
  • Зарегистрирован

  • Посещение

  • Победитель дней

    11

Весь контент wl.illusion

  1. Наглядные графики и пояснения. 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), остальные варианты дают смещение. наглядное пособие о жопоруком программисте, такие и без явных переходов наделают говна в коде (точнее оно уже есть в коде и без goto), тут если не читали гайды о правильном программирование, то о чём речь вообще?
  2. Споры про goto так же сильны как споры о религии, почти любой форум по программированию забит срачами на тему, что goto это low и им нельзя пользоваться. Правда основные два тезиса, которые выдвигают противники goto мягко говоря сомнительны: 1. goto портит структурный вид кода 2. goto может создать dead infinity loop Ну, если программист с руками из жопы, то конечно на один из этих пунктов он нарвётся, а то и на оба. На хабре было пару хороших статей в защиту goto и судя по выносу кармы крикунов о том, что goto зло - можно сказать, что большинство поддерживает умеренное использование явных переходов. А так, вообще в любом даже крупном и крутом проекте используются goto. Парочка, но есть.
  3. Итак, я веру в местное сообщество малость потерял (без обид, это личное мнение), так что не думаю, что кто-то поймёт и вот эти данные (а тут кроме меня вообще кто-то проверят свои алгоритмы в стресс-тестах?): Для вас терпел пол миллиарда запросов (да это чертовски долго), суть картинки отображение максимальных и минимальныйх отклонений от желаемого значения (в нашем случае 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) результат не меняется ни на сотую процента).
  4. Дополню отдельно по поводу тестового скрипта, личное наблюдение, при rand(101) флуктуации желаемого результата значительно ниже, чем при rand(100) - разброс значительно дальше уходит в обоих направлениях.
  5. не путай кол-во результатов и значения, которые они дают - это ваша ошибка, в нашем случае нас интересуют _только_ значения. ну и чтобы закрыть вопрос раз и навсегда: Кубик кидается 10000 раз для каждого варианта, значения имеют приблизительные результаты разброса от желаемого. На картинке проверял шанс в 30%. Результаты для других шансов совпадают. upd ps а, ну и я к вашим словам о том, что эта 1 имеет колосальное значение, с точки зрения математики результаты должны быть в диапозоне от 0 до 100, и думаю на этом вопрос можно закрыть, если вам лично не нравится эта 1, то исправьте для себя, мой учитель по вышке конечно бы на вас посмотре с укором, но вам есть до него дело?
  6. Похоже документацию читал плохо не я, а кто-то другой, ну да ладно, вот что нам говорит официальная документация по скриптам: rand(10) would result in 0,1,2,3,4,5,6,7,8 or 9 проще говоря rand(101) даст результат в диапозоне от 0 до 100 включительно. И да, 0 - это тоже результат, который должен учитываться, так же как и 100, но это уже вопрос к некоторым особенностям высшей математики.
  7. Неумение пользоваться goto не означает, что оно зло, все его боятся из-за риска создать цикличность, это кстати ещё в гайдах по Сям было написано, но вы то тоже самый умный и не читали их. А создание избыточных условий и функций для единственного вызова несут в себе куда большее зло, что в гайдах по тем же Сям имеется. А бросание кубика сделано правильно, можно сделать, как в афине 10000, но статистически процент совпадения будет почти одинаковый, с разницей не превышающей ~5%, что допустимо (провренно написанием скрипта в 1000 запросов тем и другим методом), плюс сотые в нашем вопросе не нужны (они банально не используются, так зачем?). 101 = rand(0,100) (сорц script.c смотреть: max-min+1), но на выполнение у афины уходит меньше времени у запроса с одним входящим, так зачем попу рвать? Можно назвать не нужной оптимизацией. И да, я очень умный, спасибо за комплимент но ещё я очень добрый и скромный, так что такие похвалы мне греют сердце.
  8. Я что-то на форуме не видел общей концепции скрипта/нпц, просто предложение за $ сделать что-то, а я говорю о том, что человек описывает подробно, что ему нужно, и желающие сами решают для себя делать или нет, брать за это денюжку или можно так. Я вот в свободное время может и хотел что-нибудь сделать, время бывает, возможности тоже есть, как и идеи, но мои идеи сложные и долгие, а тут может на час работы будет. И почему нет тогда?
  9. имхо, можно писать где-нибудь на форуме об идеи скрипта/нпц/квеста/ивента, если найдутся желающие сделать так или за плату - то сами отпишутся.
  10. вы один из тех огромных любителей даже для самых простых задач напихивать кучи ненужных конструкций из if/switch и создавать избыточность функций? А rand(101) вполне к месту. ps я по работе занимаюсь поддержкой чужих сорцов, костылей из кучи функций для вызова 1 раз за всё время работы и конструкций из 15-20 if/switch уже навидался. Спасибо, goto - идеальное решение.
  11. [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 Комментируем и снимаем блоки комментариев по необходимости.
  12. Решил вспомнить молодость, глянь насколько тебе подойдёт. Разрешённые предметы прописывать в OnInit: setarray .allowed[0],1163,2280; Прописан клеймор и саккат, если первым числом идёт 0, то будут допустимы все предметы, потом может чёрный список добавлю. Цены там же в OnInit: setarray .price[0],5000,5000,10000,15000,25000,50000; Самая первая цена - для бронек и акссесуаров (у них всегда уровень 0). Шанс поломать предмет: set .breakrate, 30; от 0 до 100, я тут погонял и вроде идеально всё-таки 50. Диалоги с кучей отсебятины, карточки и подписанные предметы не корёжит, небольшие проверки на читерство присутствуют.
  13. А в чём принцип работы нпц должен быть? Приходит игрок, выбирает вещь для заточки и кузнец рандомно её затачивает? Подробнее, если можно, а то стало интересно.
  14. Если у вас реневал, то в npc/re/scripts_main.conf, если не реневал, то npc/pre-re/scripts_main.conf должна быть строчка: import: npc/scripts_custom.conf по пути в файле: npc/scripts_custom.conf должны быть прописаны уже ваши npc, что-то вроде такого: npc: npc/custom/customnpc.txt если не разберётесь, то нужно смотреть указанные файлы и что в них прописано.
  15. Полагаю, что непрописана подгрузка кастом npc и всё, нужно смотреть, если реневал, то открыть npc/re/scripts_main.conf и проверить есть ли там загрузка scripts_custom.conf ну и вообще пути проверить к файлам.
  16. Не совсем понимаю, вы прописываете в какой-нибудь npc/scripts_custom.conf путь до npc, запускаете сервер и делаете load или вы прописываете путь для уже работающего сервера и делаете load в самой игре? ps штатные телепаты в отпуске, Санасол как всегда им з/п зажимает, так что подробно: ревизия афины, как чего и куда прописываете (подробно, идеально - прикрепить файлы к посту), что и куда вводите - дословно, если есть - логи мап-серва.
  17. Хорошие идеи не у одного вас пропадают, так что не стоит обижаться на то, что никто не желает помочь или разбираться.
  18. Я когда-то писал API с примерами, если пригодится, то вот эта тема.
  19. Зачем к бд кучу запросов? Делайте запись в переменную аккаунта и всё. Выше уже писали. В самих скриптах идея с созданием массивов с текстом даже очень интересная.
  20. Я бы сказал, что это весьма не лучший способ, т.к. запрос к БД через скрипты очень медленный, а вообще покопаться можно в примерах mysql запросов, вам полагаю достаточно использовать LIMIT (добавляется в конце запроса). В доках скриптов вполне неплохой пример имеется.
×
×
  • Создать...
Яндекс.Метрика