76

Re: Приемы в Combots 8+

if(parseInt(top.Battle.oBattle.arrRes["krit"].innerHTML) > 9) && if(parseInt(top.Battle.oBattle.arrRes["block"].innerHTML) > 4)
   _name = "multi_hiddendodge";
помогите с условием. что я напутал ?

77

Re: Приемы в Combots 8+

спасибо, попоробую.

78

Re: Приемы в Combots 8+

SnaF пишет:

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

Попробуй вот такой вариант. У меня работает.

if((top.Battle.oBattle.oMySlot.nHP * 100 / top.Battle.oBattle.oMySlot.nMaxHP) < 33 && (top.Battle.oBattle.arrRes["spirit"].innerHTML) > 0)
    _name = "hit_willpower";
else
    _name = "hit_empower";

Тут если хп меньше 33 И дух больше 0 юзается "воля к победе", если хп больше 33 и дух меньше 0 (т.е. собственно 0) юзаются усиленные удары, которые ты можешь заменить на удачный удар (hit_luck), к примеру. Пробуй.


ZhEkA_BK пишет:

Вх, вот так должно работать

if((parseInt(top.Battle.oBattle.arrRes["krit"].innerHTML) > 9) && (parseInt(top.Battle.oBattle.arrRes["block"].innerHTML) > 4))
   _name = "multi_hiddendodge";

У меня так не сработало, начал искать причину, оказалось "(parseInt" писать не требуется, обрезаем сразу до "(top.Battle".

Отредактировано boltman (2010-01-07 22:57:36)

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

79

Re: Приемы в Combots 8+

У меня вот другой финт ушами не выходит..

if(typeof(top.Battle.oBattle.oMySlot.arrEffects["block_activeshield"]) != "object") && (top.Battle.oBattle.arrRes["spirit"].innerHTML) > 10)
_name = "spirit_block25";

Не хочет вот так юзать приём. Если убрать второе условие про дух >10, всё работает. Подскажите, что не так?

PS. Нужно, чтобы призрачка юзалась только при условии, что не висит активная защита И духа больше 10.

Отредактировано boltman (2010-01-08 00:58:04)

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

80

Re: Приемы в Combots 8+

Дело не в скобочке. Во-первых в шапке темы многие условия даны с одной скобкой, а во-вторых вот так

if(typeof(top.Battle.oBattle.oMySlot.arrEffects["block_activeshield"]) != "object")
_name = "spirit_block25";

всё работает, а вот так

if(typeof(top.Battle.oBattle.oMySlot.arrEffects["block_activeshield"]) != "object") && (top.Battle.oBattle.arrRes["spirit"].innerHTML) > 10)
_name = "spirit_block25";

нет.

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

81

Re: Приемы в Combots 8+

а помоему тут лишняя скобочка

!= "object")

Т.е. попробуй так :

if(typeof(top.Battle.oBattle.oMySlot.arrEffects["block_activeshield"]) != "object" && (top.Battle.oBattle.arrRes["spirit"].innerHTML) > 10)
_name = "spirit_block25";

Отредактировано d1sc0nn3ct (2010-01-08 01:28:52)

82

Re: Приемы в Combots 8+

2d1sc0nn3ct
Спасибо, дело было в той скобке после object. Последний вариант работает. wink

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

83

Re: Приемы в Combots 8+

ZhEkA_BK пишет:

boltman, ну незнаю, в этой же теме в 1м посте ParseInt есть, но спорить не буду.

Говоря проще ParseInt это команда "округлить до целого". При чём округление в меньшую сторону, то есть просто отбрасывается всё что после запятой. В большинстве ситуаций в нашем боте используются сравнения "больше" или "меньше" поэтому на результат отсутствие округления не повлияет. Но по человеческой логике проще оперировать целыми значениями. Тем более если вы вдруг где-то начнёте равенство искать. Сервер БК выдаёт весьма кривые числа количества того же духа, например, поэтому чтобы вычислять наверняка лучше перестраховаться и округлить. Хотя необходимости в этом я не вижу.

