Jump to content
Eternal Lands Official Forums
piojosnos

Trader Helper Bot Idea

Recommended Posts

Hi, I have an idea for a bot based on a problem I currently face with a trade.

 

Some times, if you want to trade with someone with a very different timezone it's difficult to be on-line at the same time to make the trade. So you can make a deal trough the forum, chat using gossip, but it may be hard due time zones issues to be on-line at the same time.

 

It would be nice to have a bot to help in those trades. The functionality should be something like this: I can deposit some items to the bot (it should be near the storage), and the bot will give me some kind of transaction id, for example:

 

Assuming PlayerA wants to trade with PlayerB (PlayerA wants to sell 1000 HEs to PlayerB for 7000gc), then using the TraderHelper should be:

 

1.- PlayerA deposits the 1000 HEs to TraderHelper and Gossip PlayerB

 

[PM to TraderHelper: deposit for PlayerB] (here it opens the trade window and accepts any items you deposit)

[PM from TraderHelper: Hi, your deposit id is 55445666]

 

[PM to Gossip tell PlayerB I made a deposit with 1000 HEs, the id is 55445666, remember, it was 7000gc]

 

2.- PlayerB logs on, gets the Gossip message and deposits the 7000gc. For PlayerA safety he wont get the HEs yet he will get them later when PlayerA gets the 7000gc. Then PlayerB Gossip PlayerA telling him that the money is ready.

 

[PM to TraderHelper: deposit id 55445666] (here it opens the trade window and PlayerB deposits 7000gc, but does not get the 1000 HEs yet)

 

[PM to Gossip tell PlayerA All done, 7000gc in the deposit]

 

3.- PlayerA logs on later, checks the deposit and if he is OK with what PlayerB has deposited in exchange, he takes the 7000gc, releasing the 1000 HEs to be taked by PlayerB.

 

[PM to TraderHelper: deposit id 55445666] (here it opens the trade window with the 7000gc deposited by PlayerB, if PlayerA is OK with the 7000gc he can take it, if not he can use other command and take his 1000 HEs aborting the trade)

 

[PM to Gossip tell PlayerB Good, take your HEs now]

 

Globally it's like a two phase trade like the usual trade window, only that it will have a bot in the middle of the trade to help people trading in different time zones.

 

It should be needed to work a bit in the commands for all the possible scenarios (withdraw items to abort trades or people making mistakes and depositing wrong amounts of stuff, etc) but I thing the idea is clear. Also may be we should found a better word than deposit and a better name than TraderHelper but that is the less important thing...

 

I think it's a safe fool prof method, don't see any hole or any way some player could take fool it (But you never know)

 

So, what do you thing of my little "use case"? ;)

Share this post


Link to post
Share on other sites

Wouldn't a quicker way be:

- Give bot item to hold

- Tell bot name of player picking up

- Tell bot required payment (for simplicity, always in gold coins)

 

Then playerB can pick up *IF* he pays the gold. And you are gossip'd (or can check from time to time) that the money is there. The bot keeps a percentage and you can get the rest

 

And don't forget the command to cancel the transaction and be able to retrieve your stuff (useful if the market changes overnight because of an update or if the player decides not to go through the trade or just takes way to long to pay the bot)

Share this post


Link to post
Share on other sites

Yes Ghrae, you are right. I always tend to make things more complicated of what they really are. Your suggestion is good if we use always gold coins, which I think would be most of the deals. B)

 

PlayerA can deposit to the TraderHelper this way:

 

/TraderHelper deposit <PlayerB> <required_gold_coins>

* Here opens the trade window to deposit the items...

 

/TraderHelper withdraw <PlayerA>

* Here opens the trade windows to allow PlayerB give the gold coins in exchange and get the items deposited by PlayerA. Here I think that PlayerB should give PlayerA name because this way he PlayerB can have two or more deals in progress...

 

/TraderHelper get_money <PlayerB>

