|
You last visited: Today at 04:22
Advertisement
MF-Weaponslot Switch
Discussion on MF-Weaponslot Switch within the Diablo 2 Programming forum part of the Diablo 2 category.
02/25/2011, 16:39
|
#1
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
MF-Weaponslot Switch
Moin zusammen,
Finde einfach nix zum Thema, also frag ich mal hier nach.
Wie muß ich die Attack Library umschreiben, dass der Bot einen Weaponslot-Switch macht, wenn das Leben vom Boss nur noch x-% beträgt und den Slot bis zum Tod des Bosses bei behält und danach wieder auf den Kampfslot wechselt?
Hoffe hab mich da verständlich ausgedrückt. Ist halt dafür da, kurz vorm Ende mehr MF zu haben.
Gruß
Balti
|
|
|
02/25/2011, 16:44
|
#2
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Wärst du so nett und editierst in deinen Beitrag noch deine NTA_KillMonster() Funktion rein?
Dann haben wir eine gemeinsame Basis auf die ich eingehen kann, so würde ich vermutlich an dir vorbei reden und Mitleser können nicht folgen.
Die Funktion findest du in der NTAttack library.
Und denk an die [Code]-Box.
Lg
Muddy
Edit: Ich wollte doch weniger Vollzitate posten...
|
|
|
02/25/2011, 16:50
|
#3
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
Kommt sofort. Ist komplett Standard.
Code:
function NTA_KillMonster(classid)
{
var _target;
if(NTConfig_AttackSkill[1] < 1)
return false;
_target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, 5);
if(!_target)
return false;
if(_target.IsAttackable())
{
var _attackcount = 0;
while(_attackcount < 300 && NTA_IsValidMonster(_target))
{
if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
break;
_attackcount++;
}
}
return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
}
|
|
|
02/25/2011, 17:10
|
#4
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Das hier ist einmal die schnelle Lösung, sehr einfach gestrickt:
Code:
function NTA_KillMonster(classid)
{
var _target, _swapped;
if(NTConfig_AttackSkill[1] < 1)
return false;
_target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, 5);
if(!_target)
return false;
_swapped = false;
if(_target.IsAttackable())
{
var _attackcount = 0;
while(_attackcount < 300 && NTA_IsValidMonster(_target))
{
if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
break;
_attackcount++;
if(!_swapped && parseInt(_target.hp * 100 / _target.hpmax) < MWConfig_SwitchSlotHP && (_target.classid == 156 || _target.classid == 211 || _target.classid == 242 || _target.classid == 243 || _target.classid == 544))
_swapped = NTC_SwapWeapons();
}
}
if(_swapped)
NTC_SwapWeapons();
return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
}
Da ich es nicht Kommentiert habe, gibt es hier mal ein paar Kommentare in Textform:
Die Schwelle habe ich in einer lokalen Konstante untergebracht, die mit dem gewünschten Wert initialisiert wird. Schicker wäre natürlich eine passende Variable in der Char Config.
Wenn du das lieber möchtest, frag nach, ist nur minimal mehr Aufwand.
Die Config Variable MWConfig_SwitchSlotHP muss natürlich noch deklariert werden. Dazu einfach die NTConfig.ntl im Config Ordner öffnen und irgendwo folgendes einfügen:
Code:
var MWConfig_SwitchSlotHP;
Danach muss die Variable nur irgendwo in der Charconfig initialisiert werden. Als Wert wird dabei die HP Schwelle des Monster in Prozent angegeben, bei der ein Slotwechsel erfolgen soll.
Soll kein Slotwechsel erfolgen, wird die Variable mit 0 initialisiert.
Hier einmal beispielshaft die initialisierung mit für eine Schwelle von 10%:
Code:
MWConfig_SwitchSlotHP = 10;
Natürlich ist diese Lösung auch dahingehend etwas suboptimal, dass einfach ein Slotwechsel durchgeführt wird, ohne zu überprüfen, welche Eigenschaften der aktuelle Slot hat. Allerdings wäre das Analysieren der verschiedenen Slots deutlich komplizierter und würde hier vermutlich den Rahmen sprengen, jedenfalls wenn deine D2NT Version nicht ohnehin schon entsprechende Funktionen dafür mitbringt.
Die Variable _swapped brauchen wir übrigens, um zu verhindern, dass nach jedem Angriff ein Slotwechsel erfolgt und auch um am Ende zurückzuwecheln, falls ein Slotwechsel erfolgt ist.
Edit: Übrigens wird der Slotwechsel bei obiger Funktion nur bei den Aktbossen Andariel, Duriel, Mephisto, Diablo und Baal durchgeführt.
Soviel dazu, bei Rückfragen, einfach melden.
Lg
Muddy
|
|
|
02/25/2011, 17:30
|
#5
|
elite*gold: 5
Join Date: Apr 2010
Posts: 689
Received Thanks: 151
|
danke schön wollte das gleich auch fragen ich probiers ma aus und meld mich dann nochma zum dankeschön
|
|
|
02/25/2011, 17:31
|
#6
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
Die Sache mit der Variablen bekomm ich wahrscheinlich *aus dem Fenster lehn* auch alleine hin.
Was mich mehr oder weniger stört, ist das nicht geprüft wird welcher slot aktiv ist. Meine das so. Slot 1 = Kampfslot und Slot2 = MF Slot.
Also wenn Slot1 aktiv ist dann weaponswitch zu Slot2, ist Slot2 aktiv, dann kein weaponswitch, aber nach dem Tod vom Boss ein Switch zu Slot1.
Keine Ahnung, ob´s möglich ist.
Ach ja, wo ist NTC_SwapWeapons() definiert. Sry, muss blöd fragen, da keine Ahnung. Eigentlich wollte ich mich ja nicht tiefer damit beschäftigen, wegen keine Zeit, aber interessant wärs ja schon ^^.
*MrBaltimore <- trauert den alten AutoIt Zeiten hinterher*
P.S.: _SWAP_WEAPON_HP_THRESHOLD = 0.1
Wird hier definiert wann er switchen soll ? Sind aber keine % oder, da ja hier _target.hp / _target.hpmax <= _SWAP_WEAPON_HP_THRESHOLD verglichen wird
|
|
|
02/25/2011, 17:39
|
#7
|
elite*gold: 5
Join Date: Apr 2010
Posts: 689
Received Thanks: 151
|
Hab auch noch was, kann ich das irgendwie einstellen das das nur mein Hdin macht? habe noch 2 Sosos am laufen die kein weaponswitch benötigen...
Sonst funktionierts perfekt! besten Dank!
|
|
|
02/25/2011, 17:51
|
#8
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Quote:
Originally Posted by Derbeth
danke schön wollte das gleich auch fragen ich probiers ma aus und meld mich dann nochma zum dankeschön 
|
In dem Fall hat sich der Vorschlag, die Frage besser in die Programming Sektion zu verlagern, ja gelohnt.
Ich dachte mir schon, dass das mehr Leute interessiert, gerade zu Ladder beginn eigentlich recht sinnvoll, wenn es wirklich noch auf MF ankommt.
Quote:
Originally Posted by MrBaltimore
Die Sache mit der Variablen bekomm ich wahrscheinlich *aus dem Fenster lehn* auch alleine hin.
Was mich mehr oder weniger stört, ist das nicht geprüft wird welcher slot aktiv ist. Meine das so. Slot 1 = Kampfslot und Slot2 = MF Slot.
Also wenn Slot1 aktiv ist dann weaponswitch zu Slot2, ist Slot2 aktiv, dann kein weaponswitch, aber nach dem Tod vom Boss ein Switch zu Slot1.
Keine Ahnung, ob´s möglich ist.
Ach ja, wo ist NTC_SwapWeapons() definiert. Sry, muss blöd fragen, da keine Ahnung. Eigentlich wollte ich mich ja nicht tiefer damit beschäftigen, wegen keine Zeit, aber interessant wärs ja schon ^^.
*MrBaltimore <- trauert den alten AutoIt Zeiten hinterher*
P.S.: _SWAP_WEAPON_HP_THRESHOLD = 0.1
Wird hier definiert wann er switchen soll ? Sind aber keine % oder, da ja hier _target.hp / _target.hpmax <= _SWAP_WEAPON_HP_THRESHOLD verglichen wird
|
Zu deiner Frage:
Das Präfix der Funktion verweist auf die library, in der die Funktion definiert ist.
Siehe auch  , Punkt 5 unter " Benennung von Funktionen".
Und ja, du kannst festlegen, auf welchen Slot gewechselt wird, allerdings gewinnst du damit eigentlich gegenüber der jetzigen Lösung nichts.
Denn die Slotverteilung ist keinesfalls konstant und kann sich beispielsweise beim Ableben des Chars ändern.
In dem Fall hat man verloren, wenn man auf konstante Slots setzt.
Aber wenn du es trotzdem so machen möchtest, kannst mit NTC_SwapWeapons() mit dem Parameter 0 aufrufen, um auf den Slot mit dem Index I zu wechseln, NTC_SwapWeapons() mit dem Parameter 1 aufrufen, um auf den Slot mit dem Index II zu wechseln.
Quote:
Originally Posted by Derbeth
Hab auch noch was, kann ich das irgendwie einstellen das das nur mein Hdin macht? habe noch 2 Sosos am laufen die kein weaponswitch benötigen...
Sonst funktionierts perfekt! besten Dank!
|
Klingt so, als sollten wir doch besser eine Config Variable definieren.
Ich editiere das gleich oben rein.
Lg
Muddy
|
|
|
02/25/2011, 18:00
|
#9
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
Ok, nicht daran gedacht, dass sich die Werte nach Char Tod ändern.
So langsam steig ich in dem Aufbau durch, dank deinem Guide. Übrigens  , schöne Arbeit.
P.S.: Les mir grad Muddy's D2NT V1.13 mit Update vom 18.12.2010 durch. Hört sich ja gut an, nur wieder diese sch.. englische Installation. Muss nochmal suchen wie das nochmal ging Deutsch -> Englisch
|
|
|
02/25/2011, 18:15
|
#10
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Quote:
Originally Posted by MrBaltimore
Ok, nicht daran gedacht, dass sich die Werte nach Char Tod ändern.
So langsam steig ich in dem Aufbau durch, dank deinem Guide. Übrigens  , schöne Arbeit.
|
Danke.
Ich würde mich ja freuen, wenn hier mehr Fragen zu so kleinen entwicklerischen Problemen kommen, denn anhand solcher kleinen Beispiele kann man meist schon eine Menge lernen und man sieht, dass sowas gar nicht so furchtbar kompliziert ist, wie es zunächst scheint.
Leider tauchen solche Fragen immer in den allgemeinen D2NT Themen auf, wo sie dann untergehen, ohne dass je eine Lösung dafür entwickelt wird.
Andererseits muss man auch sehen, dass sich die breite Masse der Fragen auf Probleme bei der richtigen Konfiguration bezieht. Sowas taucht dann teilweise auch hier auf und ist natürlich Fehl am Platze.
Übrigens habe ich meinen Beitrag ergänzt, nicht nur um das Einfügen einer Config Variable, sondern auch um eine Eingrenzung der möglichen Ziele auf die 5 Aktbosse.
Lg
Muddy
Edit:
Versuchs mal  ,  oder  .
Übrigens ist der Text dort ziemlich überholt, sogar auf die dort veröffentlichte Version, wird Zeit, dass ich das mal neu schreibe.
|
|
|
02/25/2011, 19:03
|
#11
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
THX, Diablo ist jetzt auf Englisch. Nun mal sehen, ob ich deine Version ans laufen bekomme ^^.
Quote:
Ich würde mich ja freuen, wenn hier mehr Fragen zu so kleinen entwicklerischen Problemen kommen, denn anhand solcher kleinen Beispiele kann man meist schon eine Menge lernen und man sieht, dass sowas gar nicht so furchtbar kompliziert ist, wie es zunächst scheint.
Leider tauchen solche Fragen immer in den allgemeinen D2NT Themen auf, wo sie dann untergehen, ohne dass je eine Lösung dafür entwickelt wird.
Andererseits muss man auch sehen, dass sich die breite Masse der Fragen auf Probleme bei der richtigen Konfiguration bezieht. Sowas taucht dann teilweise auch hier auf und ist natürlich Fehl am Platze.
|
Tja, denke das Problem ist da doch eher die Unwissenheit der Leute. Siehe mich. Nicht genug damit befasst und siehe da, auch im falschen Bereich gelandet. Und es ist selten so einen freundlichen Wissenden wie dich zu finden. In der Regel wird man ziemlich nieder gemacht. Also mal wieder  vor dir.
Quote:
|
Übrigens habe ich meinen Beitrag ergänzt, nicht nur um das Einfügen einer Config Variable, sondern auch um eine Eingrenzung der möglichen Ziele auf die 5 Aktbosse.
|
Ähm, sry, wie war das nochmal, MF hat auf Runendrops keine Einflüsse oder?
Lg
MrBaltimore
|
|
|
02/25/2011, 22:57
|
#12
|
elite*gold: 5
Join Date: Apr 2010
Posts: 689
Received Thanks: 151
|
Besten Dank, müsste jetzt wohl klappen
Wenn nur mein DSL Anbieter so schnell auf Fragen antworten würde
Gruss Derb
|
|
|
02/26/2011, 12:41
|
#13
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
Sry, kleines Prob ist noch da!
Und zwar, wenn der Char stirbt und der MF Slot ist aktiv, wird ja nicht beim nächsten Start auf den richtigen Slot zurück gestellt. Bot läuft also die ganze Zeit mit aktiven MF Slot rum.
Da meine Fb/Fo noch recht häufig stirbt, kann ichs so nicht benutzen, trotzdem THX.
Lg
Balti
P.S.: Hab deinen Bot mal getestet. Läuft auch soweit, nur stirbt er immer. Bei der Gräfin teleportiert er immer hin und her und lockt dadurch zu viele an. Wie gesagt meine Soso schafft Gräfin so eben ^^. Schade, das ItemLog und einiges anderes wäre echt schön gewesen
|
|
|
02/26/2011, 13:04
|
#14
|
Administrator
elite*gold: 41624
Join Date: Jan 2010
Posts: 22,728
Received Thanks: 12,654
|
Quote:
Originally Posted by MrBaltimore
Sry, kleines Prob ist noch da!
Und zwar, wenn der Char stirbt und der MF Slot ist aktiv, wird ja nicht beim nächsten Start auf den richtigen Slot zurück gestellt. Bot läuft also die ganze Zeit mit aktiven MF Slot rum.
Da meine Fb/Fo noch recht häufig stirbt, kann ichs so nicht benutzen, trotzdem THX.
Lg
Balti
P.S.: Hab deinen Bot mal getestet. Läuft auch soweit, nur stirbt er immer. Bei der Gräfin teleportiert er immer hin und her und lockt dadurch zu viele an. Wie gesagt meine Soso schafft Gräfin so eben ^^. Schade, das ItemLog und einiges anderes wäre echt schön gewesen
|
In dem Fall müsste man tatsächlich die Eigenschaften der verschiedenen Slots auswerten, was dann aber etwas kompliziert wird.
Du könntest dir mal bei meiner Version die Funktion MWC_GetSlotID(type) anschauen, die macht prinzipiell genau das, wenn auch mehr zur Bestimmung des Precast oder FindItem Slots.
Aber so in der Form könnte man das umsetzen.
Zu meiner Version:
Kannst ja testweise mal die Variable MWConfig_KeepDistanceToMonsters auf false setzen, auch wenn das in den meisten Fällen eher den gegenteiligen Effekt haben sollte. Es sei denn deine Sorc hat aus irgendeinem Grund zu wenig FCR, um vernünftig ausweichen und zwischendurch noch angreifen zu können. In dem Fall würde ich Fastmod nutzen, als Anleitung empfehle ich  .
Lg
Muddy
P.S.: Und nein, MF wirkt sich nicht auf Runen aus, aber solche Fragen kannst du besser  stellen.
|
|
|
02/26/2011, 14:18
|
#15
|
elite*gold: 0
Join Date: Feb 2011
Posts: 16
Received Thanks: 0
|
Quote:
|
Es sei denn deine Sorc hat aus irgendeinem Grund zu wenig FCR, um vernünftig ausweichen und zwischendurch noch angreifen zu können.
|
Ok, hab nur 80% erhöhte. KA ob das reicht. Kann´s Probleme damit geben, dass ich Occu benutze?
Quote:
|
P.S.: Und nein, MF wirkt sich nicht auf Runen aus, aber solche Fragen kannst du besser hier stellen.
|
Sinnlos und komisch nur für den, der´s weis!
|
|
|
 |