P.S. это моё ИМХО, я не программист, о чём сознаюсь в стотысячный раз smile

(Please log in or register to see this URL)

84

Re: Приемы в Combots 8+

Это....как сказать....
ParseInt - это не округлить.....это вытащить из строки число. Т.е. напишешь ему строку "bxc13zgf" - он тебе 13 и вернёт.
Parse - разобрать. Int - целое.

Если надо с плавающей точкой значение вытаскивать, то вроде есть функция parseFloat.

Software is like sex: it's better when it's free! © LinusTorvalds

85

Re: Приемы в Combots 8+

Где косяк?

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) < 0.01) || (top.Battle.oBattle.oMySlot.nHP < 60)
_name = "block_fullshield";

Приём перестал работать когда я добавил условие про хп.

Отредактировано SnaF (2010-01-08 14:58:43)

Интуиция - это способность головы чуять жопой.

86

Re: Приемы в Combots 8+

ZhEkA_BK какой еще общей скобки? Можно поподробней?

Интуиция - это способность головы чуять жопой.

87

Re: Приемы в Combots 8+

SnaF пишет:

ZhEkA_BK какой еще общей скобки? Можно поподробней?

самая первая и последняя скобочка в условии ,добавленом ZhEkA_BK. Их нехватало
Кстати , что означает " || " ?
А если не сработает попробуй так :

if(parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) < 0.01 || (top.Battle.oBattle.oMySlot.nHP < 60))
_name = "block_fullshield";

Отредактировано d1sc0nn3ct (2010-01-08 15:41:59)

88

Re: Приемы в Combots 8+

d1sc0nn3ct пишет:

Кстати , что означает " || " ?

Это значит "или".

2ZhEkA_BK
Может так:

if(parseInt(top.Battle.oBattle.arrRes["krit"].innerHTML) > 24 && parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 19)
   _name = "spirit_survive";
else
   _name = "krit_blindluck";

Суть в следующем: Если капель 25 и духа 20 (или сколько у тебя макс?), то юзается выжить, как только сбрасываются капли и духа становится на 10ед меньше, начинает юзаться слепая, т.к. духа уже меньше 19 и капель меньше 24. Только при таком рсакладе нельзя юзать другие приёмы, отнимающие дух до приёма Выжить.

ZhEkA_BK пишет:

Ну мне кажется, что условие if надо выделять одной общей скобкой, т.е. после if скобка открывается, потом пишется ВСЕ условие, и потом скобка закрывается....как я привел выше.

Не обязательно. Работает как такой вариант:

if(typeof(top.Battle.oBattle.oMySlot.arrEffects["block_activeshield"]) != "object" && parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 10)
_name = "spirit_block25";

Так и такой:

if((typeof(top.Battle.oBattle.oMySlot.arrEffects["block_activeshield"]) != "object" && parseInt(top.Battle.oBattle.arrRes["spirit"].innerHTML) > 10))
_name = "spirit_block25";

Отредактировано boltman (2010-01-08 15:49:44)

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

89

Re: Приемы в Combots 8+

boltman пишет:

Не обязательно.

Он не то имел в виду. Всё правильно он сказал)) Посмотри приемы которые люди выше выкладывали... слишком много закрывающих скобок + ещё одно условие после... типа:

if((...)...) && ...
Ответы на большинство вопросов связанных с ботом, вы найдёте здесь: (Please log in or register to see this URL)
(Please log in or register to see this URL) - проверил лично! Подробнее (Please log in or register to see this URL)

90

Re: Приемы в Combots 8+

Хочу приемы на танка 8), я не шарю как их делать))).. у кого добрая душа помлгите)) плз.. smile

91

Re: Приемы в Combots 8+

Можно что-то подобное сделать - если количество союзников больше в 2 раза чем количество противников , то... ?

Интуиция - это способность головы чуять жопой.

92

