Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Как Лучше Написать?
d`ArcZeal
сообщение 12.5.2009, 19:56
Сообщение #1


**********

Elder
Сообщений: 2.979
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7050
Пользователь №: 4.522
Возраст: 34



Формула попадания: при 0% тактики, шанс попасть по противнику 0%, при 150% - шанс 100%.
Я написал так:
Код

IF (<EVAL {1 1500}> > (<TACTICS> + {1 1500}))
        DORAND 2
        SOUND=562
        SOUND=563
        ENDDO
        sysmessage @0487 Вы промахнулись.
        SRC.SAY @3500 0
        return 1
ENDIF

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

Пожелание:
Такая формула, при которой нанося удар, было прямо видно (персонаж говорит, или выводится сообщение): 38% шанс попасть, 98%, 100% и тд. (IMG:style_emoticons/default/smile.gif)


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 12.5.2009, 21:08
Сообщение #2


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



Цитата(d`ArcZeal @ 12.5.2009, 17:56) *

Формула попадания: при 0% тактики, шанс попасть по противнику 0%, при 150% - шанс 100%.
IF (<EVAL {1 1500}> > (<TACTICS> + {1 1500}))
Не чего не имею против этой формулы, но где же тут шанс 0 при 0% скилла? Он же 50% будет. (IMG:style_emoticons/default/smile.gif)
Вообще для формулами для комбата нужно много думать, но если говорить о самой простой - это прямая пропорция.
IF (<R1500> > <EVAL <TACTICS>>)
шанс, если он тебе зачем-то нужен <EVAL <EVAL <TACTICS>>/15>%.
Ну а если что-то сложное выдумывать, тогда нужно писать - чего хочешь...


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Narciruss
сообщение 12.5.2009, 21:28
Сообщение #3


******

ужас какой
Сообщений: 653
Регистрация: 12.2.2005
Группа: Пользователи
Наличность: 0
Из: Москва
Пользователь №: 3.050



Пользуйся уже не <Eval {0 10}>
а простым <R0,10>

(IMG:style_emoticons/default/smile.gif))

Да и вообще, зачем парсер нагибать всякими TACTICS?
есть же номера (IMG:style_emoticons/default/smile.gif) 10,12 и тп %)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 12.5.2009, 22:01
Сообщение #4


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



Цитата(Narciruss @ 12.5.2009, 19:28) *

Да и вообще, зачем парсер нагибать всякими TACTICS?
есть же номера (IMG:style_emoticons/default/smile.gif) 10,12 и тп %)
Например для того, чтобы этими номерами не нагибать собственный мозг. Если выбирать между парсером и мозгом, я определенно выбираю мозг. (IMG:style_emoticons/default/smile.gif) Еще это намного повышает шанс бага: название скилла ты вряд ли спутаешь, а номер - запросто.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 12.5.2009, 22:13
Сообщение #5


**********

Elder
Сообщений: 2.979
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7050
Пользователь №: 4.522
Возраст: 34



Да, забыл при 0% шанса 50% шанс попасть, ну это чтобы хоть играть можно было.

Цитата(wap @ 12.5.2009, 22:08) *

IF (<R1500> > <EVAL <TACTICS>>)
шанс, если он тебе зачем-то нужен <EVAL <EVAL <TACTICS>>/15>%.

Код

sysmessage @0487 <EVAL <EVAL <TACTICS>>/15>%.
IF (<R1500> > <EVAL <TACTICS>>)
        DORAND 2
        SOUND=562
        SOUND=563
        ENDDO
        sysmessage @0487 Вы промахнулись.
        SRC.SAY @3500 0
        return 1
ENDIF

Так, уже лучше, и понятней.
Но а как быть, если при 0% шанс уже 50% и потом постепенно повышается?


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 12.5.2009, 22:45
Сообщение #6


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



