Рандомный респ Мвп, миф или реальность???

Тема в разделе "Игровые вопросы", создана пользователем Reanimatori, 14 июл 2008.

  1. toroko

    toroko Игрок

    вооот!
    мин.время+random(макс.время) возможен случай что получится (мин время+макс время)
    т.к. макс.время зачастую больше мин.время в 2 раза, то среднее (мин время+макс время) получается равным макс.время
  2. Billy Spleen

    Billy Spleen Игрок

    Почему среднее? Берётся псевдослучайное значение.
  3. toroko

    toroko Игрок

    среднее значение по теории вероятности равно половине
    60 мин + (120 мин)/2 = 120
    я имел ввиду это

    p.s. анализ данных респа мобов подсказывает мне, что вычисление времени респа должно быть
    Код:
    spawntime = md->spawn->delay1; //Base respawn time
    	if (md->spawn->delay2) //random variance
    		spawntime-= rand()%md->spawn->delay2
    знак минус!!
  4. Billy Spleen

    Billy Spleen Игрок

    Т.е. многие мвп должны ресаться моментально?
    это НЕ среднее значение. Это псевдослучайное значение.
  5. usver

    usver Игрок

    да ну чего спорить ...давайте собирёмся и перепишим код игры в целом!!! =)
  6. X

    X Играет за мобов
    Команда форума

    Если диапазон кто-то писал в файлах, где фиксируется респаун монстров, почему функция респауна, которая не изменялась годами, вдруг перестанет работать?
    Код:
       pay_fild11,0,0,0,0    monster    Eddga    1115,1,7200000,3600000,1
    3600000 - delay1
    7200000 - delay2

    Код:
         spawntime = md->spawn->delay1; //Base respawn time
         if (md->spawn->delay2) //random variance
              spawntime+= rand()%md->spawn->delay2;
    delay1 - переменная, отвечающая за базовый респаун-тайм.
    Если она не указывается, Spawntime становится равен 5-ти секундам(по умолчанию):
    Код:
         if (spawntime < 5000) //Min respawn time (is it needed?)
              spawntime = 5000;
    Если помимо delay1 указывается переменная delay2, которая и играет роль конечного числа диапазона, Spawntime расчитывается исходя из формулы:
    Код:
    spawntime+= rand()%md->spawn->delay2;
    То есть - delay1 + псевдослучайное значение, диапазон выбора которого ограничивается переменной delay2.
    Это может быть delay1+1, и тогда респаун практически будет = delay1.
    Это может быть delay1+120, и тогда респаун будет довольно продолжительным и долгим.
    Это может быть любое число до значения delay2. Никакие средние здесь роли не играют.
    Это псевдослучайное число. Это тот самый "рэндом", о котором и идёт речь.
  7. toroko

    toroko Игрок

    макс.время минус мин.время
  8. X

    X Играет за мобов
    Команда форума

    Откуда Вы определили данную формулу?
    Мин. время плюс рандомное число, ограничиваемое макс. временем.
  9. Billy Spleen

    Billy Spleen Игрок

    3символа
  10. toroko

    toroko Игрок

    тогда значит время респавна эддги не 60мин~120мин как вы ранее говорили, а 60мин~180мин
    тогда признаю неверность своего вывода выше
  11. salvador

    salvador Игрок

    ппц, какие бы я сейчас размышления тут навел... если бы хоть что нить понимал, а то температура 40 не располагает к мыслительным процессам =(
  12. toroko

    toroko Игрок

    вобще наличие такого текста в файле script_commands.txt наводит на еще более странные размышления:
    действительно, погода не располагает к мышлению, посему удаляюсь
  13. pogo

    pogo Игрок

    На примере
    Код:
    pay_fild11,0,0,0,0    monster    Eddga    1115,1,7200000,3600000,1
    получается, что spawntime = delay1 + random(delay2) = 1 час + 0-2 часа
    то есть, возможне респ от 1 часа до 3х, что неверно.
    А если предположить, что delay1 - максимальное время (этому соответствует порядок этих чисел в описании респауна моба), тогда, если функция rand() выдает числа от 0 до 1, все встает на свои места:
    spawntime = delay1 + random(delay2) = 2 час + маленькое_число%1_час (остаток от деления) = 2 часа
    И так у любого моба/мвп.
    Факт, что до обнолений был фиксированый респ мвп, простому игроку врятли удастся доказать, но факты свидетельствующих этому очень много (киель 2 часа, анг гост 1 час, дев 2 часа, вальки 30 мин на 3 мапе, гтб час - это только с моего опыта), как сейчас не знаю.

    Update:
    ну вот, в предыдущем посте показано что delay1 - макс время.
  14. Billy Spleen

    Billy Spleen Игрок

    0 - 32767 afaik .
    "%" не заметил, спасибо.
  15. pogo

    pogo Игрок

    от 0 до 1 - это 1 из вариантов - почему респ фиксированный.
    А так:
    Код:
    Header File
    
    stdlib.h 
    
    Category
    
    Math Routines
    
    Prototype
    
    int rand(void);
    
    Description
    
    Random number generator.
    
    rand uses a multiplicative congruential random number generator with period 2 to the 32nd power to return successive pseudo-random numbers in the range from 0 to RAND_MAX. The symbolic constant RAND_MAX is defined in stdlib.h.
    
    Return Value
    
    rand returns the generated pseudo-random number.
    Возращает число от 0 до RAND_MAX.
    Код:
    /* Maximum value returned by "rand" function
    */
    #define RAND_MAX  0x7FFFU
    Это и есть 32767 милисекунд. Фактически респ макс_время + 0-32 секунд.
  16. X

    X Играет за мобов
    Команда форума

    Я делаю предположение, что закон рандомности spawntime не распространялся на то время, когда сервер располагался на машине с Win2k3. Сейчас он работает на Unix, и как мы видим, появились жалобы на рандомность спавна.

    *размышляет*.
  17. Lord-Woolf

    Lord-Woolf Игрок

    скоко букафак... скоко цифарак...) Вам это очень важно ? Если да и вы уверены что что-то работает не так, то писать надо на форуме ежафины а не тут.) Но это имхо. ДА и думаю это не так важно... хотя мвп килерам все возможно
  18. Billy Spleen

    Billy Spleen Игрок

    Видимо, оно так и должно работать :)
  19. toroko

    toroko Игрок

    слишком большими были числа? (мсек) (в 16 бит не влезали а в 32 бит влазят)
  20. Fungineerka

    Fungineerka Игрок

    Не знаю как на корейском оффе, но на раггейме, на русро респ фиксированный, так что врят ли все дело в том, на чем работает серв.