Re: Приемы в Combots 8+

if(top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[0].sList.split(", ").length>=top.Battle.oBattle.oGroupsLayer.getElementsByTagName("IMG")[1].sList.split(", ").length*2){
...
}

Или внести изменения из (Please log in or register to see this URL)
и написать

if(SoratnikiCount>=EnemiesCount*2){
...
}

Отредактировано anahronik (2010-01-08 22:02:45)

Software is like sex: it's better when it's free! © LinusTorvalds

93

Re: Приемы в Combots 8+

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

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

94

Re: Приемы в Combots 8+

Не такого, к сожалению. smile В адресе страницы после юза, эффекта нет, а адрес картинки эффекта обычный block_path, только сверху светится х3.

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

95

Re: Приемы в Combots 8+

Пишу "на ощупь" взяв за основу приём "Серое мастерство". Синтаксис многих команд не понимаю smile Так что всё нуждается в проверке.

BlockPathCount = top.Battle.oBattle.oMySlot.oEffects.innerHTML.match(/<br><span[^>]*>.(\d)?<\/span><\/div><img[^"]*".+\/block_path\.gif">/i);
 
if(BlockPathCount != null)
     {
            if(parseInt(BlockPathCount[1]) < 3)
            {
                _name = "block_path";
            }
            else
            {
                _name = "block_activeshield";
            }
    }
else
_name = "block_path";

Я потестил чуть-чуть. Вроде бы работает. Но мне, играющему танком, такое решение, без Глухой защиты, не нужно. Поэтому окончательные тесты и доклад о результатах с тебя, boltman wink

(Please log in or register to see this URL)

96

Re: Приемы в Combots 8+

Спасибо, будем тестить. smile

upd. Всё работает отлично. wink


PS. Кстати, как дело обстоит с карманами? Они тоже как приём используются? Подскажите как прописать пжл.
Пока сделал так. Посмотрим, что будет.

if((top.Battle.oBattle.oMySlot.nHP * 100 / top.Battle.oBattle.oMySlot.nMaxHP) < 20)
_name = "invoke_kar1_heal10";

Отредактировано boltman (2010-01-09 09:55:09)

Alies un serviendo consumor.
(Please log in or register to see this URL)
---
(Please log in or register to see this URL)

97

Re: Приемы в Combots 8+

При "меньше 20".

98

Re: Приемы в Combots 8+

Ребят,тут сижу и думаю...Можно как-то прописать,что пока не набрано 3 раза Жажды крови-не юзать Удачный удар?

Вранье.Вранье.Вранье.Правда.(с)Rand

99

Re: Приемы в Combots 8+

sergejs11 пишет:

Ребят,тут сижу и думаю...Можно как-то прописать,что пока не набрано 3 раза Жажды крови-не юзать Удачный удар?

То же самое как и выше. По аналогии:

bloodlustCount = top.Battle.oBattle.oMySlot.oEffects.innerHTML.match(/<br><span[^>]*>.(\d)?<\/span><\/div><img[^"]*".+\/krit_bloodlust\.gif">/i);
 
if(bloodlustCount != null)
     {
            if(parseInt(bloodlustCount[1]) < 3)
            {
                _name = "krit_bloodlust";
            }
            else
            {
                _name = "hit_luck";
            }
    }
else
_name = "krit_bloodlust";

Но советую поставить ещё приём о переборе количества тактик. Ну например если у тебя 20 мечей набралось, то бить удачным в любом случае. Мало ли на какого антикрита нарвёшься. Чисто теоретически. Ты же вроде не крит, а критотанк? Или я ошибаюсь? В любом случае тестируй приём и смотри на излишки тактик в бою.

(Please log in or register to see this URL)

100

Re: Приемы в Combots 8+

Гип,да перестал юзать мечи,но как соберется 3 капли-юзает дикую,хотя она стоит последней в списке.Попытался добавить else дикую-вообще стоит...

Вранье.Вранье.Вранье.Правда.(с)Rand