* Here opens the trade window to give the payment to PlayerA

 

Other commands should be:

 

/TraderHelper cancel <PlayerB>

* Opens the trade windows and gives back to PlayerA the items (Abort the deal)

 

/TraderHelper check <PlayerB>

* Checks if PlayerB has made payment

 

And of course we should have a help command.

 

The bot keeps a percentage and you can get the rest

 

About this I'm not sure, I thought it first as a non-profitable bot like Gossip, but for sure it can be used to get some profit or make some donation to the GIWS... I'll keep those details to the one who implements/hosts it (and to Entropy).

 

By the way, even when I can actually program in Java/C# (the first one preferably), and even when I really would like to mess with the code ;) I don't have enough free time to set up all the development environment, and code it from scratch (or from other source), and solve all the hosting details, etc, all by myself. So if any one more experienced developing bots want do it that would be nice, and if he/she wants/can let me help a bit it would be really nice :D

Edited by piojosnos

Share this post


Link to post
Share on other sites
Be prepare for people to dump useless junk on the bot just to fill it up.

Have it drop anything that is stored in it too long (It stores entry input dates), or have the bot tell its owner the next time they talk to it that it has a gift for them :D But have items retrievable by the initial owner in case something happens..

 

That won't fix it completely... But no trade bot is perfect in this aspect :) People try to 'break' bots all the time by overloading them, or taking all of their gold. :D

Share this post


Link to post
Share on other sites
Be prepare for people to dump useless junk on the bot just to fill it up.

 

Well, I know bots are not supposed to be near storage. But if the bot is a "community bot" so no ones makes profit of him, may be we can get an exception and put the bot near storage. It will also allows it to make deals with bit amounts of ingredients (50k Iron and so...). In this case it does not matter if people tries to fill the bot with junk, cause all will go to storage.

 

I think that the previous idea, mixed with Airakose idea of storing "entry input dates" should solve the problem. For example, a trade can't last more than 7 days, if so, the bot keeps the items and they are lost for ever for the original owners :). Items keep by the bot that way can be used to make public contests and so. Of course the bot will warn the owner the day before the items expire that if he doesn't cancel the deal and get the items back the bot will keep them.

 

As I told, before, I'm thinking of this as a (non profit) community bot, so I don't know if the rule of not being near storage could be break for this particular case. If the bot is not in the reach of a storage I think it wont be very useful.

Share this post


Link to post
Share on other sites

some more comments:

- preferabely the player open the trade, then issue the commands (as in normal trade the /bot buy 123 something) so the bot does not have to check, if the player is on the same map and near and so .... save some time and make it more clearer

- the payment is not needed to be in gc only - we can use some command like the "buy" to set, what player A wants from player B - the bot simply would remember all the items and quantities

- the bot should gossip both/respective players on its own with transaction id - avoid the problem with misstyping at human side

- the bot should gossip both players every (day/5 hours/other interval) because the first message can get lost easy (as client crashed just after getting the msg, hidden in ton of spam, ..., accessing from other computer, where i do not have the history files ...)

- there is possibility to have more trades between players A and B at the same time, so the transaction id should be used anyway

- bot should check players, he is trading with so even if player C somehow quess the transaction id, then he could not mess with the trade (yes, i have other prices and even other offers for friends, then for the rest of world ... i do not want to sell some rare items for good price to someone i do not know/i hate)

 

- the bot should use some DB engine for storing data, plain text files are not very good for this type of things

- bot should move all items from inv to storage immediatelly

- the bot capacity is limited, so it would work only when bot is allowed to use the storage

Share this post


Link to post
Share on other sites

Well to get the status of community bot, you will need to talk to entropy stating what it will do and why you feel it will benefit the community enough to warrant special treatment/free. He will make that decision.