IF ((<R3000>-1500) > <EVAL <TACTICS>>)
<EVAL (<EVAL <TACTICS>>+1500)/30>%.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Narciruss
сообщение 13.5.2009, 1:30
Сообщение #7


******

ужас какой
Сообщений: 653
Регистрация: 12.2.2005
Группа: Пользователи
Наличность: 0
Из: Москва
Пользователь №: 3.050



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

(IMG:style_emoticons/default/smile.gif)) а если понадобиться перебрать все 55 скилла через for? %))
ИМХО - лучше бедный парсер в таких глупых местах не трахать, создавая проверки типа
if <local._for> == 0

нежели такого рода:

If StrMatch("Alch*",<Local._for>)

(IMG:style_emoticons/default/smile.gif) чтобы потом трахнуть парсер по полной, в тех местах, где это действительно требуется.

Строки всегда дольше сверяются, нежели числа.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 13.5.2009, 9:03
Сообщение #8


**********

Elder
Сообщений: 2.979
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7050
Пользователь №: 4.522
Возраст: 34



Спасибо за помощь, мне понравился вариант писать так:
Код

sysmessage @0487 Шанс попасть: <EVAL <EVAL <TACTICS>>/15>%.
IF <R1500> > (<EVAL (<TACTICS>> + {1 1500})))
        DORAND
        SOUND=562
        SOUND=563
        ENDDO
        sysmessage @0487 Вы промахнулись.
        SRC.SAY @3500 0
        return 1
ENDIF


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 13.5.2009, 15:42
Сообщение #9


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



Цитата(Narciruss @ 12.5.2009, 23:30) *

