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

wl.illusion

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

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

  • Посещение

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

    11

Сообщения, опубликованные wl.illusion

  1. Наглядные графики и пояснения.

    result_rand100-1ml.png

    rand(1,100) и 1 миллион запросов, кучность неплохая.

    result_rand101-1ml.png

    rand(101) заметное смещение на 0.1% (да-да, ровно так выглядит смещение в 0.1%)

    result_rand100-1billion.png

    rand(1,100) и один миллиард запросов, по непонятным мне причинам разброс сглаживается и распределяется равномернее (результаты с отклонением выше 1.5% не учитывались при построение графика).

    result_rand101-1billion.png

    rand(101) и один миллиард запросов, на глаз определить разницу не удалось, но присутствует всё то же отклонение в -0.1%

    использование rand(100) давало смещение в лучшую сторону:

    result_rand100-1billion_2.png

    на глаз это не сильно заметно, но смещение в сторону удачного выпадения есть на 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), тут если не читали гайды о правильном программирование, то о чём речь вообще?

  2. чем плох переход по лейбел?

    Споры про goto так же сильны как споры о религии, почти любой форум по программированию забит срачами на тему, что goto это low и им нельзя пользоваться. Правда основные два тезиса, которые выдвигают противники goto мягко говоря сомнительны:

    1. goto портит структурный вид кода

    2. goto может создать dead infinity loop

    Ну, если программист с руками из жопы, то конечно на один из этих пунктов он нарвётся, а то и на оба. На хабре было пару хороших статей в защиту goto и судя по выносу кармы крикунов о том, что goto зло - можно сказать, что большинство поддерживает умеренное использование явных переходов.

    А так, вообще в любом даже крупном и крутом проекте используются goto. Парочка, но есть.

  3. Итак, я веру в местное сообщество малость потерял (без обид, это личное мнение), так что не думаю, что кто-то поймёт и вот эти данные (а тут кроме меня вообще кто-то проверят свои алгоритмы в стресс-тестах?):

    rand100and101minmax.png

    Для вас терпел пол миллиарда запросов (да это чертовски долго), суть картинки отображение максимальных и минимальныйх отклонений от желаемого значения (в нашем случае 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. Сам себе противоречишь.

    Давай по пальцам: rand()%10 вернет нам 10 возможных результатов, включая 0.

    Математик хренов.. <_<

    не путай кол-во результатов и значения, которые они дают - это ваша ошибка, в нашем случае нас интересуют _только_ значения.

    ну и чтобы закрыть вопрос раз и навсегда:

    rand100and101.png

    Кубик кидается 10000 раз для каждого варианта, значения имеют приблизительные результаты разброса от желаемого. На картинке проверял шанс в 30%. Результаты для других шансов совпадают.

    upd ps а, ну и я к вашим словам о том, что эта 1 имеет колосальное значение, с точки зрения математики результаты должны быть в диапозоне от 0 до 100, и думаю на этом вопрос можно закрыть, если вам лично не нравится эта 1, то исправьте для себя, мой учитель по вышке конечно бы на вас посмотре с укором, но вам есть до него дело?

  6. При использовании '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, но это уже вопрос к некоторым особенностям высшей математики.

  7. И к какому же это месту тут 101?

    Давно это 1/101 = 1%? :D

    И насчет goto - даже в доках рафины есть про его использование.

    Но конечно же ты самый умный :lol:

    Неумение пользоваться goto не означает, что оно зло, все его боятся из-за риска создать цикличность, это кстати ещё в гайдах по Сям было написано, но вы то тоже самый умный и не читали их. А создание избыточных условий и функций для единственного вызова несут в себе куда большее зло, что в гайдах по тем же Сям имеется.

    А бросание кубика сделано правильно, можно сделать, как в афине 10000, но статистически процент совпадения будет почти одинаковый, с разницей не превышающей ~5%, что допустимо (провренно написанием скрипта в 1000 запросов тем и другим методом), плюс сотые в нашем вопросе не нужны (они банально не используются, так зачем?). 101 = rand(0,100) (сорц script.c смотреть: max-min+1), но на выполнение у афины уходит меньше времени у запроса с одним входящим, так зачем попу рвать? Можно назвать не нужной оптимизацией.

    И да, я очень умный, спасибо за комплимент :) но ещё я очень добрый и скромный, так что такие похвалы мне греют сердце.

  8. Он и отписался)

    Я что-то на форуме не видел общей концепции скрипта/нпц, просто предложение за $ сделать что-то, а я говорю о том, что человек описывает подробно, что ему нужно, и желающие сами решают для себя делать или нет, брать за это денюжку или можно так.

    Я вот в свободное время может и хотел что-нибудь сделать, время бывает, возможности тоже есть, как и идеи, но мои идеи сложные и долгие, а тут может на час работы будет. И почему нет тогда? :)

  9. goto yeah.png

    Ну и rand(101)

    вы один из тех огромных любителей даже для самых простых задач напихивать кучи ненужных конструкций из if/switch и создавать избыточность функций?

    А rand(101) вполне к месту.

    ps я по работе занимаюсь поддержкой чужих сорцов, костылей из кучи функций для вызова 1 раз за всё время работы и конструкций из 15-20 if/switch уже навидался. Спасибо, goto - идеальное решение.

    • Upvote 1
    • Downvote 1
  10. [NPC] Случайная заточка v1.02

    nt_randomrefine.png

    Вступление

    Выполнено по просьбе пользователя форума в этой теме.

    Описание

    Случайная заточка предметов из указанного списка с шансом сломать вещь (вещь ломается, а не удаляется навсегда, но если нужно, то можно удалить пару строк и предмет будет исчезать навсегда).

    Скачать

    Готовый 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

    Комментируем и снимаем блоки комментариев по необходимости.

    • Upvote 7
    • Downvote 1
  11. Решил вспомнить молодость, глянь насколько тебе подойдёт.

    Разрешённые предметы прописывать в OnInit:

     setarray .allowed[0],1163,2280;

    Прописан клеймор и саккат, если первым числом идёт 0, то будут допустимы все предметы, потом может чёрный список добавлю.

    Цены там же в OnInit:

     setarray .price[0],5000,5000,10000,15000,25000,50000;

    Самая первая цена - для бронек и акссесуаров (у них всегда уровень 0).

    Шанс поломать предмет:

     set .breakrate, 30;

    от 0 до 100, я тут погонял и вроде идеально всё-таки 50.

    Диалоги с кучей отсебятины, карточки и подписанные предметы не корёжит, небольшие проверки на читерство присутствуют.

    • Upvote 1
  12. http://ea-support.ws...862-wlillusion/ Именно так, но при этом она может сломаться, а так же можно было сново ее точить, пример дьябла роба заточилось на +5, далее ее можно переточить снова и опять же когда ее точим она точится от 0-10 а заточка +5 в повторной заточке не учавствует, т.е. Заточка +5 убирается и предмет точится как будто он небыл еще заточён.

    Ясно, забавная рулетка.

  13. :DB error-unknown column extended)vending_item in field list это может косатся что нпц пропадает?

    Вполне может быть, но это не из стандартной афины - какая-то модификация, и с ней я помочь не с могу.

    upd а вообще глянуть бы всё-таки на .conf и сам npc

  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

    если не разберётесь, то нужно смотреть указанные файлы и что в них прописано.

    • Upvote 1
  15. В данный момент на работе)поаробую объяснить так) в общем сервер рабочий и нпц на нем уже стояли.В script custom уже прописаны пути к ним тоесть от меня только требовалось сделал loadnpc после того как прописывала load npc и путь указывала он появляля .Но после выключения сервера либо релоаде он пропадает

    Полагаю, что непрописана подгрузка кастом npc и всё, нужно смотреть, если реневал, то открыть npc/re/scripts_main.conf и проверить есть ли там загрузка scripts_custom.conf ну и вообще пути проверить к файлам.

    • Upvote 1
  16. Не совсем понимаю, вы прописываете в какой-нибудь npc/scripts_custom.conf путь до npc, запускаете сервер и делаете load или вы прописываете путь для уже работающего сервера и делаете load в самой игре?

    ps штатные телепаты в отпуске, Санасол как всегда им з/п зажимает, так что подробно: ревизия афины, как чего и куда прописываете (подробно, идеально - прикрепить файлы к посту), что и куда вводите - дословно, если есть - логи мап-серва.

  17. вот сли в игре устанавливаешь значение #lang=1 То в базе

    account_id key index value

    2000001 #lang 0 1

    Следовательно, могу ли я при регистрации в эту же таблицу добавить номер аккаунта зарегистрированного и ему уже значение #lang занести в таблицу.

    Можешь.

  18. Это уже обсуждалось, если вы реализуете выбор языка к примеру на сайте, это ничего не даст. В любом случае в игре придется делать множество проверок (Запросов в базу), что не есть зер гуд.

    Зачем к бд кучу запросов? Делайте запись в переменную аккаунта и всё. Выше уже писали. В самих скриптах идея с созданием массивов с текстом даже очень интересная.

  19. Я бы сказал, что это весьма не лучший способ, т.к. запрос к БД через скрипты очень медленный, а вообще покопаться можно в примерах mysql запросов, вам полагаю достаточно использовать LIMIT (добавляется в конце запроса). В доках скриптов вполне неплохой пример имеется.

    • Upvote 1
×
×
  • Создать...
Яндекс.Метрика