However, as far as I know, the only bot granted that status is Gossip (possibly EternalTrivia as well but I don't remember), so the requirements are pretty tough to meet.

Share this post


Link to post
Share on other sites
Well to get the status of community bot, you will need to talk to entropy stating what it will do and why you feel it will benefit the community enough to warrant special treatment/free. He will make that decision.

However, as far as I know, the only bot granted that status is Gossip (possibly EternalTrivia as well but I don't remember), so the requirements are pretty tough to meet.

 

Rraisa, Eternalbroker, as well as Eternaltrivia and gossip are all free, no?

Share this post


Link to post
Share on other sites
Well to get the status of community bot, you will need to talk to entropy stating what it will do and why you feel it will benefit the community enough to warrant special treatment/free. He will make that decision.

However, as far as I know, the only bot granted that status is Gossip (possibly EternalTrivia as well but I don't remember), so the requirements are pretty tough to meet.

 

Rraisa, Eternalbroker, as well as Eternaltrivia and gossip are all free, no?

Maybe, I have no idea. You'll have to ask ent or pip and usl. However getting permission to be located at a storage is not too likely. Only one bot has that. I was more addressing that specific special treatment but either way, it's still a hard designation to get either way, which was the point I was making. :pickaxe:

Short version: It needs to be a darn good project and he needs to talk to ent with all details.

Share this post


Link to post
Share on other sites
- preferabely the player open the trade, then issue the commands (as in normal trade the /bot buy 123 something) so the bot does not have to check, if the player is on the same map and near and so .... save some time and make it more clearer

 

Yes, this it's 100% true, better to implement it like the trade bots do.

 

- the payment is not needed to be in gc only - we can use some command like the "buy" to set, what player A wants from player B - the bot simply would remember all the items and quantities

 

Well, that was my initial idea, but Ghrae pointed that should be simple with gc only, and I think he is right. I believe it's easier to make a first implementation using gold coins only and then see if we can upgrade it to use anything else in further versions.

 

- the bot should gossip both/respective players on its own with transaction id - avoid the problem with misstyping at human side

- the bot should gossip both players every (day/5 hours/other interval) because the first message can get lost easy (as client crashed just after getting the msg, hidden in ton of spam, ..., accessing from other computer, where i do not have the history files ...)

 

Yes, this is nice idea, the only detail is that I think we should not use transaction id now (read below)

 

- there is possibility to have more trades between players A and B at the same time, so the transaction id should be used anyway

 

I think first implementation should allow only one trade at the time between PlayerA / PlayerB just for simplicity (But many trades at the same time between PlayerA and other players different from PlayerB).

 

- bot should check players, he is trading with so even if player C somehow quess the transaction id, then he could not mess with the trade (yes, i have other prices and even other offers for friends, then for the rest of world ... i do not want to sell some rare items for good price to someone i do not know/i hate)

 

Yes, trade is absolutely between PlayerA and PlayerB. It's a peer to peer trade, so not even if PlayerC guess some how the transaction id (in fact if we allow only one trade between PlayerA and PlayerB at the same time there is no transaction id at all) he would be able to buy things deposited by PlayerA.

 

- the bot should use some DB engine for storing data, plain text files are not very good for this type of things

- bot should move all items from inv to storage immediatelly

- the bot capacity is limited, so it would work only when bot is allowed to use the storage

 

Using a DB of course (I was thinking in MySQL or PostgreSQL). Items from inv to sto, yes, in fact if we are trading with big amounts of ingredients then items should go to storage directly.

 

Well to get the status of community bot, you will need to talk to entropy stating what it will do and why you feel it will benefit the community enough to warrant special treatment/free. He will make that decision.

However, as far as I know, the only bot granted that status is Gossip (possibly EternalTrivia as well but I don't remember), so the requirements are pretty tough to meet.

 

Yes Aislinn, I know it's tough, and I'm sure there are very good reasons for things to be that way.

 

I'll try to work a bit with some bot sources I've found around in Google. Currently I'm trying a bit with Java and JELC (I'm in Linux so can't use C# and I have not a good base code for bots in C++). I'll made some small bots in test server to check if I'll finally implement it, and then I'll talk to Entropy to see if it's possible to use it as a community bot. Then we'll see what happens :)

 

Thank you all for the ideas, I appreciate them :pickaxe: By the way, don't expect results soon... I'll do this veeeeery slow because of my RL work :icon13:

Share this post


Link to post
Share on other sites

Nobody seems to have mentioned the very definite multiplay problems inherent in this..

Share this post


Link to post
Share on other sites
Nobody seems to have mentioned the very definite multiplay problems inherent in this..

Well I am always looking at the multiplay potential problems with all bots, I don't see this as any worse than any other trade or guild storage bot unless I am missing something.

(And yes, that WAS my first thought too but I view all bots as potential problems regarding multiplay :pickaxe: )

Share this post


Link to post
Share on other sites
Nobody seems to have mentioned the very definite multiplay problems inherent in this..

Well I am always looking at the multiplay potential problems with all bots, I don't see this as any worse than any other trade or guild storage bot unless I am missing something.

(And yes, that WAS my first thought too but I view all bots as potential problems regarding multiplay :hiya: )

 

Mmm, the bot can probably be used as a man in the middle :icon13:. For example, suppose someone wants to do illegal multi and move all the stuff from his main to his alt, he can set up a trade with the bot and ask in exchange only 1gc as payment, then the alt can pay 1gc and get all the main stuff.

 

I know Aislinn that man in the middle can be detected by you, and some people may try to use the bot for that purposes... The bot at the end is just a bot and is not his fault (so don't ban the bot please, please... just kidding). I don't know if that will give you any headache (and I don't want it to give you any :) )

Share this post


Link to post
Share on other sites

There is good trade bot code made by Krones (so ask him) - i am using it on Linux (as i do not have Windows at all :icon13: )

 

The multiplay - the bot is inoncent (if is not owned by the offender), but when i will write my own code (and i will in 1-2 years a hope) i would not mind send monthly list of all participant names to Aislin (so she can scan it for multi and act on it, or even send me back who to ban from the bot for multiplaying)

 

(still there is possible to trade with one bot with more alts and do not break the rules - for example, if all alts only sells to the bot, or in case of your bot, if no alt place trade to another one, only to different players - but you should send list of pairs A-B to help with it)

Share this post


Link to post
Share on other sites

Using such a bot for illegal multiplay is an issue, but that can be ignored.

 

The most important point, why such a bot would be a fail is, that it will be filled up with junk just by bored ppl, and no matter, if it has storage access or not, some ppl might make it a sport to fill up all slots the bot has, and then it's useless.

 

The basic idea is nice, use the Broker and gossip to find a deal and fix it and then exchange the items/gold via such a bot.

 

And since a bot is nothing more than a player's account run by a piece of software, it's limited in the slots it can use in it's inventory or storage. So it can be just spammed with any junk. (yes, you can do somethings with limits, banning players from using the bot, setting a deadline, and after that, the bot just drops the items and let them poof, and and and, but thats not really handy, i guess.)

 

A solution might be NPC's without any limits, to do that job (Bank clerks, maybe, so the Banks in game can be used).

 

Players give stuff to the clerks with a command like "SELL <item> TO <playername> FOR <amount> GC" with a PM.

 

Then the NPC removes the stuff from the players inventory/storage.

 

The NPC tries then to inform the buyer via PM, that s/he can buy some stuff from the NPC.

 

After a given amount of time, lets say, 7 days, when the buyer didnt buy the items, the owner of the items will be informed via PM to withdraw the items, and if s/he doesnt withdraw the items during, lets say 7 days, the items are being deleted by the NPC.

 

How to avoid illegal multiplay with such an NPC? No same IP trades are allowed, you really dont need to use that NPC to give stuff to your gf, kids or whatever, you just can trade :icon13:

 

Well, just my 2 cents.

 

Piper

Edited by The_Piper

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×