(IMG:style_emoticons/default/smile.gif)) а если понадобиться перебрать все 55 скилла через for? %))
Вот когда понадобится, тогда и разговор будет. А пока тут никто все скиллы не переберает.
d`ArcZeal'у: % только не забудь поправить, показываемый. И еще, если интересно, зачем я вообще предложил тебе другую формулу... Просто 2 рандома, когда и 1 вполне хватает - не очень круто.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Narciruss
сообщение 13.5.2009, 15:53
Сообщение #10


******

ужас какой
Сообщений: 653
Регистрация: 12.2.2005
Группа: Пользователи
Наличность: 0
Из: Москва
Пользователь №: 3.050



Ну понятно (IMG:style_emoticons/default/smile.gif)
На этих бордах вообще ни единого аргументировано диалога невозможно провести, всё упирается в "когда понадобиться", "так веле господь бох" ... %)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 13.5.2009, 16:15
Сообщение #11


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



Цитата(Narciruss @ 13.5.2009, 13:53) *

Ну понятно (IMG:style_emoticons/default/smile.gif)
На этих бордах вообще ни единого аргументировано диалога невозможно провести, всё упирается в "когда понадобиться", "так веле господь бох" ... %)
Где именно тебя не устраивает моя аргументация? Насчет обращения к конкретному скиллу через номер, я ответил, что не знаю кому как, а мне влом запоминать наизусть все скиллы, спеллы и.т.д. Не развалится сфера, если сама определит. Да еще мне не очень нравится, что 1 цифорка не так, и все - будет баг, при том ошибки выдаваться не будет.
Что касается перебора, да, переберать нужно по номерам(если, конечно ALLSKILLS не годится), но обьясни, какое отношение это имеет к теме? С таким же успехом ты мог написать, что количество гп нужно писать цифрой. Кстати, если переберать ВСЕ скиллы, то запоминать конкретные номера опять же не надо...


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Narciruss
сообщение 13.5.2009, 16:33
Сообщение #12


******

ужас какой
Сообщений: 653
Регистрация: 12.2.2005
Группа: Пользователи
Наличность: 0
Из: Москва
Пользователь №: 3.050



да нахрена вообще что-то держать в голове? есть списки (IMG:style_emoticons/default/smile.gif)) у меня на втором мониторе всегда список всяких скиллов или def'ов (IMG:style_emoticons/default/smile.gif)

запоминать вообще нехрена не надо (IMG:style_emoticons/default/smile.gif) я с трудом могу написать названия многих скиллов правильно, поэтому проще и себя и сферу не насиловать (IMG:style_emoticons/default/smile.gif)

пля, у меня переписанный скилл-гейн, потому что в куй не уперлась системка RATE'ов сферовская (IMG:style_emoticons/default/smile.gif)

On=@SkillSuccess
If <Argn> == 0
Say This is Alchemy!
<Argn>+=0.1
else
This is <Serv.Skill.<Argn>.Name>!
Endif
return 1

Гораздо проще поддавать все контролю использую вот именно такого типа конструкции (IMG:style_emoticons/default/smile.gif)

Но это опять же я так делаю, у вас наверное другие задачи =)
Я просто ленивый, и мне проще писать единые функции (генерация лута у НПС-ов, Скилл-гейны и тд).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 13.5.2009, 16:49
Сообщение #13


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



Цитата(Narciruss @ 13.5.2009, 14:33) *

да нахрена вообще что-то держать в голове? есть списки (IMG:style_emoticons/default/smile.gif)) у меня на втором мониторе всегда список всяких скиллов или def'ов (IMG:style_emoticons/default/smile.gif)

запоминать вообще нехрена не надо (IMG:style_emoticons/default/smile.gif) я с трудом могу написать названия многих скиллов правильно, поэтому проще и себя и сферу не насиловать (IMG:style_emoticons/default/smile.gif)

пля, у меня переписанный скилл-гейн, потому что в куй не уперлась системка RATE'ов сферовская (IMG:style_emoticons/default/smile.gif)

On=@SkillSuccess
If <Argn> == 0
Say This is Alchemy!
<Argn>+=0.1
else
This is <Serv.Skill.<Argn>.Name>!
Endif
return 1

Гораздо проще поддавать все контролю использую вот именно такого типа конструкции (IMG:style_emoticons/default/smile.gif)

Но это опять же я так делаю, у вас наверное другие задачи =)
Я просто ленивый, и мне проще писать единые функции (генерация лута у НПС-ов, Скилл-гейны и тд).
В бошке держать для того чтобы не лезть в дефс на каждой команде. Названия скиллов я помню, а если и ошибусь, скрипт сразу на тесте выдаст ошибку и можно будет исправить.
Дальше по 3 разу пошло... Такое ощущение, что ты мои ответы и не читаешь. Повторяю еще раз.
Я НЕ ИМЕЮ НИЧЕГО ПРОТИВ ТАКИХ КОНСТРУКЦИЙ, В ОБЩЕГО ТИПА СКРИПТАХ ЭТО ПРАВИЛЬНО И ГРАМОТНО, НО В ЭТОЙ ТЕМЕ НИКАКОГО ОБЩЕГО СКРИПТА НЕ БЫЛО, НУЖНО БЫЛО ОБРАТИТСЯ К 1 КОНКРЕТНОМУ СКИЛЛУ. Плюс еще добавлю, если тебе лично удобнее писать через номера, ничего, конечно, плохого тут нет, но у меня есть большие сомнения, что так надо писать всем.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Narciruss
сообщение 13.5.2009, 16:51
Сообщение #14


******

ужас какой
Сообщений: 653
Регистрация: 12.2.2005
Группа: Пользователи
Наличность: 0
Из: Москва
Пользователь №: 3.050



ок ок (IMG:style_emoticons/default/smile.gif))))))))
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 13.5.2009, 17:14
Сообщение #15


**********

Elder
Сообщений: 2.979
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7050
Пользователь №: 4.522
Возраст: 34



Наверное последний вопрос.
Код

IF (<EVAL {1 1500}> > (<TACTICS> + {1 1500}))
        DORAND 2
        SOUND=562
        SOUND=563
        ENDDO
        sysmessage @0487 Вы промахнулись.
        SRC.SAY @3500 0
        return 1
ENDIF

Как будет выглядеть сообщение, показывающее в % шанс попасть?


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 13.5.2009, 17:34
Сообщение #16


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



Если там у тебя прямая пропорция выходит, то так же, как и кидал:
Код

sysmessage @0487 <EVAL (<EVAL <TACTICS>>+1500)/30>%
Если нет(но вроде да), то вычислять его довольно сложно и для игроков тоже такая сойдет.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 13.5.2009, 17:52
Сообщение #17


**********

Elder
Сообщений: 2.979
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7050
Пользователь №: 4.522
Возраст: 34



Супер.

А вот как сообщение должно выглядеть для парринга?
Код

IF ((<SRC.PARRYING> + {0 900}) > <R6000>)
            SOUND=566
            sysmessage @0487 Противник блокировал удар.
            SRC.sysmessage @0487 Вы блокировали удар.
            SRC.SAY @3500 0
            SRC.SKILLGAIN_Parrying
            RETURN 1
            RETURN 0
ENDIF

При 0% парринга шанс 15% блокирования. При 150% - 25%. А вот сообщение как написать, не втыкаю. (IMG:style_emoticons/default/mellow.gif)


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Wap
сообщение 13.5.2009, 18:06
Сообщение #18


**********

Администратор Форума
Сообщений: 3.010
Регистрация: 22.12.2006
Группа: Администраторы
Наличность: 31903
Пользователь №: 9.227



Чтоб сделать формулу прямой пропорции достаточно все подобрать так, чтобы при обоих значениях был верный результат. y=px+q - прямая(строится из 2 точек), так что если писать главный аргумент 1 раз и использовать только знаки "+","-","*",":" ничего другого и не получится, что нам и нужно.
Подбираем сначала, чтоб при 0 значение было 15 - просто пишем
(15+<EVAL <PARRYING>>) - пол работы сделано. Теперь нужно, чтобы при 150 парринга, формула давала 25.
(15+<EVAL <EVAL <PARRYING>>/150>) - вот и все. Готово.



П.с. Возможно внутренний EVAL - лишний. Просто я точно знаю что и для получения скилла в нормальном виде и для знака / он точно нужен. Хватит ли верхнего, точно не помню, поэтому пишу так, чтоб точно работало.


--------------------
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
d`ArcZeal
сообщение 13.5.2009, 18:53
Сообщение #19


