Страница 1 из 1

[сделано] пакет 07F6 (exp) на пиратке

Добавлено: Сб янв 29, 2011 10:28 pm
4epT
Почему вот это не внесли в ветку сервертипов kRO??

по моим размышлениям надо в файл Sakexe_0.pm добавить

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

use constant {
	EXP_FROM_BATTLE => 0x0,
	EXP_FROM_QUEST => 0x1,
	VAR_EXP => 0x1,
	VAR_JOBEXP => 0x2,
};
# 07F6 (exp) doesn't change any exp information because 00B1 (exp_zeny_info) is always sent with it
sub exp {
	my ($self, $args) = @_;
	my $max = {VAR_EXP, $char->{exp_max}, VAR_JOBEXP, $char->{exp_job_max}}->{$args->{type}};
	$args->{percent} = $max ? $args->{val} / $max * 100 : 0;
	if ($args->{flag} == EXP_FROM_BATTLE) {
		if ($args->{type} == VAR_EXP) {
			message TF("Base Exp gained: %d (%.2f%%)\n", @{$args}{qw(val percent)}), 'exp2', 2;
		} elsif ($args->{type} == VAR_JOBEXP) {
			message TF("Job Exp gained: %d (%.2f%%)\n", @{$args}{qw(val percent)}), 'exp2', 2;
		} else {
			message TF("Unknown (type=%d) Exp gained: %d\n", @{$args}{qw(type val)}), 'exp2', 2;
		}
	} elsif ($args->{flag} == EXP_FROM_QUEST) {
		if ($args->{type} == VAR_EXP) {
			message TF("Base Quest Exp gained: %d (%.2f%%)\n", @{$args}{qw(val percent)}), 'exp2', 2;
		} elsif ($args->{type} == VAR_JOBEXP) {
			message TF("Job Quest Exp gained: %d (%.2f%%)\n", @{$args}{qw(val percent)}), 'exp2', 2;
		} else {
			message TF("Unknown (type=%d) Quest Exp gained: %d\n", @{$args}{qw(type val)}), 'exp2', 2;
		}
	} else {
		if ($args->{type} == VAR_EXP) {
			message TF("Base Unknown (flag=%d) Exp gained: %d (%.2f%%)\n", @{$args}{qw(flag val percent)}), 'exp2', 2;
		} elsif ($args->{type} == VAR_JOBEXP) {
			message TF("Job Unknown (flag=%d) Exp gained: %d (%.2f%%)\n", @{$args}{qw(flag val percent)}), 'exp2', 2;
		} else {
			message TF("Unknown (type=%d) Unknown (flag=%d) Exp gained: %d\n", @{$args}{qw(type flag val)}), 'exp2', 2;
		}
	}
}
PS: спёрто с ServerType0.pm

Re: пакет 07F6 (exp) на пиратке

Добавлено: Вс янв 30, 2011 6:54 am
EternalHarvest
Да, но не в Sakexe_0, а в RagexeRE_2009_10_27a.pm, где этот пакет появляется.

Re: пакет 07F6 (exp) на пиратке

Добавлено: Вс янв 30, 2011 3:05 pm
4epT
аха, тогда в файл RagexeRE_2009_10_27a.pm добавляем:

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

use Globals qw($char);
use Log qw(message);



use constant {
	EXP_FROM_BATTLE => 0x0,
	EXP_FROM_QUEST => 0x1,
	VAR_EXP => 0x1,
	VAR_JOBEXP => 0x2,
};

# 07F6 (exp) doesn't change any exp information because 00B1 (exp_zeny_info) is always sent with it
sub exp {
	my ($self, $args) = @_;
	my $max = {VAR_EXP, $char->{exp_max}, VAR_JOBEXP, $char->{exp_job_max}}->{$args->{type}};
	$args->{percent} = $max ? $args->{val} / $max * 100 : 0;
	if ($args->{flag} == EXP_FROM_BATTLE) {
		if ($args->{type} == VAR_EXP) {
			message TF("Base Exp gained: %d (%.2f%%)n", @{$args}{qw(val percent)}), 'exp2', 2;
		} elsif ($args->{type} == VAR_JOBEXP) {
			message TF("Job Exp gained: %d (%.2f%%)n", @{$args}{qw(val percent)}), 'exp2', 2;
		} else {
			message TF("Unknown (type=%d) Exp gained: %dn", @{$args}{qw(type val)}), 'exp2', 2;
		}
	} elsif ($args->{flag} == EXP_FROM_QUEST) {
		if ($args->{type} == VAR_EXP) {
			message TF("Base Quest Exp gained: %d (%.2f%%)n", @{$args}{qw(val percent)}), 'exp2', 2;
		} elsif ($args->{type} == VAR_JOBEXP) {
			message TF("Job Quest Exp gained: %d (%.2f%%)n", @{$args}{qw(val percent)}), 'exp2', 2;
		} else {
			message TF("Unknown (type=%d) Quest Exp gained: %dn", @{$args}{qw(type val)}), 'exp2', 2;
		}
	} else {
		if ($args->{type} == VAR_EXP) {
			message TF("Base Unknown (flag=%d) Exp gained: %d (%.2f%%)n", @{$args}{qw(flag val percent)}), 'exp2', 2;
		} elsif ($args->{type} == VAR_JOBEXP) {
			message TF("Job Unknown (flag=%d) Exp gained: %d (%.2f%%)n", @{$args}{qw(flag val percent)}), 'exp2', 2;
		} else {
			message TF("Unknown (type=%d) Unknown (flag=%d) Exp gained: %dn", @{$args}{qw(type flag val)}), 'exp2', 2;
		}
	}
}
Добавлено спустя 1 час 52 минуты 9 секунд:
нет СТОП, возникает ошибка:
Ваш персонаж стал 4-го уровня!
Вы - получение уровня!
Данная программа, OpenKore, столкнулась с неожиданной проблемой. Это могло
произойти из-за недавнего обновления на сервере, ошибки в самой программе или
же в одном из её плагинов. Мы приносим извинения за эту проблему. Вы можете
обратиться за помощью в IRC или на форум.

Подробный отчёт об ошибке записан в файле errors.txt. Прежде, чем сообщать
о найденной ошибке в OpenKore:
1. Обновитесь до свежей версии при помощи SVN. Если это действительно ошибка,
возможно, она уже устранена.
2. Поищите на форуме. Возможно, эта проблема уже решена, Может быть данная
проблема уже была решена,
или же о ней уже хотя бы сообщили. В данном случае используйте существующие
темы, если у вас есть новая информация.

Если же вы искренне уверены, что столкнулись с новой ошибкой в программе, тогда
приложите файл errors.txt к вашему сообщению на форуме, иначе мы не сможем вам
помочь!

Сообщение об ошибке:
Undefined subroutine &Network::Receive::kRO::RagexeRE_2009_10_27a::TF called at
src/Network/Receive/kRO/RagexeRE_2009_10_27a.pm line 62.
Нажмите ENTER для завершения программы.
Вот errors.txt:

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

OpenKore version what-will-become-2.1
@ai_seq = 
Network state = 5
Network handler = Network::XKore
SVN revision: unknown
Loaded plugins:
  plugins/macro.pl (macro)

Error message:
Undefined subroutine &Network::Receive::kRO::RagexeRE_2009_10_27a::TF called at src/Network/Receive/kRO/RagexeRE_2009_10_27a.pm line 62.

Stack trace:
Undefined subroutine &Network::Receive::kRO::RagexeRE_2009_10_27a::TF called at src/Network/Receive/kRO/RagexeRE_2009_10_27a.pm line 62.
 at src/Network/Receive/kRO/RagexeRE_2009_10_27a.pm line 61
	Network::Receive::kRO::RagexeRE_2009_10_27a::exp('Network::Receive::kRO::RagexeRE_2010_07_01a=HASH(0x4c628a4)', 'HASH(0x52f205c)') called at src/Network/Receive.pm line 193
	Network::Receive::parse('Network::Receive::kRO::RagexeRE_2010_07_01a=HASH(0x4c628a4)', '\x{f6}\x{7}\x{b3}\x{85}\x{1e}\x{0}?\x{0}\x{0}\x{0}\x{1}\x{0}\x{1}\x{0}') called at src/functions.pl line 1329
	main::parseIncomingMessage('\x{f6}\x{7}\x{b3}\x{85}\x{1e}\x{0}?\x{0}\x{0}\x{0}\x{1}\x{0}\x{1}\x{0}') called at src/functions.pl line 690
	main::mainLoop_initialized() called at src/functions.pl line 69
	main::mainLoop() called at src/Interface.pm line 75
	Interface::mainLoop('Interface::Console::Win32=HASH(0x34b28c4)') called at openkore.pl line 97
	main::__start() called at start.pl line 136

Выполнение прервано на строке:
  		if ($args->{type} == VAR_EXP) {
* 			message TF("Base Quest Exp gained: %d (%.2f%%)\n", @{$args}{qw(val percent)}), 'exp2', 2;
  		} elsif ($args->{type} == VAR_JOBEXP) {

Re: пакет 07F6 (exp) на пиратке

Добавлено: Вс янв 30, 2011 4:55 pm
EternalHarvest

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

use Translation qw(T TF);

Re: пакет 07F6 (exp) на пиратке

Добавлено: Вс янв 30, 2011 9:50 pm
4epT
аха ;)

Re: пакет 07F6 (exp) на пиратке

Добавлено: Пн янв 31, 2011 10:46 pm
manticora
Спасибо, прикольно :-)

Re: пакет 07F6 (exp) на пиратке

Добавлено: Сб фев 26, 2011 1:24 am
4epT