target_deltaHp - ЗАДАЧКА :(

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

Модератор: 4epT

Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

target_deltaHp - ЗАДАЧКА :(

Сообщение Zloten »

очень нужен плагин, не жизненно, но вполне многим может пригодиться.

Суть:

attackSkillSlot Pierce {
lvl 10
dist 3
monsters
maxUses 1000
target Baphomet
target_HpMaximum 668000 ---- примерное ХП моба
target_deltaHpEnable 1 - включаем отображение ХП моба

}

нам надо видеть сколько урона мы нанесли мобу и как скоро он здохнет.
для этого в wx-интерфейсе (Click !!!!!!!!) создается еще один бар, в который поступает данные из блока приведенного выше, насколько я понял Кора для каждого моба щитает сама deltaHp (то есть сколько мобу нанесли урона и на сколько он сумел отлечиться - значение равное либо 0, либо отрицательное). Так вот в данном баре беруться два значения для отсчета - минимум 0, и максимум из блока target_HpMaximum 668000 соответственно. Таким образом когда мы начинаем мочить бафика - мы можем приблизительно видеть когда он здохнет.

ковырял-ковырял но ничего толком не понял, создается какойто массив дамага, но как из него выдрать данные текущие и как их отобразить ??? фрррр :(

может кто прокоментрировать эту умность:

Код: Выделить всё

sub updateDamageTables {
	my ($ID1, $ID2, $damage) = @_;

	# Track deltaHp
	#
	# A player's "deltaHp" initially starts at 0.
	# When he takes damage, the damage is subtracted from his deltaHp.
	# When he is healed, this amount is added to the deltaHp.
	# If the deltaHp becomes positive, it is reset to 0.
	#
	# Someone with a lot of negative deltaHp is probably in need of healing.
	# This allows us to intelligently heal non-party members.
	if (my $target = Actor::get($ID2)) {
		$target->{deltaHp} -= $damage;
		$target->{deltaHp} = 0 if $target->{deltaHp} > 0;
	}

	if ($ID1 eq $accountID) {
		if ((my $monster = $monstersList->getByID($ID2))) {
			# You attack monster
			$monster->{dmgTo} += $damage;
			$monster->{dmgFromYou} += $damage;
			$monster->{numAtkFromYou}++;
да и вообче возможно ли написание данного плагина?

Добавлено спустя 9 минут 28 секунд:

зы эх, не там создал, надо было в идеях, перенесите плиз :oops:
Аватара пользователя
Aib0
Бывалый
Сообщения: 961
Зарегистрирован: Чт ноя 16, 2006 12:50 am
Контактная информация:

Сообщение Aib0 »

Если мочишь в ОК напиши ml - увидишь нанесенный ботом мобу дамаг. Если играешь клиентом - поставь РоЧа, если ничего не нравится или ты маньяк-естествоиспытатель-програмист-с-кучей-свободного-времени то пиши плагин
Wtf is "OpenKore"?

"What we're dealing with here is a total lack of respect for the law"
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

угу глянул ml

Код: Выделить всё

-----------Monster List-----------
#   Name                        ID      DmgTo DmgFrom  Distance    Coordinates
0   Anopheles[Анофелес]         1627    60    93       1           (102, 112)
1   Caramel[Unknown]            1103    0     0        17.2        (116, 121)
----------------------------------
тогда просьба к Click - возможно хотя бы упрощенно сделать дополнительное окошко (по примеру стат-окна - обновляемое) в котором бы данные эти показывались?
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

вобчем поворошил команду ml, немного упростил ее:

Код: Выделить всё

sub cmdMonsterList {
	my ($dmgTo, $dmgFrom, $dist, $pos, $name, $monsters);
	message TF("-------------------------------------------------------\n"),	"list";

	$monsters = $monstersList->getItems();
	foreach my $monster (@{$monsters}) {

		if (($monster->{dmgTo} ne "") ? $monster->{dmgTo}: 0 > 0) {
			$dmgTo = ($monster->{dmgTo} ne "") ? $monster->{dmgTo}	: 0;
			$name = $monster->name;

		message(swrite(
			"@<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<",
			[$name, $dmgTo]),
			"list");
#		last;
		}
	}
	message("-------------------------------------------------------\n", "list");
}
в результате выдает тока список тех обов по которым ударяли:

Код: Выделить всё

-------------------------------------------------------
Anopheles              40
-------------------------------------------------------
как сделать чтобы в отдельном окошке эта подпрограмма раз в секунду выполнялась?
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

и еще один вопрос - пытаюсь выполнить поиск по имени моба в массиве, чтобы выдать только дамаг по этому мобу:

Код: Выделить всё

sub cmdMonsterList {
	my ($dmgTo, $dmgFrom, $dist, $pos, $name, $monsters);
	my ($mob) = "Caramel";
	message TF("-------------------------------------------------------\n"),	"list";

	$monsters = $monstersList->getItems();

	foreach my $monster (@{$monsters}) {
		if ($monster->name == $mob) {
			$dmgTo = ($monster->{dmgTo} ne "") ? $monster->{dmgTo}	: 0;
			$name = $monster->name;
			message(swrite(
				"@<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<",
				[$name, $dmgTo]), 
				"list");
			last;
		}

	}
	message("-------------------------------------------------------\n", "list");
}
но почемуто условие срабатывает ВСЕГДА когда рядом есть любой моб, даже не карамель :( я в печали, вроде все правильно....
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

Код: Выделить всё

sub cmdMonsterList { 
   my ($dmgTo, $dmgFrom, $dist, $pos, $name, $monsters); 
   my ($mob) = "Caramel"; 
#   message TF("-------------------------------------------------------\n"),   "list"; 

   $monsters = $monstersList->getItems(); 

   foreach my $monster (@{$monsters}) { 
      if ($monster->name == $mob) { 
         $dmgTo = ($monster->{dmgTo} ne "") ? $monster->{dmgTo}   : 0; 
         $name = $monster->name; 
         message(swrite( 
            "@<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<", 
            [$name, $dmgTo]), 
            "list"); 
         last; 
      } 

   } 
#   message("-------------------------------------------------------\n", "list"); 
}
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

Click :) ты просто перекопировал :) без изменений....
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

две строчки убрал)
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

2 символа ;)
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

не очень понял зачем, но суть то не изменилась, поиск не выполняет :( печатает первого попавшегося моба и все... кто в перле шарит - подскажите плиз.
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

my ($mob) = "Caramel"; зачем тут ()

попробуй вывести в консоль $monster->name и $mob
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

вывел :( разные значения в том то и дело,
$monster->name green plant
$mob Caramel

я поэтому и споткнулся что условие один фиг срабатывает хотя $monster->name не равно $mob , ломаю мозг сижу :(
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

напиши не == а eq
Zloten
Начинающий
Сообщения: 43
Зарегистрирован: Ср ноя 29, 2006 2:57 pm

Сообщение Zloten »

все, допер сам :) нада было использовать в условии eq для сравнения фррр, итого имеем:

Код: Выделить всё

sub cmdMonsterList {
	my ($dmgTo, $dmgFrom, $dist, $pos, $name, $monsters);
	my ($mob) = "Caramel";
	$monsters = $monstersList->getItems();

	foreach my $monster (@{$monsters}) {
		if ($monster->name eq  $mob) {
			$dmgTo = ($monster->{dmgTo} ne "") ? $monster->{dmgTo}	: 0;
			$name = $monster->name;
			message(swrite(
				"@<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<",
				[$name, $dmgTo]), 
				"list");
			last;
		}

	}
}
теперь зная ник моба мы можем икать инфо по дамагу по нему. что делать дальше теперь?

зы Click я сам догадался, твой пост не успел прочесть :)
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

а чего ты хочешь то? тока покороче)

Добавлено спустя 49 секунд:

и ещё раз зачем тут скобки? my ($mob)
Ответить