Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Sphere Server 0.56 - Sphere X _ Помогите разобратся

Автор: Новичёк 20.12.2017, 21:52

Помогите понять как это всё вычисляется и происходит
Хочу сделать чтоб с монстра падали редко эти боксы, я так понимаю это в rand надо менять там где 87 либо меньше либо больше? ну я ставил и так и так и всё равно небыло ни какого результата, а я бы хотел сделать чтоб бокс выпадал примерно 20% шанс его найти.
Второй вопрос как сделать так чтоб в этом же боксе вешь выпадала тоже редко?

Код
[FUNCTION DROPPANDORA]
IF (<TAG0.PH>==1)
    IF (<STR> < 101) && (rand(99)>87) //13%
        SERV.NEWITEM i_box_pandora
        NEW.TAG.LEVEL=1
        STATSCOUNT PANDORA,1
        STATSCOUNT PANDORA<NEW.dTAG0.LEVEL>,1
        NEW.COLOR=0488
        NEW.BOUNCE


Это уже вещи из бокса
Код

[FUNCTION f_generate_arts]
    IF (rand(200) < <eval <tag0.box_lvl>*2>)
        DORAND 24
            NEWITEM i_Serpent_dagger
                ENDDO
        NEW.TAG.LOOT=1
        NEW.TAG.IDE=1000
        NEW.BOUNCE
    ELIF (rand(125) < <eval <tag0.box_lvl>*2>)
        DORAND 48
            NEWITEM i_amulet_fire

Автор: $yst3m_3rr0r 21.12.2017, 0:25

Цитата(Новичёк @ 20.12.2017, 22:52) *

а я бы хотел сделать чтоб бокс выпадал примерно 20% шанс его найти.

Код
[FUNCTION DROPPANDORA]
IF (<TAG0.PH>==1)
    IF (20 > <R100>) //20%
        SERV.NEWITEM i_box_pandora
        NEW.TAG.LEVEL=1
        STATSCOUNT PANDORA,1
        STATSCOUNT PANDORA<NEW.dTAG0.LEVEL>,1
        NEW.COLOR=0488
        NEW.BOUNCE



Цитата
Второй вопрос как сделать так чтоб в этом же боксе вешь выпадала тоже редко?

Код
[FUNCTION f_generate_arts]
    IF (RAND(200) < <EVAL <TAG0.box_lvl>*2>)
    
        DORAND 24
            NEWITEM i_Serpent_dagger
        ENDDO
                
        NEW.TAG.LOOT=1
        NEW.TAG.IDE=1000
        NEW.BOUNCE
        
    ELIF (RAND(125) < <EVAL <TAG0.box_lvl>*2>)

        DORAND 48
            NEWITEM i_amulet_fire
        ENDDO


А, конкретнее ? У вас и так не плохо ... Если случайное число от ( 0 - 200 ) меньше чем уровень клада * 2 ... Дальше шанс 1 из 24 что выпадет Serpent_dagger .... Ты сам то как хочешь ?

Автор: Pickaxe 21.12.2017, 20:36

там походу надо не только в одном месте корректировать шансы... видеть бы более скрипт чтоб окончательно понять.

Автор: Новичёк 23.12.2017, 13:33

ребят,я бы хотел чтоб шанс был минимум... где-то 3%

Автор: Новичёк 24.12.2017, 13:21

поможет кто нибудь?

Автор: Atheist 24.12.2017, 15:11

вникай в математику, меняй формулу
тут ничего особенного нет и за тебя это делать вряд ли кто станет

Автор: $yst3m_3rr0r 25.12.2017, 0:32

Цитата(Новичёк @ 23.12.2017, 14:33) *

ребят,я бы хотел чтоб шанс был минимум... где-то 3%


Ты просил
Цитата
я бы хотел сделать чтоб бокс выпадал примерно 20% шанс его найти.

Я тебе написал ответ:
Код
IF (20 > <R100>) //20%
Ну, так поменяй число на то, которое тебе угодно ...

Автор: Новичёк 4.1.2018, 16:34

Цитата($yst3m_3rr0r @ 24.12.2017, 23:32) *

Ты просил
Я тебе написал ответ:
Код
IF (20 > <R100>) //20%
Ну, так поменяй число на то, которое тебе угодно ...

спасибо,понял, получилось!
Еще вопрос а как здесь уменьшить дроп золота?

Код
[function loot_gold]
IF (<tag0.ph>==1)
    tag.amount=(((<str>*27)/10)+(<str>/<eval({10 15})>))
ELIF (<TAG0.LOST>==1)
    tag.amount=(((<str>*60)/10)+(<str>/<eval({10 15})>))
ELSE
    tag.amount=(((<str>*18)/10)+(<str>/<eval({10 15})>))
ENDIF

STATSCOUNT GOLD,<tag.amount>

