Плагин для prontera.ru

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

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

SmOOve
Грамотный
Сообщения: 213
Зарегистрирован: Сб окт 04, 2008 3:57 pm

Плагин для prontera.ru

Сообщение SmOOve »

интересует этот плагин или ряд плагинов которые предостовляют информацию о ценах на пронтеру.
ато их ботов частенько банят, былоб неплохо иметь своего бота который оббегал торгов и предоставлял инфу по товарам примерно как на пронтере.

Если есть у когонить поделитесь или подскажите как такое осуществить. Без пронтеры совсем жить трудно )))
Аватара пользователя
chuvachok
Грамотный
Сообщения: 320
Зарегистрирован: Ср авг 06, 2008 12:47 pm
Сервер RO:: iRO
Discord: chuvachok #2811
Откуда: г. Москва

Re: Плагин для prontera.ru

Сообщение chuvachok »

попробуй переделать плагин viewtopic.php?t=2695
Изображение
SmOOve
Грамотный
Сообщения: 213
Зарегистрирован: Сб окт 04, 2008 3:57 pm

Re: Плагин для prontera.ru

Сообщение SmOOve »

пока нашол плагин на этом форуме который скуапет указаный лут, правда еще не тестил но думаю он работает.

package shopper;

#
# This plugin is licensed under the GNU GPL
# Copyright 2006 by kaliwanagan
# --------------------------------------------------
#

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

Plugins::register('shopper', 'automatically buy items from merchant vendors', \&Unload);
my $AI_pre = Plugins::addHook('AI_pre', \&AI_pre);
my $encounter = Plugins::addHook('packet_vender', \&encounter);
my $storeList = Plugins::addHook('packet_vender_store', \&storeList);

my @vendorList;

sub Unload {
Plugins::delHook('AI_pre', $AI_pre);
Plugins::delHook('packet_vender', $encounter);
Plugins::delHook('packet_vender_store', $storeList);
}

my $delay = 1;
my $time = time;

sub AI_pre {
if (AI::is('checkShop') && main::timeOut($time, $delay)) {
my $vendorID = AI::args->{vendorID};
$messageSender->sendEnteringVender($vendorID);
AI::dequeue;
}
$time = time;
}

# we encounter a vend shop
sub encounter {
my ($packet, $args) = @_;
my $ID = $args->{ID};

# don't check the same store twice
# FIXME: clear the vendor list from time to time or else
# it will get very large
#foreach my $vendorID (@vendorList) {
# return if ($ID == $vendorID);
#}
#push (@vendorList, $ID);
AI::queue('checkShop', {vendorID => $ID});
}

# we're currently inside a store if we receive this packet
sub storeList {
my ($packet, $args) = @_;
my $venderID = $args->{venderID};
my $price = $args->{price};
my $name = $args->{name};
my $number = $args->{number};
my $amount = $args->{amount};

my $prefix = "shopper_";
my $i = 0;
while (exists $config{$prefix.$i}) {
my $maxPrice = $config{$prefix.$i."_maxPrice"};
my $maxAmount = $config{$prefix.$i."_maxAmount"};

my $invIndex = main::findIndexString_lc($char->{'inventory'}, "name", $config{$prefix.$i});
my $item = $char->{'inventory'}[$invIndex];

if (main::checkSelfCondition($prefix.$i) &&
($price <= $maxPrice) &&
(lc($name) eq lc($config{$prefix.$i}))
)
{
message "$name found!!! Buying it for $price (max price: $maxPrice).\n";
$messageSender->sendBuyVender($venderID, $number, $maxAmount);
configModify($prefix.$i."_disabled", 1);
}
$i++;
}
}

return 1;


Пример использования:


shopper Elunium{
maxPrice 500000
maxAmount 120
disabled 0
}

Если кора найдет магаз меньше чем с 120 Эликами

--------------------------- Vender: Kore Masta (0) ----------------------------
# Name Type Amount Price
Elunium found!!! Buying it for 10000 (max price: 500000).
Config 'shopper_0_disabled' set to 1 (was 0)
2 Elunium Non-usable 119 10,000z
-------------------------------------------------------------------------------
Failed to buy 119 of item #2 from vender (unknown code 4).

Если найдет больше чем со 120 то ккупит

--------------------------- Vender: Kore Masta (0) ----------------------------
# Name Type Amount Price
Elunium found!!! Buying it for 10000 (max price: 500000).
Config 'shopper_0_disabled' set to 1 (was 0)
2 Elunium Non-usable 148 10,000z
-------------------------------------------------------------------------------
You lost 1,200,000 zeny.
Item added to inventory: Elunium (0) x 120 - Non-usable


как я понял это мы пихаем в папку с плагинами, а shopper Elunium{
maxPrice 500000
maxAmount 120
disabled 0
}
это пишем в конфиге в самом низу???


