What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Quest Profile erstellen

ronja75

New Member
Joined
Jan 26, 2012
Messages
62
Reaction score
1
Hallo

Ich möchte mir gerne ein Profil erstellen, welches folgende Aktionen ausführt:
  1. Zum NPC 123 laufen [Gelöst]
  2. Überprüfen ob Quest Id# 123, Id 456 oder 789 verfügbar ist [Gelöst]
  3. Anhand QuestID aus Schritt Subprofil laden [Gelöst]
  4. Anzahl x von MobID Töten [Gelöst]
  5. Sammeln von ObjectID 123, z.b. Bäume oder Kisten [Gelöst]
  6. MobID auf 30% Klopfen [Gelöst]
  7. ObjectID 123 in der Tasche auf MobID von 6 anwenden[Gelöst]
  8. Prüfen ob AuraID 123 vorhanden ist, falls nicht ObjectID 123 anwenden.[Gelöst]

Das ablaufen der Pfade war mittels Developer Tools und Hotspot mühsam aber machbar.
Quest annahme und abgabe ebenfalls + Kill Objektiven ebenfalls recht einfach zu handhaben.
Oben im Text habe ich die Stellen markiert an denen ich momentan nicht weiter komme.

Falls es hierzu inzwischen einen verständlich Guide gibt, wäre ich sehr dankbar für einen Hinweis.
 
Last edited:
Eigentlich relativ einfach zu bewerkstelligen:

zu 2.: Dafür gibt es
PHP:
<If Condition="((HasQuest(123)) || (HasQuest(456)) || (HasQuest(789))) >
...
</If>
Damit dürfte 3. auch beantwortet sein, indem du das auftrennst und für jedes Quest einen eigenen Block schreibst.
Dabei solltest du aber prüfen, ob das Quest nicht schon erledigt wurde:

PHP:
<If Condition="((HasQuest(123)) &amp;&amp; (!IsQuestCompleted(123)))>
...
</If>

zu 5.:
Das geht problemlos mit InteractWith
PHP:
<CustomBehavior File="InteractWith" MobId="123" NumOfTimes="1" WaitForNpcs="False" />
Dabei gibt es keine Unterschiede (mehr), ob MobId ein NPC oder ein Objekt ist. Das unterscheidet InteractWith selbst.

Wenn du das in eine Condition mit HasAura() verbindest
PHP:
<If Condition="!Me.Mounted &amp;&amp; !Me.IsOnTransport &amp;&amp; !Me.IsResting &amp;&amp; !Me.IsDead &amp;&amp; !Me.HasAura(123)" >
   <CustomBehavior File="UseItem" ItemId="ID des auslösenden Items" />
</If>
hast du 8. auch beantwortet. ;)
Beachte aber: ItemId und AuraId sind 2 verschiedene Dinge!

Das ist erstmal nur ein Grundgerüst und muss sicher noch angepasst und erweitert werden.
Für 6. gibt's auch was. Bin aber gerade nicht zuhause und kann nicht nachgucken.
Vielleicht ist noch jemand so nett und beantwortet das. ;)
 
Last edited:
Hallo

Ich möchte mir gerne ein Profil erstellen, welches folgende Aktionen ausführt:
  1. Zum NPC 123 laufen [DONE]
  2. Überprüfen ob Quest Id# 123, Id 456 oder 789 verfügbar ist [Problem]
  3. Anhand QuestID aus Schritt Subprofil laden [Problem]
  4. Anzahl x von MobID Töten [DONE]
  5. Sammeln von ObjectID 123, z.b. Bäume oder Kisten [Problem]
  6. MobID auf 30% Klopfen [Problem]
  7. ObjectID 123 in der Tasche auf MobID von 6 anwenden [DONE]
  8. Prüfen ob AuraID 123 vorhanden ist, falls nicht ObjectID 123 anwenden. [Problem]

Das ablaufen der Pfade war mittels Developer Tools und Hotspot mühsam aber machbar.
Quest annahme und abgabe ebenfalls + Kill Objektiven ebenfalls recht einfach zu handhaben.
Oben im Text habe ich die Stellen markiert an denen ich momentan nicht weiter komme.

Falls es hierzu inzwischen einen verständlich Guide gibt, wäre ich sehr dankbar für einen Hinweis.

1+2:
Um zu checken ob und welche Quests bei einem NPC Verfügbar sind und je nach dem diese Quest auszuwählen und anzunehmen gibt es verschiedene lösungs wege.
Einer davon wäre z.b.:

InteractWith um zum NPC zu laufen und zu Interagieren, anschliesend mit einer While Loop checken ob Quests zum annehmen vorhanden sind, wenn ja diese annehmen:
PHP:
<CustomBehavior File="InteractWith" MobId="74741" NonCompeteDistance="0" X="857.3004" Y="-602.9636" Z="-15.66054" /> <!-- Zum Quest geber laufen und Interagieren -->
<While Condition="Lua.GetReturnVal&lt;int&gt;(&quot;return GetNumGossipAvailableQuests()&quot;, 0) &gt;= 1"> <!-- Checken ob Quests Verfügbar sind und solange ne loop machen bis alle angenommen sind. -->
    <CustomBehavior File="Misc\RunLua" Lua="SelectGossipAvailableQuest(1):Click()" WaitTime="1000" /> <!-- Klickt das erste Verfügbare Quest Fenster mit einem ! an -->
  <CustomBehavior File="Misc\RunLua" Lua="AcceptQuest()" WaitTime="1000" /> <!-- Akzeptiert die ausgewählte Quest letzt endlich -->