WHILE (<TAG0.AMOUNT> )
    NEWITEM i_gold
    IF (<TAG.AMOUNT> > 64999)
        NEW.AMOUNT=65000
        TAG.AMOUNT -= 65000
    ELSE
        NEW.AMOUNT=<TAG.AMOUNT>
        TAG.AMOUNT=
    ENDIF
    NEW.BOUNCE
ENDWHILE


убрал IF (<TAG.AMOUNT> > 64999) до 20000 он мне вообще пыдает и +65к и 20к
а хочу сделать чтоб максимум от 1к до 4к падало..
Извини если туплю, только учусь smile.gif

и здесь почему то так же меняю вроде бы ставлю Rand 100 чтоб редко падало но всё равно падает часто, ставишь наоборот чтоб каждый раз падало все равно падает как и было, тоисть меняй как хочешь а остается как было с самого начало! в чём загвоздка?
Код
IF (rand(20)==1)
        DORAND 8
            NEWITEM i_elfian_cloak
            NEWITEM i_elfian_sandals
            NEWITEM i_elfian_ringmail_tunic
            NEWITEM i_elfian_ringmail_gloves
            NEWITEM i_elfian_ringmail_sleeves
            NEWITEM i_elfian_ringmail_leggings
            NEWITEM i_elfian_bow
            NEWITEM i_elfian_mustang
        ENDDO
        NEW.TAG.LOOT=1
        NEW.TAG.IDE=1000
        NEW.BOUNCE
        STATSCOUNT ELFITEM,1
    ENDIF
    RETURN 0

Автор: Mirage 5.1.2018, 6:55

1) IF (<TAG.AMOUNT> > 64999)
NEW.AMOUNT=65000
TAG.AMOUNT -= 65000
ELSE

это защита "от дурака". Сфера не умеет "делать" кучки больше 16-тиричных FFFF тоесть 65535. Но "считать" умеет. По этому если надо создать кучку в, скажем, 80000 она создаст 2 кучки - 65000 и (80000-65000=) 15000.

Что бы уменьшить количество тебе надо править формулу
tag.amount=(((<str>*27)/10)+(<str>/<eval({10 15})>))
это зависимость от силы. Либо уменьшай силу моба либо увеличивай делитель

Вообще мне это напоминает японские рпг с их 9999 левелами, уроном в 20000 и 88888888 жизнями. По дефолту золото весит не 0. По этому все хранится на виртуальном счете в банке в виде цифирок а не кучек. И снимается нужное количество либо чеком либо небольшой кучкой. А с мобов и сокровищ падает максимум пара тысяч золотых. Но фришардникам всего мало по этому и приходится так заплатить. И появились мобы с тысячами единиц лута и сотнями тысячами золотых в карманах. И персонажи наносящие по 10000 урона на крите.

2) IF (rand(20)==1)
если случайно взятое число от 0 до 20 равно числу "1" (шанс 1к20)
IF (rand(100)==1)
если случайно взятое число от 0 до 100 равно числу "1" (шанс 1к100)
DORAND 8
выпадает один из 8 нижеперечисленных предметов

Автор: Новичёк 5.1.2018, 12:10

Цитата(Mirage @ 5.1.2018, 5:55) *

1) IF (<TAG.AMOUNT> > 64999)
NEW.AMOUNT=65000
TAG.AMOUNT -= 65000
ELSE

это защита "от дурака". Сфера не умеет "делать" кучки больше 16-тиричных FFFF тоесть 65535. Но "считать" умеет. По этому если надо создать кучку в, скажем, 80000 она создаст 2 кучки - 65000 и (80000-65000=) 15000.

Что бы уменьшить количество тебе надо править формулу
tag.amount=(((<str>*27)/10)+(<str>/<eval({10 15})>))
это зависимость от силы. Либо уменьшай силу моба либо увеличивай делитель

Вообще мне это напоминает японские рпг с их 9999 левелами, уроном в 20000 и 88888888 жизнями. По дефолту золото весит не 0. По этому все хранится на виртуальном счете в банке в виде цифирок а не кучек. И снимается нужное количество либо чеком либо небольшой кучкой. А с мобов и сокровищ падает максимум пара тысяч золотых. Но фришардникам всего мало по этому и приходится так заплатить. И появились мобы с тысячами единиц лута и сотнями тысячами золотых в карманах. И персонажи наносящие по 10000 урона на крите.

2) IF (rand(20)==1)
если случайно взятое число от 0 до 20 равно числу "1" (шанс 1к20)
IF (rand(100)==1)
если случайно взятое число от 0 до 100 равно числу "1" (шанс 1к100)
DORAND 8
выпадает один из 8 нижеперечисленных предметов


теперь доходчиво и чётко! разобрался,Спасибо большое!:)

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)