зы. былоб идеально если кто поделился имеено тем что узают на пронтере, так бы я им своими ботами помогал не всех баны забрали )))
Аватара пользователя
chuvachok
Грамотный
Сообщения: 320
Зарегистрирован: Ср авг 06, 2008 12:47 pm
Сервер RO:: iRO
Discord: chuvachok #2811
Откуда: г. Москва

Re: Плагин для prontera.ru

Сообщение chuvachok »

я пытался сделать подобие пронты для себя из такого плагина:

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

######################################################
# This plugin is licensed under the GNU GPL          #
# Copyright 2005 by isieo.   Modifyed  by  _vit      #
# contact : - isieo <AT> *NOSPAM* G*MAIL <DOT> COM   #
# -------------------------------------------------- #
# -------------------------------------------------- #
# playerRecord.pl                                    #
# Records Player's name together with AIDs           #
# Usefull for players to findout other players' other#
# characters...                                      #
#                                                    #
######################################################

package playerRecord;
use strict;
use Plugins;
use Log qw(message);
use Globals;
use Settings;

Plugins::register("prec", "playerRecord", \&on_unload, \&on_reload);
my $hooks = Plugins::addHooks(
    ['charNameUpdate', \&write_player],
);
my $datadir = $Plugins::current_plugin_folder;

sub on_unload {
    # This plugin is about to be unloaded; remove hooks
    Plugins::delHook("charNameUpdate", $hooks);
}

sub on_reload {
}

sub write_player {
    my $hookname = shift;
    my $args = shift;
    my $targetId = unpack("V1",$args->{ID});
    my $targetName = $args->{name};
    my $targetGuild = $args->{guild}{name};
    my $maploc = $field{name};
    my $targetLvl = $args->{lv};
    my $targetJob = $args->job;
    my $file = "$datadir/../logs/players.txt";

    my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime();
    my $year = 1900 + $yearOffset;
    my $timestamp = sprintf("%02d:%02d:%02d  %02d-%02d-%4d", $hour, $minute, $second, $dayOfMonth, $month, $year);

    message "Player logged: ".$targetName."\n";
    if ($Settings::VERSION cmp '1.9.1' >= 0) {
        open FILE, ">>:utf8", $file;
    } else {
        open FILE, ">> $file";
    }
    print FILE sprintf("%d %-20s\tlvl: %2d\t class: %-18s\tguild: %-20s\t%s\t%s\n", $targetId, $targetName, $targetLvl, $targetJob, $targetGuild, $timestamp, $maploc) if ($targetName) ;
    close FILE;
}

1;
смог удалить ненужную инфу,и добавить координаты чара

пытался вот так вставить магазин:

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

my ($packet, $args) = @_; (без неё тоже пробовал)
my $venderID = $args->{venderID};
my $price = $args->{price};
my $name = $args->{name};
my $number = $args->{number};
my $amount = $args->{amount};
соотвествующие строки:

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

$venderID, $price, $name, $number, $amount 
добавлял сюда:

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

print FILE sprintf("%d %-20s\tlvl: %2d\t class: %-18s\tguild: %-20s\t%s\t%s\n", $targetId, $targetName, $targetLvl, $targetJob, $targetGuild, $timestamp, $maploc) if ($targetName) ;
но так ничего не получилось :(

подскажите как добавить название и содержание магазина в этот плагин?
Изображение
SmOOve
Грамотный
Сообщения: 213
Зарегистрирован: Сб окт 04, 2008 3:57 pm

Re: Плагин для prontera.ru

Сообщение SmOOve »

хотелось бы услышать "пирожка" у них вроде была своя база по товарам или там только по чарам была?
Аватара пользователя
[GM]#05
Профессионал
Сообщения: 593
Зарегистрирован: Пт фев 09, 2007 8:44 pm
Сервер RO:: rRO

Re: Плагин для prontera.ru

Сообщение [GM]#05 »

На старом форуме опенкоры был плагин от Ангела, если не изменяет память, на нем были основаны многие старые мерч базы, сам искал из-за аналогичной проблемы с пронтой, но старый форум снесли. В текущем репозитории имеется некий mercdb, но его нужно довести до ума.
Пирожок вроде забил на ро и ботоводство, сто лет его тут не видел, периодически вижу его каменты на хабрахабре, если это он.
Аватара пользователя
chuvachok
Грамотный
Сообщения: 320
Зарегистрирован: Ср авг 06, 2008 12:47 pm
Сервер RO:: iRO
Discord: chuvachok #2811
Откуда: г. Москва

Re: Плагин для prontera.ru

Сообщение chuvachok »

вот нашёл на форуме плагин и макрос для сканирования магазинов viewtopic.php?f=27&t=747&hilit=vending
Изображение
Ответить