Thread Tools Display Modes
07-01-05, 11:23 PM   #1
[HM]CodeMaster
A Murloc Raider
Join Date: Jul 2005
Posts: 6
Question In-game Thottbot alternative (this is not a "embedding thott browser in WoW" thread)

I am quoting my own post in curse-gaming.com:

Firstly, I must say that I have not done any LUA programming or UI mod myself. (looking forward to learning it though, shouldn't be too hard)

Theoritically this should be possible, as thottbot can gather location of targeted NPC into a file for later submission to the web. Now rather than only saving information in text file, if the info is spammed into the public channel, and other people running the addon just catch the info received from that channel, and save in a text file in their own computer, we can create a network of in-game NPC information database.

Furthermore, working in P2P basis, users can search the location of NPCs and make it show up in world map/minimap (should be doable when tie to map note) or if the record is not found locally, a search query can be sent through the same public channel and other user with the addon will return the result.

With enough users, the database can quickly and accurately grow as the information is propagated throughout the realm.

Please respond regarding the probability in implementing the idea, Thanks!

Last edited by [HM]CodeMaster : 07-01-05 at 11:27 PM.
  Reply With Quote
07-01-05, 11:23 PM   #2
[HM]CodeMaster
A Murloc Raider
Join Date: Jul 2005
Posts: 6
Arrow Just to make it clearer:

User A target an NPC -> location saved in savedvariable.lua
-> location sent through a public channel
User B and C received the location via public channel -> location saved in savedvariable.lua

Now when User C needs the location of...Lady Katrana Prestor...say:
User C search "Katrana Prestor" -> look for matches in savedvariable.lua
If found: display match
If not found: send search query through a public channel
User B received the query and look for matches in his savedvariable.lua, the location is then sent back through private message or public channel
When User C received the match from User B, the record is saved in his own savedvariable.lua so that future queries on the same record can be done locally.

Matches displayed on User C's UI. He can opt to put a flag on his minimap to show the location of Lady Katrana Prestor (just like in mapnote/gatherer).
  Reply With Quote
07-02-05, 12:54 PM   #3
Littlejohn
A Warpwood Thunder Caller
AddOn Author - Click to view addons
Join Date: Jun 2005
Posts: 90
This is exactly the same as an IRC bot. (Oh no! another bot discussion!

The main problem will be how to avoid flooding the channel with answers because you've got so many copies of the bot running simultaneously. If you can solve that problem, it's safe to have the bots listen to general and answer questions directly -- people don't even have to run the bot to ask it questions.

You could avoid flooding by using a side channel to implement a token ring. When a question is asked, the bot with the token answers. If it can't answer, it passes the token. If all bots listen to the answers, they will eventually learn everything (or at least the answers to the most common questions).

The idea could be pushed quite far, but I'm pretty sure people would be uncomfortable with "spy bots" or "auction house bots". These would be bots with known names that you could whisper to get dynamic information. For example, "/w greenspan price of silk?" and if greenspan was sitting in the auction house, his bot could give you the price in real time.
  Reply With Quote
07-02-05, 02:27 PM   #4
Osagasu_Jiyuu
A Cyclonian
 
Osagasu_Jiyuu's Avatar
Join Date: Jun 2005
Posts: 46
Originally Posted by Littlejohn

The idea could be pushed quite far, but I'm pretty sure people would be uncomfortable with "spy bots" or "auction house bots". These would be bots with known names that you could whisper to get dynamic information. For example, "/w greenspan price of silk?" and if greenspan was sitting in the auction house, his bot could give you the price in real time.
Well if someone wants to waste $15 a month to sit a character in the AH permanently for that purpose... I'd have nothing against it. It's their money.
______________________________

Here's an idea: each person is given a number at startup (Random seed, size depending on popularity of this concept mod). On query, generate between the same two random numbers, then all bots who have the correct seed reply. If nothing responds, generate another seed and try again, after ten tries or so with the seed, reply saying that nothing was found.

Now at the start this mod wouldn't need (or want) that, so add it in after the mod is popular. once the mod gets really popular, you'd have to narrow it down some more, say by generating a random number and everyone getting below a 10 (or above a 90 or whatever) replies to the query.

____________________________

I know it's damn rough, but at least it's an idea, that, if implemented properly, could work.
__________________
Characters - All Sentinels
Creek
Starbreak
Osagasu
Stream
Sondessa
Saphilna


That annoying troll from the WoW forums who honestly means well. T_T
  Reply With Quote
07-02-05, 03:12 PM   #5
Littlejohn
A Warpwood Thunder Caller
AddOn Author - Click to view addons
Join Date: Jun 2005
Posts: 90
I'm not sure it would work. You'd have to set the chance of getting a "correct" number pretty high to get any bot to respond at all, but then you've also got a very good chance for multiple bots to respond.

It's the birthday paradox at work. http://en.wikipedia.org/wiki/Birthday_paradox

I would be really annoyed if 2 or 3 bots replied with an answer every time a question was asked.

Just go with token ring. You're trying to do ethernet...

On the subject of auction bots: You don't need somebody to spend all day in the AH. (I'm sure there are those people though!) All you need is to tie a side-channel broadcast to the auction house events. As soon as you go to the AH, you notify all bots you're there.

You'd need to create an enhanced whisper function that takes "symbolic" player names. The bot could keep track of the symbol -> player mapping. Actually that would be kind of cool in general. It would be nice to have 1/2/3/4 for party members. "/w 1 ..." would whisper party1.
  Reply With Quote
07-02-05, 03:32 PM   #6
Osagasu_Jiyuu
A Cyclonian
 
Osagasu_Jiyuu's Avatar
Join Date: Jun 2005
Posts: 46
Originally Posted by Littlejohn
I'm not sure it would work. You'd have to set the chance of getting a "correct" number pretty high to get any bot to respond at all, but then you've also got a very good chance for multiple bots to respond.

It's the birthday paradox at work. http://en.wikipedia.org/wiki/Birthday_paradox

I would be really annoyed if 2 or 3 bots replied with an answer every time a question was asked.

Just go with token ring. You're trying to do ethernet...
.

Oddly enough, that's exactly what I had in mind when I was writing up the idea.

And if two or three bots reply, just display one... if you're using an addon that masks the channel and displays the information (CTA, Cosmos, and PlayerMerchant I believe all use this), you don't really have a problem with /seeing/ more than one reply, just the server overhead.
__________________
Characters - All Sentinels
Creek
Starbreak
Osagasu
Stream
Sondessa
Saphilna


That annoying troll from the WoW forums who honestly means well. T_T
  Reply With Quote
07-02-05, 03:47 PM   #7
[HM]CodeMaster
A Murloc Raider
Join Date: Jul 2005
Posts: 6
Cool

I never think, or support, the idea of listening on General channel, as it WILL DEFINITELY generate a massive amount of data. I am thinking of a "Privately created" public channel, just like when you use the /channel command, but the channel is hidden in the chat window, so the user will not get annoyed with the info spammed.

I meant, this works on the same basis as Call to Arms. It spams the syntax to a "privately created" public channel. The user does not need to see the channel and they will not. So if two or three bots reply then it's not really a problem at all, because the user can't see it.

Request syntax may be like <Req. ID>|<Keyword>
Response may be <Req. ID>|<NPC Name Matched>|<Coordinates>

Remember that one search may yield multiple result. If user searches "Engineering" they will get about 10 different results of all engineering trainers around the world. Same thing goes when they search for "Gryphon Master" and such.

Another thing is that if all searches and search responses are done through the channel, then everytime somebody search something, other people can collect the data too. That means every search query will help growing the database. Eventually the number of actual 'requests' will be reduced to minimal as everyone have a copy of the DB on their own PC.

As for the server overhead issue, that's pretty much the only thing I am concerned about ever since the idea came up in my head. If more developers can come and discuss on this topic then we might be able to get around it some way.

And lastly, just a quick note here, the AH bot and such will not work on 1.6 - Blizzard will render all automatic movement mods useless. So if the bot is to be kept running, then the AH window must be kept open all the time. After some amount of time, user will go AFK, then get disconnected. If it is to be relied on casual AH users, the chance that the user WITH THE BOT will be at the AH, more importantly he'll have to be VIEWING the page WITH the requested query. This is just practically impossible. Bot host will need a simple 3rd party program that will move the mouse for him every so often, and as soon as a 3rd party EXE is involved, the ToS is broken, and it's illegal. So I am not very much concerned on spybot/AH bot issue.

If you think "why must the requested AH query on the page the bot is viewing, simple. If you run the bot and are browsing for potions while there is an incoming request for a sword, if you want to response, you will have to SEARCH for that sword ON YOUR AH SCREEN to get the result, right? Imagine how annoying it will be if you are browsing through the result you've searched for your new weapon and suddenly the page changes to results of copper bars
_________________________________________

Wait I have just realised that the thread is in General Authoring board. I thought I was going to put it in request board, did I click the wrong board?? Or was it moved??

Last edited by [HM]CodeMaster : 07-02-05 at 05:01 PM.
  Reply With Quote
07-03-05, 12:11 AM   #8
[HM]CodeMaster
A Murloc Raider
Join Date: Jul 2005
Posts: 6
I do urge mod authors to come and discuss on this, otherwise the idea can't progress any further. For me it looks pretty useful, don't know about other people though :P
  Reply With Quote
07-03-05, 01:05 AM   #9
Beladona
A Molten Giant
 
Beladona's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2005
Posts: 539
useful yes. Feasible maybe not. There is a reason that blizzard has included things like raid-based health and buff info to the internal client rather than using a chat channel to propagate info to other users. Using that method robs the client of a lot of bandwidth, moreso than you realize till you get a lot of people there using it...

I have no hard numbers to show you, but I can tell you that given enough people using this mod, and passing data through a chat channel, you will start to see a relatively significant drop in performance over the longterm. With something like CTRaid at least you had a limit to how many people would be part of this chat network. In your mod this would be only limited by how many people are on the server, and how many of those actually use that mod.

Seriously though, if the method CTraid used for sharing hp/buff info within a raid was considered by blizzard as a bandwidth concern (which prompted them to embed the functionality into the client itself in a more efficient manner) then imagine 100 or more people in a single chat channel propagating data to each other...

Amd tp add further to this issue, is the ever growing problem is storing large amounts of data in the client. The only file you can write to and have it persist is the SavedVariables. If this gets too large, you again start to see game performance issues. Regardless it would be interesting to at least attempt something like this, but I just wanted to make sure you were aware of some of the more obvious issues that you could end up being plagued with...

Last edited by Beladona : 07-03-05 at 01:07 AM.
  Reply With Quote
07-03-05, 01:21 AM   #10
Beladona
A Molten Giant
 
Beladona's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2005
Posts: 539
if you were to implement this though, my suggestion is this:

Use the concept of Browse Masters in MS Networks. You would follow these basic rules:

At login you query the channel to find out who the browse master is.
If none reply, you become the new master.
If one does reply, that user is given master in your session.

When you request data, you check your own entries.
If the data is not present locally, you query the data master.
If the data master cannot provide the info, a new master election is called.
Clients query local tables, and also query total tables.
The client with the answer, and the most total tables becomes master.
New master responds with answer to original query.
---------------------------------------------------------------------------------------
It seems like a lot of work, and it may be. But it would also reduce the number of responses considerably and thus reduce bandwidth strain as well...

I hope that made sense...
  Reply With Quote
07-03-05, 04:51 AM   #11
[HM]CodeMaster
A Murloc Raider
Join Date: Jul 2005
Posts: 6
At last I can thank someone for some practically possible concept. Three cheers for the great idea Beladona!

Now it's my turn to go and have a good read through LUA guide. If any author wants to implement the idea, feel free! I will do what I can to help out.
  Reply With Quote
07-03-05, 10:38 AM   #12
Beladona
A Molten Giant
 
Beladona's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2005
Posts: 539
I would maybe also suggest not making all clients sinc to the same data as the others. In other words, if you log in and there is a master, and the master has more tables than you, you don't automatically get all the data he has. This would take a lot of bandwidth and time depending on how much more data he has than you.

You COULD maybe add a "data sync" button that queries for a dump of the data tables from the master. Only the person that queries for the sync actually gets updated. That way you aren't locking 100+ people up in the middle of whatever they are doing as their client listens and responds to hundreds of data tables being pushed through chat.

This would involve a listening engine that basically uses a toggle. It listens in a specific chat channel, and if query is set to on, it will collect data. If query is set to off, it will not. Browse masters always have query set to on, because they have to respond to queries. If you ask something, your query variable gets set to on, so you can listen for the answer, and as soon as the answer is recieved, it gets toggled off. Master Elections automatically enabled query to be toggled on for everyone for the duration of the election, and also disabled active querying for all clients until the election is finished...
  Reply With Quote
07-03-05, 11:08 AM   #13
Hwap
A Murloc Raider
AddOn Author - Click to view addons
Join Date: Jun 2005
Posts: 7
I have an idea on this, somewhere along the lines of Beladona's response.

Hwap /locate U'Cha

the response would be from everyone with a 1 if they have it in thier DB's. Then the others that don't have it in thier DB can then request it from one of the many people that responded (get an array of users back and randomly select one so we don't bombard the same user over and over). This would allow others ingame to quickly populate thier database and cut down on traffic in the end (possibly).

the only down side would be trying to figure out, other then /w, a way to directly communicate with the party you want to get the info from. Perhaps the response, instead of being 1, can be a channel that is created automatically, listened on for 10-15 seconds, and then disconnected from. so the response could be [channel#] [chanpass].

hwap /locate u'cha
zhala 5 abacadaba
shakalaka 8 xyzz

zhala creates chan 5 w/ pass (waits for 10 seconds, then closes it out)
shakalaka creates chan 8 w/ pass (waits for 10 seconds, then closes it out)

one channel can specifically be used to communicate queries, the response channel could be tricky
  Reply With Quote
07-14-05, 09:42 AM   #14
Syntoad
A Murloc Raider
 
Syntoad's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2005
Posts: 6
While for a small network this may not be an issue, if you were to get a lot of people doing it all at once, it would be a lag nightmare.

With all the methods discussed so far everything is still done in a channel.

For example let's say you have 50 users. All with a decent connection, so we'll assume about 2 seconds to pass the token, and either respond or pass. That means about 1:40 to do a search (assuming no one has the answer) and 50 messages.

50 messages in almost two minutes probally isn't that bad. Now what if two people search at the same time? You've doubled both the time to search and the amount of spam in the channel. I'm guessing that by the time you get up to four or five searches, it would be enough to start causing lag.

What might be better is if the channel instead handled updates. Every so often (maybe two or three hours) a client would offer an update (offer, not request) Then anyone who wanted the update (people who haven't updated in 12 hours) would join the channel and recieve the new data.
  Reply With Quote
08-08-05, 08:46 AM   #15
GM Duncan Idaho
A Kobold Labourer
 
GM Duncan Idaho's Avatar
Join Date: Aug 2005
Posts: 1
I know that this is not what you all want to hear, but I made a windows application to make browsing thottbot easier... I did not upload it anywhere cuz I didn't want to release it without thottbot's permission, so I e-mailed them using the subscription page on the thottbot website, but got no reply.. This is some kinda learning project for me because I'm new in programming. If I ever get resonse from them, it will be released for free so everyone can use it if they like.
(If anyone in charge of thottbot.com is reading this post, please e-mail me. I want to send you the software so you can examine it if it matchs your expectations, and if you have no problems with it, I will release it)

And about the thottbot add-on for wow... I don't know how thottbot database is being ran, but I think they might not like that idea... The reason for that is that -I believe- thottbot gets paid for the advertisements on the website, and such an add-on would prevent them from gaining money...

English aint my primary language so please excuse me if this post was hard to understand due to sucky language

Everyone have fun
__________________
GM Duncan Idaho, The Ghola Mentat
  Reply With Quote

WoWInterface » Developer Discussions » General Authoring Discussion » In-game Thottbot alternative (this is not a "embedding thott browser in WoW" thread)

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off