</While>

3 lässt sich dann wie folgt lösen:
PHP:
<While Condition="HasQuest(123) &amp;&amp; !IsQuestCompleted(123)">
  <!-- Aufgabe für Quest 123 -->
</While>
<While Condition="HasQuest(456) &amp;&amp; !IsQuestCompleted(456)">
     <!-- Aufgabe für Quest 456 -->
</While>
<While Condition="HasQuest(789) &amp;&amp; !IsQuestCompleted(789)">
  <!-- Aufgabe für Quest 789 -->
</While>
Ich bevorzuge While anstelle von IF in diesem fall, da er die Aufgabe innerhalb der Condition dann solange ausführt bis die Quest auch wirklich fertig ist.

5 lässt sich mit dem InteractWith.cs Behavior sehr gut lösen.

6 und 7 lassen sich zusammen mit dem \Quest Behaviors\CombatUseItemOnV2.cs Behavior lösen. Mit dem kann man dann sagen: Benutze Item auf Mob XY wenn seine HP <= z.b. 30% ist.

Und 8 würde ich wie folgt lösen:

PHP:
<If Condition=!Me.HasAura(123)" > 
   <CustomBehavior File="Misc\RunLua" Lua="UseItemByName(110560)" />
</If>
In solchen fällen bevorzuge ich die RunLua function und beim Condition checkt reicht ein einfaches Me.HasAura. Checks wie Mounted, Transporter, Dead usw. braucht man alles nicht.

Falls du noch mehr hilfe brauchst, kannst du dich gerne per PN melden.

Mfg
 
Last edited:
Habe Dank eurer Unterstützung die Schwierigkeiten lösen können.

Jetzt sind natürlich neue Fragen entstanden ;-)
Wie sicher ist die Nutzung von RunLua in eigenen Profilen?
Ich meine, sollte man nicht tunlichst die Finger vom GameClient lassen und so etwas HB überlassen?
PHP:
	<If Condition="(!HasQuest(36693) &amp;&amp; !IsQuestCompleted(36693))">
		<If Condition="IsQuestCompleted(36614)" >
			<!-- Level 3 Garnison 
			Noch nicht Unterstützt -->

			<ElseIf Condition="IsQuestCompleted(36567)">
				<!-- Level 2 Garnison -->
				<CustomBehavior File="InteractWith" MobId="236206" NonCompeteDistance="3" X="5576.856" Y="4591.864" Z="142.228" />
			</ElseIf>
			<Else>
				<!-- Keine Garnison vorhanden -->

			</Else>
		</If>
		<!-- Quest akzeptieren -->
		<CustomBehavior File="Misc\RunLua" Lua="QuestChoiceFrameOption1.OptionButton:Click()" WaitTime="1250" />
	</If>

	<While Condition="HasQuest(36693) &amp;&amp; !IsQuestCompleted(36693)"> 
		<!-- Beginne mit Angriff auf die Säulen des Schicksals --> 

	</While>
</If>
 
Last edited:
Habe Dank eurer Unterstützung die Schwierigkeiten lösen können.

Jetzt sind natürlich neue Fragen entstanden ;-)
Wie sicher ist die Nutzung von RunLua in eigenen Profilen?
Ich meine, sollte man nicht tunlichst die Finger vom GameClient lassen und so etwas HB überlassen?

PHP:
<If Condition="Me.IsHorde">
			<!-- 
				ID 36689 - Angriff auf die Säulen des Schicksals
			-->
			<If Condition="(!HasQuest(36693) && !IsQuestCompleted(36693))">
				<If Condition="IsQuestCompleted(36614)" >
					<!-- Level 3 Garnision 
					Noch nicht Unterstützt -->

				<ElseIf Condition="IsQuestCompleted(36567)">
					<!-- Level 2 Garnision -->
					<CustomBehavior File="InteractWith" MobId="236206" NonCompeteDistance="3" X="5576.856" Y="4591.864" Z="142.228" />
				</ElseIf>
				<Else>
					<!-- Keine Garnision vorhanden -->

				</Else>
				</If>
				<!-- Quest akzeptieren -->
				<CustomBehavior File="Misc\RunLua" Lua="QuestChoiceFrameOption1.OptionButton:Click()" WaitTime="1250" />
			</If>

			<While Condition="HasQuest(36693) && !IsQuestCompleted(36693)"> 
				<!-- Beginne mit Angriff auf die Säulen des Schicksals --> 
			</While>
		</If>
RunLua kannst du ohne bedenken benutzen.
 
Jedoch solltest du es unterlassen globale Variablen mit lua zu erstellen, oder Ingame Ausgaben auszufuehren.
 
Jedoch solltest du es unterlassen globale Variablen mit lua zu erstellen, oder Ingame Ausgaben auszufuehren.
Jop wollte ich eigendlich auch noch schreiben, aber da 99,99% der Funktionen das e nicht machen und es sich hierbei um einen "neuling" handelt, hab ich das weg gelassen ^^
 
Back
Top