покупка у мерчей (прим: покуп расходн,создание и продаж ОББ)

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

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

antigony
Начинающий
Сообщения: 48
Зарегистрирован: Сб дек 09, 2006 11:50 pm

покупка у мерчей (прим: покуп расходн,создание и продаж ОББ)

Сообщение antigony »

нету.
Последний раз редактировалось antigony Сб сен 20, 2008 8:45 pm, всего редактировалось 25 раз.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

antigony
Прикольно! СПС.
antigony
Начинающий
Сообщения: 48
Зарегистрирован: Сб дек 09, 2006 11:50 pm

Сообщение antigony »

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

Тогда можно спокойно будет в файл autobuy.txt добавлять все что нужно.


Вопрос я этот тут ставил. но прождав тучу времени просто удалил. Потому что сразу через несколько дней цены на обб упали на 10-15к, в просто гиганском количестве появились на рынке, а никто так и не отписался, не помог...одни личеры словом, количество просмотров темы было больше 300...


--------------------------------------------------------------------------------
еще добавлял скупку у конкурентов, и прочие прелести...
как то, делал свой список базы, в котором отслеживал изменения цен на нужные мне вещи. чтобы корректировать вовремя...
но это уже сами думайте.
Последний раз редактировалось antigony Ср фев 28, 2007 3:28 pm, всего редактировалось 5 раз.
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

antigony
Исправь будь добр всё на

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

А то смайлы тыкает где не надо.
antigony
Начинающий
Сообщения: 48
Зарегистрирован: Сб дек 09, 2006 11:50 pm

Сообщение antigony »

Восстановил по заявкам.
поддерживать чтото и редактировать не буду.
darzanebor
Грамотный
Сообщения: 221
Зарегистрирован: Чт дек 07, 2006 8:43 pm
Откуда: Бирмингем, ул. Бр.Грим....

Сообщение darzanebor »

Подскажите пожалуйста?

do add Cyfar,950,$item1add
do add Brigan,700,$item2add

Если я юзаю две эти строчки, он будет закупать расходники тока по этой цене, или не выше этой цены???
Изображение
Изображение
antigony
Начинающий
Сообщения: 48
Зарегистрирован: Сб дек 09, 2006 11:50 pm

Сообщение antigony »

не выше.
darzanebor
Грамотный
Сообщения: 221
Зарегистрирован: Чт дек 07, 2006 8:43 pm
Откуда: Бирмингем, ул. Бр.Грим....

Сообщение darzanebor »

Извини что достаю, ты вроде это все забросил, но у меня непонятки, он по точкам ходит, видит Цифар пигет покупаю за столько-то а сам не покупает, в инвенторе он короче не появляется и деньги не списываются... :(
Изображение
Изображение
antigony
Начинающий
Сообщения: 48
Зарегистрирован: Сб дек 09, 2006 11:50 pm

Сообщение antigony »

раскоментируй строку

# sendBuyVender(\$remote_socket, $venderID, $itemID, $unitstobuy);

забыл снять комент... :D
просто тестировал разные свои идеи... и закоментил чтоб не покупал... 8)
darzanebor
Грамотный
Сообщения: 221
Зарегистрирован: Чт дек 07, 2006 8:43 pm
Откуда: Бирмингем, ул. Бр.Грим....

Сообщение darzanebor »

угу спс =)
смотрел не заметил
Изображение
Изображение
Drake
Новичок
Сообщения: 2
Зарегистрирован: Ср янв 17, 2007 6:32 pm

Сообщение Drake »

antigony
Большой респект=)
antigony
Начинающий
Сообщения: 48
Зарегистрирован: Сб дек 09, 2006 11:50 pm

Сообщение antigony »

Drake, с тебя причитается :evil:
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

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

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

package shopLog;

#Configuration for the YAMD
#location/filename to save the market log
use constant LOGPATH => "marketlog.txt"; 
#delay between opening each vending shop
use constant VISITDELAY => 1; 
#max number of tries for retrieving the vender name
use constant MAXTRY => 10;

use strict;
use warnings;

use Globals;
use Log qw(message debug error warning);
use Network::Send;
use Settings;
use Plugins;
#use Skills;
use Utils;
use Misc;
use AI;
use Actor;

Plugins::register('shopLog', 'logs venders information to a file', \&Unload);
my $hooks = Plugins::addHooks(
	['AI_pre', \&visitShop, undef],
	['packet_vender', \& venderFound, undef],
	['packet_vender_store2', \&dumpShop, undef],
);
my $commandsID = Commands::register(
	["info", "displays number of shops visited so far", \&visitedShops],
	["flush", "empties the market log information", \&emptyBuffer]
);
sub Unload {
	Plugins::delHooks($hooks);
	Commands::unregister($commandsID);
	message "shopLog plugin unloaded\n"; 
}

my %VenderVisited;
my $timetovisit = time();
my $checkTry = 0;

sub dumpShop {
	my $hookName = shift;
	my $args = shift;
	my $vender = Actor::get($args->{'venderID'});
	my @venderItemList = @{$args->{'itemList'}};

	if ($VenderVisited{$args->{'venderID'}}) {
		return 0; #do nothing if the vender is already visitied for this run
	}
	else {
		my $vendername = $vender->name;
		my $venderlocation = "$vender->{pos_to}{x},$vender->{pos_to}{y}";
		my $shopname = $venderLists{$venderID}{'title'};
	
		#saving the vender information to the marketlog
		marketLog($vendername."\n".$field{name}." (".$venderlocation.")\n".$shopname."\n");

		#process the list of items in the shop
		for (my $itemID = 0; $itemID < @venderItemList; $itemID++) {
			if (defined $venderItemList[$itemID]) {
				my ($itemName, $itemPrice, $itemAmount);	
				$itemName = $venderItemList[$itemID]->{name};
				$itemPrice = $venderItemList[$itemID]->{price};
				$itemAmount = $venderItemList[$itemID]->{amount};
				#saving the item log to the marketlog
				marketLog("$itemName\n$itemPrice\n$itemAmount\n");
				#add the entry to PMDB - delete this line if you don't want to use PMDB
				PMDB::addItemEntry($vendername, $venderlocation, $shopname, $itemName, $itemPrice, $itemAmount);
			}
		}
		$VenderVisited{$args->{'venderID'}} = 1;
		marketLog("\n");
		}
}


sub venderFound {
	my ($packet, $args) = @_;
	my $ID = $args->{ID};
	AI::queue('checkShop', {vendorID => $ID});
}

sub visitShop {
	if (AI::is('checkShop') && main::timeOut($timetovisit, VISITDELAY)) {
		my $venderId = AI::args->{vendorID};
		my $vender = Actor::get($venderId);
		my $venderName = $vender->name;
		$checkTry++;
		message "(".scalar(keys(%VenderVisited))." shops)[Retrieving for vender information (TRY $checkTry)]\n";
		if (rindex($venderName, "Unknown #") == -1 || $checkTry == MAXTRY) {
			sendEnteringVender(\$remote_socket, $venderId);
			AI::dequeue;
			$checkTry = 0;
		}
	$timetovisit = time;
	}
}		


sub emptyBuffer {
	message "resetting the market log buffers\n";
	%VenderVisited = ();
	PMDB::clearDB();
	resetMarketLog(time()."\n");
}

sub visitedShops {
	message "you visited :".scalar(keys(%VenderVisited))." shops";
}

sub resetMarketLog {
	my $logbuffer = shift;
	open(F, ">".LOGPATH);
	print F $logbuffer;
	close(F);
}

sub marketLog {
	my $logText = shift;
	open(F, ">>".LOGPATH);
	print F $logText;
	close(F);
}
1;
и ещё;

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

package PMDB;

#Configuration for the PM based item DB
#you need to put
#use_pmdb 1 in config to activate this
#password to auth a user for queries - change this
use constant AUTHPASS => "CHANGETHIS";  


use Log qw(message debug error warning);
use Network::Send;
use Plugins;
use Globals;
use Utils;
use Misc;

my %DBAuth;
my %itemDB;

Plugins::register('PMDB', 'PM base item search DB', \&Unload);
my $hooks = Plugins::addHooks(
	['packet_privMsg', \&processPM, undef]
);
#my $commandsID = Commands::register(
#);
sub Unload {
	Plugins::delHooks($hooks);
#	Commands::unregister($commandsID);
	message "PMDB plugin unloaded\n"; 
}

###########################
#functions for PM DB submodule
###########################
sub searchName {
	my $searchName = shift;
	my $searchResult;

	foreach my $key (keys %itemDB) {
		my $value = $itemDB{$key};
		if(rindex(uc($key), uc($searchName)) > -1) {
			my @itemFound = @{$value};
			$searchResult .=  "<$key>\n";
			foreach(@itemFound) {
				my @item = @{$_};
				$searchResult .= '"'.$item[0].'" ('.$item[1].") at (".$item[2].") ".formatNumber($item[3])." EA for ".formatNumber($item[4])."z\n";
			}
		}
	}
	return $searchResult;
}

sub addItemEntry {
		my $vendername = shift;
		my $venderlocation = shift;
		my $shopname = shift;
		my $itemName = shift;
		my $itemPrice = shift;
		my $itemAmount = shift;

		my @dbEntry = [$shopname, $vendername, $venderlocation, $itemAmount, $itemPrice];
		
		my @itemFound = @{$itemDB{$itemName}};

		my $repeated = 0;
		foreach(@itemFound) {
			my @item = @{$_};
			if ($vendername eq $item[1]) {
				$repeated = 1;
			}
		}
		if ($repeated == 0) {
			push(@{$itemDB{$itemName}}, @dbEntry);	
		}
}

sub processPM {
	if ($config{'use_pmdb'}) {

	my $hookName = shift;
	my $args = shift;
	my $user = $args->{'privMsgUser'};
	my $msg = $args->{'privMsg'};


	if($msg eq AUTHPASS) {
		$DBAuth{$user} = 1;
		message "chatUI : authorized ".$user." for queries!\n";
		sendPM($user,"you are authorized for using itemDB");
	}
	elsif ($DBAuth{$user}) {

		message "chatUI : authorized query accepted - processing\n";
		my @args = split(/ /,$msg);
		my $command = shift(@args);
		if($command eq "find") {
			my $itemName = join(" ", @args);
			if($itemName) {
				my $searchResult = searchName($itemName);
				if($searchResult) {
					sendPM($user,$searchResult);
				}
				else {
					sendPM($user, "couldn't find the item");
				}
			}
		}
		else {
			#do nothing for wrong command
		}
	}
	}
	else {
	}
}

sub sendPM {
	my $user = shift;
	my $message = shift;
	if ($user) {
		foreach(split(/\n/,$message)) {
			if ($_ ) {
				sendMessage($net, "pm", $_, $user);
			}
		}
	}
}

sub clearDB {
	%itemDB = ();
}
ну и макросик:

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

automacro autoScan {
run-once 1
location prontera
call {
do move 148 182
do move 148 30
do move 163 30
do move 163 182
do quit
}
}
от РО до шестой палаты - один шаг...
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

Господа программисты, помогите..

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

marketLog("$itemName\n$itemPrice\n$itemAmount\n");
сохраняет наименование, цену, количество в несколько строк.. как изменить команду, чтобы все сохранять в одну строку с табуляцией?
от РО до шестой палаты - один шаг...
qwesty
Энтузиаст
Сообщения: 97
Зарегистрирован: Чт сен 20, 2007 4:31 am
Откуда: СПб
Контактная информация:

Сообщение qwesty »

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

marketLog("$itemName\t$itemPrice\t$itemAmount\n");
aka sllh
QWESTY TEAM
Ответить