**********

Elder
Сообщений: 2.979
Регистрация: 27.11.2005
Группа: Пользователи
Наличность: 7050
Пользователь №: 4.522
Возраст: 34



Спасибо.
Если кому интересно, что получилось в итоге:
Код

IF (<SRC.findlayer.2.type> == t_shield) && (<SRC.NPC>==0)
//SRC.sysmessage @0487 Шанс блокировать удар: (15+<EVAL <EVAL <PARRYING>>/150>)%
ELIF ((<SRC.PARRYING> + {0 900}) > <R6000>)
    SOUND=566
    sysmessage @0487 Противник блокировал удар.
    SRC.sysmessage @0487 Вы блокировали удар.
    SRC.SAY @3500 0
    SRC.SKILLGAIN_Parrying
    SRC.ANIM 30
    RETURN 1
    RETURN 0
ENDIF

//sysmessage @0487 Шанс попасть по противнику: <EVAL (<EVAL <TACTICS>>+1500)/30>%
IF (<R1500> > (<TACTICS> + {0 1500}))
    DORAND 2
    SOUND=562
    SOUND=563
    ENDDO
    sysmessage @0487 Вы промахнулись.
    SRC.SAY @3500 0
    SRC.ANIM 20
    SRC.SKILLGAIN_Tactics
    return 1
ENDIF


--------------------
Olmer online administrator
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 10.7.2025, 20:59
Designed by Nickostyle