|
Similar Threads
|
switch off your name
05/09/2011 - Archlord Trading - 5 Replies
sorry if this should have gone in another section or has already been posted but ive seen a lot of people posting pics where you can still see their name in the background.
webzen might not give a rats at the moment but maybe one day they will start banning so to prevent this just turn off your name in the options menu.
http://i40.tinypic.com/dxdy6v.jpg
simples
|
DSS Switch Bot?!
02/01/2011 - Metin2 Private Server - 10 Replies
Hallo Liebe Com.
Da ich schon gesehen habe das es einer hinbekommen hat,
einen Bot zu Skripten der die bonies solange switcht bis z.b. etwas zwischen
30-39 dss heraus kommt und dann aufhört.
Aber dieser funzt bei fast keinem..
Und geht nur mit Waffen die 3 Steinslots bestizen also nur
Nun ist meine Frage ob es villeicht jemand schaft einen solchen Bot
richtig zu skripten das dieser voll funktionstüchtig ist.
Und auch oder nur VMS switchen kann,
und man einstellen kann das er erst dann...
|
Switch in C++
01/14/2011 - C/C++ - 4 Replies
Hi ich hab ein Problem bei der Switch-Funktion:
// Quadratzahlengenerator.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//
#include "stdafx.h"
#include <string>
#include <iostream>
#include <Windows.h>
|
Prüfen ob Weaponslot(1) aktiv ist
06/02/2010 - Diablo 2 Programming - 0 Replies
Habe es gefunden.
|
FB and SS switch?
02/05/2006 - Conquer Online 2 - 8 Replies
Hey guys, I was just wondering if there was anyway to change the FB image with the SS image. I know it sounds weird but i can aim better with the ss image..Please help me or PM me. Thanks guys. btw...I love all your guys work.Ill start to post more. lolx :bandit: :bandit: :bandit: :bandit:
|
All times are GMT +1. The time now is 04:23.
|
|