Приписка в гильде 0_о

Разработка новых функций.

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

asasa
Новичок
Сообщения: 2
Зарегистрирован: Пт фев 22, 2008 1:46 am

Приписка в гильде 0_о

Сообщение asasa »

Подбегает к вам админ или хелпер, ты бот? нет ёпт ответите вы.... какая у меня приписка спросит он.... вот мы и сели на жопу.... не расстраивайтесь=) чтобы не сесть в люжу нам надо всеголишь подправить пару строк в сорцах и всего делов=)
топаем сюда Commands.pm
ищем там 2934 строку, что то вроди

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

sub cmdPlayerList {
аха, нашли, молодцы, правим выдаваемую инфу функцией:
ищем что то вроди

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

"%s (%d)\n" .
			"Account ID: %s (Hex: %s)\n" .
			"Party: %s\n" .
			"Guild: %s\n" .
добавляем

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

	"Pripiska: %s\n".
далее ищем

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

($player->{party} && $player->{party}{name} ne '') ? $player->{party}{name} : '',
		($player->{guild}) ? $player->{guild}{name} : '',
добавляем после запятой

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

($player->{guild}) ? $player->{guild}{title} : '',

в результате функция cmdPlayerList стала выглядить слудующим образом:

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

sub cmdPlayerList {
	my (undef, $args) = @_;
	my $msg;

	if ($args ne "") {
		my $player = Match::player($args);
		if (!$player) {
			error TF("Player \"%s\" does not exist.\n", $args);
			return;
		}

		my $ID = $player->{ID};
		my $body = $player->{look}{body} % 8;
		my $head = $player->{look}{head};
		if ($head == 0) {
			$head = $body;
		} elsif ($head == 1) {
			$head = $body - 1;
		} else {
			$head = $body + 1;
		}

		my $pos = calcPosition($player);
		my $mypos = calcPosition($char);
		my $dist = sprintf("%.1f", distance($pos, $mypos));
		$dist =~ s/\.0$//;

		my %vecPlayerToYou;
		my %vecYouToPlayer;
		getVector(\%vecPlayerToYou, $mypos, $pos);
		getVector(\%vecYouToPlayer, $pos, $mypos);
		my $degPlayerToYou = vectorToDegree(\%vecPlayerToYou);
		my $degYouToPlayer = vectorToDegree(\%vecYouToPlayer);
		my $hex = getHex($ID);
		my $playerToYou = int(sprintf("%.0f", (360 - $degPlayerToYou) / 45)) % 8;
		my $youToPlayer = int(sprintf("%.0f", (360 - $degYouToPlayer) / 45)) % 8;
		my $headTop = headgearName($player->{headgear}{top});
		my $headMid = headgearName($player->{headgear}{mid});
		my $headLow = headgearName($player->{headgear}{low});

		$msg = TF("------------------ Player Info ------------------\n" .
			"%s (%d)\n" .
			"Account ID: %s (Hex: %s)\n" .
			"Party: %s\n" .
			"Guild: %s\n" .
			"Pripiska: %s\n".
			"Position: %s, %s (%s of you: %s degrees)\n" .
			"Level: %-7d Distance: %-17s\n" .
			"Sex: %-6s    Class: %s\n" .
			"-------------------------------------------------\n" .
			"Body direction: %-19s Head direction:  %-19s\n" .
			"Weapon: %s\n" .
			"Shield: %s\n" .
			"Shoes : %s\n" .
			"Upper headgear: %-19s Middle headgear: %-19s\n" .
			"Lower headgear: %-19s Hair color:      %-19s\n" .
			"Walk speed: %s secs per block\n"
			, 
		$player->name, $player->{binID}, $player->{nameID}, $hex, 
		($player->{party} && $player->{party}{name} ne '') ? $player->{party}{name} : '',
		($player->{guild}) ? $player->{guild}{name} : '',
			   ($player->{guild}) ? $player->{guild}{title} : '',
		$pos->{x}, $pos->{y}, $directions_lut{$youToPlayer}, int($degYouToPlayer),
		$player->{lv}, $dist, $sex_lut{$player->{sex}}, $jobs_lut{$player->{jobID}},
		"$directions_lut{$body} ($body)", "$directions_lut{$head} ($head)",
		itemName({nameID => $player->{weapon}}),
		itemName({nameID => $player->{shield}}),
		itemName({nameID => $player->{shoes}}), $headTop, $headMid, 
			  $headLow, "$haircolors{$player->{hair_color}} ($player->{hair_color})",
			  $player->{walk_speed});
		if ($player->{dead}) {
			$msg .= T("Player is dead.\n");
		} elsif ($player->{sitting}) {
			$msg .= T("Player is sitting.\n");
		}

		if ($degPlayerToYou >= $head * 45 - 29 && $degPlayerToYou <= $head * 45 + 29) {
			$msg .= T("Player is facing towards you.\n");
		}

		$msg .= "-------------------------------------------------\n";
		message $msg, "info";
		return;
	}

	$msg =  T("-----------Player List-----------\n" .
		"#    Name                                Sex   Lv  Job         Dist  Coord\n");
	foreach my $player (@{$playersList->getItems()}) {
		my ($name, $dist, $pos);
		$name = $player->name;
		if ($player->{guild} && %{$player->{guild}}) {
			$name .= " [$player->{guild}{name}]";
		}
		$dist = distance($char->{pos_to}, $player->{pos_to});
		$dist = sprintf("%.1f", $dist) if (index ($dist, '.') > -1);
		$pos = '(' . $player->{pos_to}{x} . ', ' . $player->{pos_to}{y} . ')';

		$msg .= swrite(
			"@<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<< @<< @<<<<<<<<<< @<<<< @<<<<<<<<<<",
			[$player->{binID}, $name, $sex_lut{$player->{sex}}, $player->{lv}, $player->job, $dist, $pos]);
	}
	$msg .= "---------------------------------\n";
	message($msg, "list");
}
сохраняем и радуемся =) теперь команда pl вызванная с ником интересующего парсонажа будет выдавать инфу о приписке в гильде
я ковырял 206SVN6184[/i]
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

да и вообще надо б заСВНить
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

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

Сообщение Click »

в общем обновил плагин viewtopic.php?p=48186#48186
Ответить