PQR - Rotation Bot menu

Shout-Out

User Tag List

Page 89 of 779 FirstFirst ... 39858687888990919293139189589 ... LastLast
Results 1,321 to 1,335 of 11681
  1. #1321
    averykey's Avatar Contributor
    Reputation
    158
    Join Date
    Dec 2011
    Posts
    448
    Thanks G/R
    0/0
    Trade Feedback
    2 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Rep+ to anyone who can help me with my questions.

    edit:

    Better seal upkeep so it doesn't refresh during battle.

    local sealOfTruth, _, _, _, _, _, sealOfTruthEndTime = UnitBuffID("player", 31801)

    -- 15 Minutes
    if sealOfTruth == nil or sealOfTruthEndTime <= 900 then
    return true
    end

    Can someone explain this. , _, _, _, _, _,
    Last edited by averykey; 07-05-2012 at 11:59 AM.
    My Svn - https://subversion.assembla.com/svn/averykeys-svn/

    PQR - Rotation Bot
  2. #1322
    Dimonoff's Avatar Master Sergeant
    Reputation
    12
    Join Date
    May 2012
    Posts
    96
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hey all, when i start my wind_monk_nova profile in chat i seе "You are missing the idTip lua file to view Spell ID".
    Where can I download this file?

  3. #1323
    crystal_tech's Avatar Elite User
    Reputation
    468
    Join Date
    Feb 2008
    Posts
    1,033
    Thanks G/R
    1/6
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by averykey View Post
    Rep+ to anyone who can help me with my questions.

    edit:

    Better seal upkeep so it doesn't refresh during battle.




    Can someone explain this. , _, _, _, _, _,
    the _,_,_,_ are fillers to get to the api call you want.
    for example:
    1 call 2 call of the api
    local sealOfTruth, _, _, _, _, _, sealOfTruthEndTime = UnitBuffID("player", 31801)

    the blanks are differ calls for that same api there are ways to make it easier in this case your code is :
    Code:
    local sealOfTruth, _, _, _, _, _, sealOfTruthEndTime = UnitBuffID("player", 31801)
    
    -- 15 Minutes
    if sealOfTruth == nil or sealOfTruthEndTime <= 900 then
    return true
    end
    you can do this how ever you need to compare endtime with gettime to get a value:
    Code:
    local SealTimer = select(7, UnitBuffID("player", 31801)) 
    -- with 'select' i'm selecting the seventh call of the api, if you wanted just the name it would be 1 not 7 etc etc
    
    if not SealTimer or SealTimer - GetTime() <= 9 then
         return true
    end
    hope this helps.
    Last edited by crystal_tech; 07-05-2012 at 12:33 PM.

    Please if someone helped you donate rep to them.

  4. #1324
    crystal_tech's Avatar Elite User
    Reputation
    468
    Join Date
    Feb 2008
    Posts
    1,033
    Thanks G/R
    1/6
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Dimonoff View Post
    Hey all, when i start my wind_monk_nova profile in chat i seе "You are missing the idTip lua file to view Spell ID".
    Where can I download this file?
    its an addon off of curse/wowinterface. with addons going enabled soon you won't really need it as a part of pqr

    Please if someone helped you donate rep to them.

  5. #1325
    averykey's Avatar Contributor
    Reputation
    158
    Join Date
    Dec 2011
    Posts
    448
    Thanks G/R
    0/0
    Trade Feedback
    2 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by crystal_tech View Post
    the _,_,_,_ are fillers to get to the api call you want.
    for example:
    1 call 2 call of the api
    local sealOfTruth, _, _, _, _, _, sealOfTruthEndTime = UnitBuffID("player", 31801)

    the blanks are differ calls for that same api there are ways to make it easier in this case your code is :
    Code:
    local sealOfTruth, _, _, _, _, _, sealOfTruthEndTime = UnitBuffID("player", 31801)
    
    -- 15 Minutes
    if sealOfTruth == nil or sealOfTruthEndTime <= 900 then
    return true
    end
    you can do this how ever you need to compare endtime with gettime to get a value:
    Code:
    local SealTimer = select(7, UnitBuffID("player", 31801))
    if not SealTimer or SealTimer - GetTime() <= 9 then
         return true
    end
    hope this helps.
    Thanks for catching the error.
    Code:
    local sealOfTruth, _, _, _, _, _, sealOfTruthEndTime = UnitBuffID("player", 31801)
    
    if sealOfTruth ~= nil then
    	sealOfTruthEndTime = sealOfTruthEndTime - GetTime()
    end
    
    -- 15 Minutes
    if sealOfTruth == nil or sealOfTruthEndTime <= 900 then
    return true
    end
    Can you explain what calls they are?
    Can I just call all the api's with a simple code instead of a _,_,_ or does it slow the rotation?

    Would it be fine to just do _, _, _, _, _, for all spells?
    I saw in bubbas frost profile it had only two ,_,_ for his trinket code.

    Why are their two variables when you do the api call? sealOfTruth refers to the spell and sealOfTruthEndTime refers to something in the api? or all 5 of those api calls?

    Does the variable only apply for the last api call or all of them?

    edit:
    Code:
    local inquisition, _, _, _, _, _, inquisitionEndTime = UnitBuffID("player", 84963)
    local holyPower = UnitPower("player", 9)
    
    if holyPower == 2 and PQR_SpellAvailable(35395) and UnitBuffID("player", 86172) then
    	CastSpellByID(35395,"target")
    	CastSpellByID(85256,"target")
    	return true
    end
    Will it stay on the spell until it's completed? So cast crusader followed by templar then return true to cast templar again.

    Would solve my problem with knowing when a templar is cast, I can just place it above exo/how.
    Last edited by averykey; 07-05-2012 at 12:42 PM.
    My Svn - https://subversion.assembla.com/svn/averykeys-svn/

  6. #1326
    crystal_tech's Avatar Elite User
    Reputation
    468
    Join Date
    Feb 2008
    Posts
    1,033
    Thanks G/R
    1/6
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by averykey View Post
    Thanks for catching the error.
    Code:
    local sealOfTruth, _, _, _, _, _, sealOfTruthEndTime = UnitBuffID("player", 31801)
    
    if sealOfTruth ~= nil then
    	sealOfTruthEndTime = sealOfTruthEndTime - GetTime()
    end
    
    -- 15 Minutes
    if sealOfTruth == nil or sealOfTruthEndTime <= 900 then
    return true
    end
    Can you explain what calls they are?
    Can I just call all the api's with a simple code instead of a _,_,_ or does it slow the rotation?

    Would it be fine to just do _, _, _, _, _, for all spells?
    I saw in bubbas frost profile it had only two ,_,_ for his trinket code.

    Why are their two variables when you do the api call? sealOfTruth refers to the spell and sealOfTruthEndTime refers to something in the api? or all 5 of those api calls?

    Does the variable only apply for the last api call or all of them?

    edit:
    Code:
    local inquisition, _, _, _, _, _, inquisitionEndTime = UnitBuffID("player", 84963)
    local holyPower = UnitPower("player", 9)
    
    if holyPower == 2 and PQR_SpellAvailable(35395) and UnitBuffID("player", 86172) then
    	CastSpellByID(35395,"target")
    	CastSpellByID(85256,"target")
    	return true
    end
    Will it stay on the spell until it's completed? So cast crusader followed by templar then return true to cast templar again.

    Would solve my problem with knowing when a templar is cast, I can just place it above exo/how.
    ok

    i'm going to use unitbuff as the example.

    Code:
    name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, 
    shouldConsolidate, spellId = UnitBuff("unit", index or ["name", "rank"][, "filter"])
    so if name is 1, rank is 2, icon is 3, so on and so on. thats how select works you select based off of what info you need. in some cases yes you will need both a name of the spell and expirationTime to get the info you need. however most of the time if you just need to see if a de/buff is up its easier to just check for the expirationTime of that spell.

    as you can see there are many calls to UnitBuff but most aren't needed for profile use.

    now _,_ are placeholders for the names that we skip, you can name them any way you'd like.
    Code:
    local _,_,_,_,_,_, Timer = UnitBuffID("player", 80108)
    is the same as
    local Timer = select(7, UnitBuffID("player", 80108))
    with the first method you can't skip over calls hince the placeholders its just how lua works.

    also I don't like using more than 1 castbyspellIDs in one if then statement. use the actions part for that.

    Please if someone helped you donate rep to them.

  7. #1327
    averykey's Avatar Contributor
    Reputation
    158
    Join Date
    Dec 2011
    Posts
    448
    Thanks G/R
    0/0
    Trade Feedback
    2 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by crystal_tech View Post
    ok

    i'm going to use unitbuff as the example.

    Code:
    name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, 
    shouldConsolidate, spellId = UnitBuff("unit", index or ["name", "rank"][, "filter"])
    so if name is 1, rank is 2, icon is 3, so on and so on. thats how select works you select based off of what info you need. in some cases yes you will need both a name of the spell and expirationTime to get the info you need. however most of the time if you just need to see if a de/buff is up its easier to just check for the expirationTime of that spell.

    as you can see there are many calls to UnitBuff but most aren't needed for profile use.

    now _,_ are placeholders for the names that we skip, you can name them any way you'd like.
    Code:
    local _,_,_,_,_,_, Timer = UnitBuffID("player", 80108)
    is the same as
    local Timer = select(7, UnitBuffID("player", 80108))
    with the first method you can't skip over calls hince the placeholders its just how lua works.

    also I don't like using more than 1 castbyspellIDs in one if then statement. use the actions part for that.

    Let me give it a go,

    Default inq

    Code:
    local holyPower = UnitPower("player", 9)
    local divinePurpose = UnitBuffID("player", 86172)
    local inquisition, _, _, _, _, _, inquisitionEndTime = UnitBuffID("player", 84963)
    
    if inquisition ~= nil then
    	inquisitionEndTime = inquisitionEndTime - GetTime()
    end
    
    if inquisition == nil or inquisitionEndTime <= 2 then
    	if holyPower == 3 or divinePurpose ~= nil then
    		return true
    	end
    end
    Like this?
    Code:
    local holyPower = UnitPower("player", 9)
    local divinePurpose = UnitBuffID("player", 86172)
    local Timer = select(7, UnitBuffID("player", 84963))
    
    if inquisition == nil or Timer - GetTime() <= 2 then
    	if holyPower == 3 or divinePurpose ~= nil then
    		return true
    	end
    end
    edit:

    local holyPower = UnitPower("player", 9)

    if holyPower == 2 and PQR_SpellAvailable(35395) and UnitBuffID("player", 86172) then
    CastSpellByID(35395,"target")
    CastSpellByID(85256,"target")
    return true
    end
    Will it stay on the spell until it's completed? So cast crusader followed by templar then return true to cast templar again.

    Would solve my problem with knowing when a templar is cast, I can just place it above exo/how.
    Last edited by averykey; 07-05-2012 at 01:47 PM.
    My Svn - https://subversion.assembla.com/svn/averykeys-svn/

  8. #1328
    Dimonoff's Avatar Master Sergeant
    Reputation
    12
    Join Date
    May 2012
    Posts
    96
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by crystal_tech View Post
    its an addon off of curse/wowinterface. with addons going enabled soon you won't really need it as a part of pqr
    I I downloaded this Adon, but still shows an error.
    Attachment 9048
    What am I doing wrong?
    Bot self-buff but can`t dps(((
    Last edited by Dimonoff; 07-05-2012 at 01:57 PM.

  9. #1329
    Wonderworm's Avatar Sergeant
    Reputation
    26
    Join Date
    Jul 2012
    Posts
    51
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hey looking for a little help. I am making my own personal warrior profile for MOP and whenever I use code to get target's health I get a lua error if I am not targeting something. If I have something targeted it's fine. I also tried my profile on Live and it works fine even if not targeted. So just wondering if something has changed to cause this or if there is another way I need to do it for MOP. Here is the code .. I have tried it both ways.

    Code:
    local unithealth = 100 * UnitHealth(&amp;quot;target&amp;quot;) / UnitHealthMax(&amp;quot;target&amp;quot;)
    Code:
    local unithealth = UnitHealth(&amp;quot;target&amp;quot;) / UnitHealthMax(&amp;quot;target&amp;quot;) * 100

  10. #1330
    crystal_tech's Avatar Elite User
    Reputation
    468
    Join Date
    Feb 2008
    Posts
    1,033
    Thanks G/R
    1/6
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by averykey View Post
    Let me give it a go,

    Default inq

    Code:
    local holyPower = UnitPower("player", 9)
    local divinePurpose = UnitBuffID("player", 86172)
    local inquisition, _, _, _, _, _, inquisitionEndTime = UnitBuffID("player", 84963)
    
    if inquisition ~= nil then
    	inquisitionEndTime = inquisitionEndTime - GetTime()
    end
    
    if inquisition == nil or inquisitionEndTime <= 2 then
    	if holyPower == 3 or divinePurpose ~= nil then
    		return true
    	end
    end
    Like this?
    Code:
    local holyPower = UnitPower("player", 9)
    local divinePurpose = UnitBuffID("player", 86172)
    local Timer = select(7, UnitBuffID("player", 84963))
    
    if inquisition == nil or Timer - GetTime() <= 2 then
    	if holyPower == 3 or divinePurpose ~= nil then
    		return true
    	end
    end
    edit:



    Will it stay on the spell until it's completed? So cast crusader followed by templar then return true to cast templar again.

    Would solve my problem with knowing when a templar is cast, I can just place it above exo/how.
    almost, with the new code you don't have inquisition defined as a var so it will always equal nil, so you can drop that part

    Code:
    local holyPower = UnitPower("player", 9)
    local divinePurpose = UnitBuffID("player", 86172)
    local Timer = select(7, UnitBuffID("player", 84963))
    
    if not Timer or Timer <= 2 then 
         if holyPower == 3 or divinePurpose ~= nil then return true end
    end
    as for

    local holyPower = UnitPower("player", 9)

    if holyPower == 2 and PQR_SpellAvailable(35395) and UnitBuffID("player", 86172) then
    CastSpellByID(35395,"target")
    CastSpellByID(85256,"target")
    return true
    end

    Code:
    local holyPower = UnitPower("player", 9)
    
    if holyPower == 2 and PQR_SpellAvailable(35395) and UnitBuffID("player", 86172) then
    CastSpellByID(35395,"target")
    end
    
    if holyPower == 2 and not PQR_SpellAvailable(35395) and UnitBuffID("player", 86172) then
    CastSpellByID(85256,"target")
    end
    that might be better for ya don't know you'll need to play around with it.

    Please if someone helped you donate rep to them.

  11. #1331
    Kinky's Avatar Banned CoreCoins Purchaser
    Reputation
    481
    Join Date
    Nov 2008
    Posts
    500
    Thanks G/R
    1/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    @Wonderworm:
    It's very easy, try this.
    Code:
    local health = UnitHealth("target") / UnitHealthMax("target") * 100 or 0
    You can also go the long way around:
    Code:
    if UnitExists("target") then
    	local health = UnitHealth("target") / UnitHealthMax("target") * 100
    else local health = 0 end

  12. #1332
    crystal_tech's Avatar Elite User
    Reputation
    468
    Join Date
    Feb 2008
    Posts
    1,033
    Thanks G/R
    1/6
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Wonderworm View Post
    Hey looking for a little help. I am making my own personal warrior profile for MOP and whenever I use code to get target's health I get a lua error if I am not targeting something. If I have something targeted it's fine. I also tried my profile on Live and it works fine even if not targeted. So just wondering if something has changed to cause this or if there is another way I need to do it for MOP. Here is the code .. I have tried it both ways.

    Code:
    local unithealth = 100 * UnitHealth(&quot;target&quot;) / UnitHealthMax(&quot;target&quot;)
    Code:
    local unithealth = UnitHealth(&quot;target&quot;) / UnitHealthMax(&quot;target&quot;) * 100

    do this

    Code:
    if unitexists("target") then
    local unithealth = UnitHealth(&amp;quot;target&amp;quot;) / UnitHealthMax(&amp;quot;target&amp;quot;) * 100
    --the rest of the code
    end
    as a better example on how i do this look at my hunter/lock profiles in the calcs/functions ablity as I needed a target cause if i didn't it blew up with errors. so i made sure that i had a target before defining my globals and in each other ablity I make sure that I have said target and that i'm in combat.

    Please if someone helped you donate rep to them.

  13. #1333
    firepong's Avatar Elite User
    Reputation
    384
    Join Date
    Jan 2008
    Posts
    955
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by mentally View Post
    @Wonderworm:
    It's very easy, try this.
    Code:
    local health = UnitHealth("target") / UnitHealthMax("target") * 100 or 0
    You can also go the long way around:
    Code:
    if UnitExists("target") then
    	local health = UnitHealth("target") / UnitHealthMax("target") * 100
    else local health = 0 end
    Originally Posted by crystal_tech View Post
    do this

    Code:
    if unitexists("target") then
    local unithealth = UnitHealth(&quot;target&quot;) / UnitHealthMax(&quot;target&quot;) * 100
    --the rest of the code
    end
    as a better example on how i do this look at my hunter/lock profiles in the calcs/functions ablity as I needed a target cause if i didn't it blew up with errors. so i made sure that i had a target before defining my globals and in each other ablity I make sure that I have said target and that i'm in combat.
    I do the same thing on my HonorBuddy PQR Profile. For example, this is my code for Ferocious Bite:
    Code:
    local hasTarget = UnitExists("Target")
    local isDead = UnitIsDead("Target")
    local fbKnown = IsSpellKnown(22568)
    
    if hasTarget and not isDead and fbKnown then
    	local playerLevel = UnitLevel("Player")
    	local fbCP = GetComboPoints("player", "target")
    	
    	if playerLevel <= 30 then
    		if fbCP >= 4 then
    			return true
    		end
    	elseif playerLevel > 30 and playerLevel < 85 then
    		if fbCP >= 4 then
    			return true
    		end
    	elseif playerLevel == 85 then
    		local fbrip, _, _, _, _, _, fbtimer = UnitDebuffID("target", 1079, "PLAYER")
    		local fbhealth = 100 * UnitHealth("target") / UnitHealthMax("target")
    		local fbenergy = UnitPower("player") / UnitPowerMax("player") * 100
    
    		if fbhealth <=60 then
    			if fbrip ~= nil then
    				if fbCP == 5 then
    					return true
    				end
    			end
    		else
    			if fbrip ~= nil then
    				if fbtimer - GetTime() > 8 and fbenergy >= 60 and fbCP == 5 then
    					return true
    				end
    			end
    		end
    	end
    end
    The above code is used in a leveling profile. As you can tell, hasTarget is UnitExists(), isDead checks to see if the target is alive and if the target is dead, nothing is executed (when looting for example. And fbKnown checks to make sure you know and have learned Ferocious Bite. The rest is just ways that I have coded in different uses for the code at different level's. This one only has 2 different level variations, but a couple of the abilities in my HonorBuddy Leveling Profile has numerous level checks.

  14. #1334
    Sheepmoon's Avatar Contributor
    Reputation
    143
    Join Date
    Oct 2011
    Posts
    102
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    An interesting thing happened to me the other day or a "cool story" as the kids like to say...

    I started a new toon, a shaman, just to level up and have something to do while I wait for MoP. Because PQR has made me so lazy now even at low levels, I loaded up the Onya resto shaman profile and stripped everything out of it except the spells I had. I was only around level 30 I think, so I had only earth shield and healing wave and healing surge. Anyway so I healed a few dungeons no problem. Then I get a dungeon and after a few pulls I get a whisper from the tank...

    he says... "So how do you like using Shamwow?"

    I actually had no idea what he was talking about, I thought maybe it was some cute name he used for shamans. So I said, "Yes its fun so far I guess..."

    Then he replies, "Oh I am surprised you admit to using it, I also use it on my 85 shaman"

    At this point I was confused, I thought maybe it was an addon or something, I had never used honor buddy before. So I quickly googled "shaman shamwow" and sure enough its a healing rotation profile or whatever they call them for honor buddy. Now I don't really care if some random person in a dungeon thinks I was botting or whatever, just the thing that I found really strange was that he thought for sure I was using this honor buddy rotation bot. I have no idea why he would think that since I was level 30 and only using 2 spells.

    Anyway then I started getting a bit paranoid and was thinking about all thing things that give away the auto rotations. Since now I have used pqr for a long time and I use it on all my toons, I have noticed some suspicious activity from other players, even one player in my own guild. Just little things I notice now, like auto buffing and healing, say someone changes gear or spec and you have your healing rotation running and it instantly spam heals them because their health changed. Also the druid in my guild auto casts innervate on low mana players, I notice it on my pally when I change from ret spec to holy. It happens so fast I know it is automated, i'm positive its some kinda bot.

    Just got me to thinking how many people are using PQR or honor buddy these days. Also made me think about being more careful to hide my "botting" clues. I guess most of the time the only people who will notice are the ones who are also using it themself. Still, it just proves how obvious it is if you know what to look for.

    Still.... I have no idea what even made this tank think I was using an auto rotation....

    Anyway that was my story thought you guys might relate to it.

  15. #1335
    neoblack's Avatar Member
    Reputation
    1
    Join Date
    Apr 2007
    Posts
    31
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    had sorta the samething happen in arenas b4 on my hpally i have noticed ppl in lfr like shammys its not always a dead give away but when we are all falling down from the boat to dw back and theres a line of totems lol somethings up

Similar Threads

  1. [Bot] PQR PE Next Steps / Future of Rotation Botting
    By Chevrolet1 in forum World of Warcraft Bots and Programs
    Replies: 120
    Last Post: 10-21-2014, 11:47 AM
  2. [Bot] PQR - Rotation Bot
    By Xelper in forum World of Warcraft Bots and Programs
    Replies: 1738
    Last Post: 10-15-2014, 11:00 AM
  3. [Selling] 3 Lifetime Session Keys For Sale, Great for the PQR user looking for a rotation bot
    By cukiemunster in forum World of Warcraft Buy Sell Trade
    Replies: 13
    Last Post: 03-11-2014, 07:18 AM
  4. rotation bot leveling (PQR)
    By classdog in forum WoW Bots Questions & Requests
    Replies: 3
    Last Post: 09-17-2013, 06:13 PM
  5. [HELP] PQR Rotation Bot Profile Making
    By Missu in forum Programming
    Replies: 0
    Last Post: 10-22-2012, 06:27 AM
All times are GMT -5. The time now is 07:49 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search