Kundschafter
Inhaltsverzeichnis
Makros
Pfeile herstellen
/use Runen-Katapult /wait 0.5 /script UseEquipmentItem(10); /wait 0.5 /script UseEquipmentItem(10); /wait 0.5 /use Zorn der Hüterin des Dschungels /wait 1.0 /use Runendorn
Do-It-Yourself Combat Engine (DIYCE) Kampfscript für Kundschafter
Link zum DIYCE
1. Macro-Buttons anlegen:
- für PvP: /run ScoutRogueCombat("pvp"])
- für PvE: /run ScoutRogueCombat("pve"])
- für Inis: /run ScoutRogueCombat("ini"])
2. DIYCE Kundi/Schurke Script, speichern als Interface\Addons\DIYCE\scoutrogue.lua
-- /run ScoutRogueCombat(["pvp", "pve", "ini"], "v2") oder /run ScoutRogueCombat()
-- ---------------------------------------------------------------------------------------------
function ScoutRogueCombat(arg1, arg2)
local Skill = {}
local i = 0
local solo = ((GetNumPartyMembers() == 0) and (GetNumRaidMembers() == 0))
local focus = UnitMana("player")
local enemy = UnitCanAttack("player","target")
local friendly = (not UnitCanAttack("player","target"))
local combat = GetPlayerCombatState()
local pbuffs = BuffList("player")
local tbuffs = BuffList("target")
local LockedOn = UnitExists("target")
local tDead = UnitIsDeadOrGhost("target")
-- Button Nummern zuordnen:
local a1,a2,a3,a4,a5,ASon = GetActionInfo(63) -- # Button mit Automatischer Schuss
a1,a2,a3,a4,a5,VArr = GetActionInfo(4) -- # Button mit Vampirpfeil
a1,a2,a3,a4,a5,Quer = GetActionInfo(7) -- # Button mit Querschläger
a1,a2,a3,a4,a5,PArr = GetActionInfo(8) -- # Button mit Durchdringender pfeil
if (arg1 == "") then
arg1 = "pve"
end
if (arg1 == "pvp") then
i=i+1; Skill[i] = { name = "Vampirpfeil", use = (enemy and (focus >= 20) and (not VArr)) }
i=i+1; Skill[i] = { name = "T\195\182dlicher Giftbiss", use = (enemy and (focus >= 30)) }
i=i+1; Skill[i] = { name = "Salve", use = enemy }
i=i+1; Skill[i] = { name = "Bogenschuss", use = enemy }
i=i+1; Skill[i] = { name = "Durchdringender Pfeil", use = (enemy and (not PArr)) }
i=i+1; Skill[i] = { name = "Querschl\195\164ger", use = (enemy and (not Quer)) }
i=i+1; Skill[i] = { name = "Windpfeil", use = (enemy and (focus >= 15)) }
i=i+1; Skill[i] = { name = "Automatischer Schuss", use = ((not friendly) and (not ASon)) }
end
if (arg1 == "ini") then
i=i+1; Skill[i] = { name = "Schussfeld", use = ((solo) and (not string.find(pbuffs,"Schussfeld")) and (focus > 20)) }
i=i+1; Skill[i] = { name = "Frostpfeil", use = ((solo) and (not ChkBuff("player","Frostpfeil"))) }
i=i+1; Skill[i] = { name = "Konzentration", use = ((solo) and (not ChkBuff("player","Konzentration")) and (focus <= 30)) }
i=i+1; Skill[i] = { name = "Schw\195\164chungspfeil", use = (enemy and (focus >= 30)) }
i=i+1; Skill[i] = { name = "Salve", use = enemy }
i=i+1; Skill[i] = { name = "Automatischer Schuss", use = ((not friendly) and (not ASon)) }
i=i+1; Skill[i] = { name = "Bogenschuss", use = enemy }
i=i+1; Skill[i] = { name = "T\195\182dlicher Giftbiss", use = (enemy and (focus >= 30)) }
i=i+1; Skill[i] = { name = "Windpfeil", use = (enemy and (focus >= 15)) }
i=i+1; Skill[i] = { name = "Manaraubender Pfeil", use = (enemy and (focus >= 20)) }
end
if (arg1 == "pve") then
i=i+1; Skill[i] = { name = "Schussfeld", use = ((not string.find(pbuffs,"Schussfeld")) and (focus > 20)) }
i=i+1; Skill[i] = { name = "Frostpfeil", use = (not ChkBuff("player","Frostpfeil")) }
i=i+1; Skill[i] = { name = "Konzentration", use = ((not ChkBuff("player","Konzentration")) and (focus <= 30)) }
i=i+1; Skill[i] = { name = "Salve", use = enemy }
i=i+1; Skill[i] = { name = "Automatischer Schuss", use = ((not friendly) and (not ASon)) }
i=i+1; Skill[i] = { name = "Schw\195\164chungspfeil", use = (enemy and (focus >= 30)) }
i=i+1; Skill[i] = { name = "T\195\182dlicher Giftbiss", use = (enemy and (focus >= 30)) }
i=i+1; Skill[i] = { name = "Bogenschuss", use = enemy }
i=i+1; Skill[i] = { name = "Durchdringender Pfeil", use = (enemy and (not PArr)) }
i=i+1; Skill[i] = { name = "Querschl\195\164ger", use = (enemy and (not Quer)) }
i=i+1; Skill[i] = { name = "Windpfeil", use = (enemy and (focus >= 15)) }
i=i+1; Skill[i] = { name = "Manaraubender Pfeil", use = (enemy and (focus >= 20)) }
end
MyCombat(Skill,arg2)
-- in pvp automatically target next enemy if the last one dropped down dead:
if (arg1 == "pvp") then
if tDead then
TargetNearestEnemy()
end
if (not LockedOn) then
TargetNearestEnemy()
end
end
end3. DIYCE Table of Contents Script, speichern als Interface\Addons\DIYCE\diyce.toc
DIYCE.lua scoutrogue.lua
4. DIYCE Script, speichern als Interface\Addons\DIYCE\diyce.lua
-- DIY Combat Engine version 1.4
g_skill = {}
function Msg(outstr,a1,a2,a3)
DEFAULT_CHAT_FRAME:AddMessage(tostring(outstr),a1,a2,a3)
end
function ReadSkills()
g_skill = {}
local skillname,slot
Msg("- Reading Class Skills")
for page = 1,4 do
slot = 1
skillname = GetSkillDetail(page,slot)
repeat
local a1,a2,a3,a4,a5,a6,a7,a8,skillusable = GetSkillDetail(page,slot)
if skillusable then
g_skill[skillname] = { ["page"] = page, ["slot"] = slot }
end
slot = slot + 1
skillname = GetSkillDetail(page,slot)
until skillname == nil
end
end
ReadSkills() -- Read skills into g_skill table at login
function PctH(tgt)
return (UnitHealth(tgt)/UnitMaxHealth(tgt))
end
function PctM(tgt)
return (UnitMana(tgt)/UnitMaxMana(tgt))
end
function PctS(tgt)
return (UnitSkill(tgt)/UnitMaxSkill(tgt))
end
function CancelBuff(buffname)
local i = 1
local buff = UnitBuff("player",i)
while buff ~= nil do
if buff == buffname then
CancelPlayerBuff(i)
return true
end
i = i + 1
buff = UnitBuff("player",i)
end
return false
end
function BuffTimeLeft(tgt, buffname)
local cnt = 1
local buffcmd, bufftimecmd, buff
if UnitCanAttack("player", tgt) then
buffcmd = UnitDebuff
bufftimecmd = UnitDebuffLeftTime
else
buffcmd = UnitBuff
bufftimecmd = UnitBuffLeftTime
end
buff = buffcmd(tgt, cnt)
while buff ~= nil do
if string.find(buff, buffname) then
return bufftimecmd(tgt, cnt)
end
cnt = cnt + 1
buff = buffcmd(tgt, cnt)
end
return 0
end
function ChkBuff(tgt,buffname)
local cnt = 1
local buffcmd = UnitBuff
if UnitCanAttack("player",tgt) then
buffcmd = UnitDebuff
end
local buff = buffcmd(tgt,cnt)
while buff ~= nil do
if string.gsub(buff, "(%()(.)(%))", "%2") == buffname then
return true
end
cnt = cnt + 1
buff = buffcmd(tgt,cnt)
end
return false
end
function BuffList(tgt)
local cnt = 1
local buffcmd = UnitBuff
local buffstr = "/"
if UnitCanAttack("player",tgt) then
buffcmd = UnitDebuff
end
local buff = buffcmd(tgt,cnt)
while buff ~= nil do
buffstr = buffstr..buff.."/"
cnt = cnt + 1
buff = buffcmd(tgt,cnt)
end
return string.gsub(buffstr, "(%()(.)(%))", "%2")
end
function CD(skillname)
local firstskill = GetSkillDetail(2,1)
if (g_skill[firstskill] == nil) or (g_skill[firstskill].page ~= 2) then
ReadSkills()
end
if g_skill[skillname] ~= nil then
local tt,cd = GetSkillCooldown(g_skill[skillname].page,g_skill[skillname].slot)
return cd==0
elseif skillname == nil then
return false
else
Msg("Skill not available: "..skillname)
return false
end
end
function MyCombat(Skill, arg1)
local spell_name = UnitCastingTime("player")
local talktome = ((arg1 == "v1") or (arg1 == "v2"))
local action,actioncd,actiondef,actioncnt
if spell_name ~= nil then
if (arg1 == "v2") then Msg("- ["..spell_name.."]", 0, 1, 1) end
return true
end
for x,tbl in ipairs(Skill) do
if Skill[x].use then
if string.find(Skill[x].name, "Action:") then
action = tonumber((string.gsub(Skill[x].name, "(Action:)( *)(%d+)(.*)", "%3")))
_1,actioncd = GetActionCooldown(action)
actiondef,_1,actioncnt = GetActionInfo(action)
if GetActionUsable(action) and (actioncd == 0) and (actiondef ~= nil) and (actioncnt > 0) then
if talktome then Msg("- "..Skill[x].name) end
UseAction(action)
return true
end
elseif string.find(Skill[x].name, "Custom:") then
action = string.gsub(Skill[x].name, "(Custom:)( *)(.*)", "%3")
if CustomAction(action) then
return true
end
elseif string.find(Skill[x].name, "Item:") then
action = string.gsub(Skill[x].name, "(Item:)( *)(.*)", "%3")
if talktome then Msg("- "..Skill[x].name) end
UseItemByName(action)
return true
elseif CD(Skill[x].name) then
if talktome then Msg("- "..Skill[x].name) end
CastSpellByName(Skill[x].name)
return true
end
end
end
if (arg1 == "v2") then Msg("- [IDLE]", 0, 1, 1) end
return false
endKampfrotation
1. Salve
2. Automatischer Schuß (nur 1x nötig)
3. Bogenschuß
4. Windpfeil
und dann 1, 3 und 4 abwechselnd, so wie sie wieder nutzbar sind.
Set-Fertigkeiten
- Jagdkleid der Göttin
: Glorie des Schützen
Ausrüstung
Vorbemerkung
Bevorzugt werden sollten Ausrüstung und Stats, die folgende Attribute erhöhen:- physischer Angriff (40k+)
- Geschick (10k+)
- Ausdauer (Richtung 6k+)
Zusätzlich sollte Phyische kritische Trefferrate und Kritischer Schaden maximiert werden
Stats
Stats die man sich besorgen sollte für die Ausrüstung:
- Wächter der Gruft
- Wächter des Tempels
- Triumph der Gruft
- Triumph des Tempels
- Wache der Gruft
- Kern der Gruft
Ausrüstungsempfehlung (Level 62+):
- Handschützer von Yawaka (aus Tempel Diamant)
- Gurt von Yawaka (aus Tempel Diamant)
- Beinschützer von Yawaka (aus Tempel Diamant)
- Ohrring von Yawaka (aus Tempel Diamant)
ergibt zusammen folgende Setboni: +95 Geschicklichkeit, +1200 Physischer Angriff, +150 Physische kritische Trefferrate, +100 Stärke, +45 Schaden
- Einhornrüstzeug des Kundschafters (aus ZF/DF)
- Einhornschulterschützer des Kundschafters (aus ZF/DF)
- Einhornstiefel des Kundschafters (aus ZF/DF)
- Reißzahn-Helm (Tempel)
Aus Arena:
- Arena-Umhang (aus Arena, ach! ;))
Schmuck
- Flammendrachenherz-Kette der Macht (herstellbar)
- 2x Flammendrachenzahn-Ring der Macht (herstellbar) oder 1x Zentaurenstern
- Ohrring von Lekani
(aus Tempel Diamant)
Waffen + Statswaffen
- Armbrust: Zorn der Hüterin des Dschungels (aus Tempel Diamant)
- 1-2 mal Dorn von Yawaka, je nach Sekundärklasse (aus Tempel Diamant)
Interessante Ausrüstung
Lederrüstung
Level 55:
- Lederrüstung der Göttin
- Jagdkleid der Göttin
- Tigerhai-Set
- Set des sonderbaren Käfers
- Set der Gräueltat
- Schattenhai-Set
- Lederrüstung der Riesenfaust
- Kampfanzug der Riesenfaust
- Einhorn-Set des Kundschafters
Level 58:
Level 60:
- Reißzahn-Set
- Richter-Set
- Illegales Eindringen (Schnellschatten)
- Hütergeist (Yinha)
- Brutales Vorgehen (Yawaka-Set)
Schmuck
Level 55: