Aller au contenu


Photo

Réglages Approfondis Bot Core+Field


  • Ce sujet est fermé Ce sujet est fermé
124 réponses à ce sujet

#41 GFGdeal

GFGdeal

    Newbie lvl 2

  • Membres
  • 9 messages

Posté 05 October 2012 - 12:43

Coucou
j'ai une petite question pour un monstre, le bot ne tue pas le gob a l'act 3 pourtant dans le settings il y est dans la monsterlist Goblin.
Je ne sais pas trop quoi faire :s

Une petite idée pourquoi il ne veut pas tuer ce goblin ?^^

#42 max68

max68

    Player Killer

  • Membre Senior
  • 3218 messages
  • Hobbies :Sport
    Informatique
    Musique
    Femme :P

Posté 05 October 2012 - 12:53

Coucou
j'ai une petite question pour un monstre, le bot ne tue pas le gob a l'act 3 pourtant dans le settings il y est dans la monsterlist Goblin.
Je ne sais pas trop quoi faire :s

Une petite idée pourquoi il ne veut pas tuer ce goblin ?^^


deja dit c est une modif ds le script a faire ... cherche ds un des post le code a modif a ete posté
Mes buildsVive la nouvelle version ! <3Un petit Merci, ne fait pas de mal de temps en temps ... Si un commentaire vous est utile, pensez à cliquer le bouton (+)

#43 GFGdeal

GFGdeal

    Newbie lvl 2

  • Membres
  • 9 messages

Posté 05 October 2012 - 13:03

Ok merci j'ai vue le sujet qui en parle mais je ne comprend toujours pas comment ça marche .. "Rajouter Goblin à la monsterlist ne le fait pas attaquer les gobelin in game ^^

Pour cela il faut voir le script fait pour dans la partie DebugCore 3.3 un truc comme ça ^^"

C'st peut etre simple pour vous mais je ne comprend pas du tout le language informatique :s et je ne trouve pas de dossier debugcore 3.3 pur metre un script

#44 Chr1s

Chr1s

    Fragger

  • Membres
  • 756 messages

Posté 05 October 2012 - 13:45

Salut,
quelqu'un saurait il quelle est la potion supérieure parmi les noms de potions vu qu'elles sont dans le désordre?

HealthPotionLarge
healthPotion_Greater
healthPotion_Heroic
healthPotion_Lesser
healthPotion_Minor
healthPotion_Mythic
healthPotion_Normal
healthPotion_Resplendent
healthPotion_Runic
healthPotion_Super

Merci :).

Compte 1 (collector) principal : BANNI

Compte 2 : Parangon 741

Compte 3 [ON] : Parangon 755

Compte 4 du frangin : Parangon 642

ROS Bot : Script DH 2.2 multi build modifié avec rafale (strafe)

 

 

MERCI à GMS et à tous les contributeurs !!! userbarre_diablo_purple.jpg MERCI à GMS et à tous les contributeurs !!!


#45 Chr1s

Chr1s

    Fragger

  • Membres
  • 756 messages

Posté 05 October 2012 - 13:50

Pas sûr mais ça doit être à peu prés ça dans l'ordre de valeur :

healthPotion_Minor
healthPotion_Lesser
healthPotion_Normal
HealthPotionLarge
healthPotion_Greater
healthPotion_Super
healthPotion_Resplendent
healthPotion_Runic
healthPotion_Mythic

Compte 1 (collector) principal : BANNI

Compte 2 : Parangon 741

Compte 3 [ON] : Parangon 755

Compte 4 du frangin : Parangon 642

ROS Bot : Script DH 2.2 multi build modifié avec rafale (strafe)

 

 

MERCI à GMS et à tous les contributeurs !!! userbarre_diablo_purple.jpg MERCI à GMS et à tous les contributeurs !!!


#46 Toinou75

Toinou75

    Fragger

  • Membres
  • 803 messages
  • Location :Paris
  • Hobbies :Modélisme, Informatique

Posté 05 October 2012 - 14:14

Ok merci j'ai vue le sujet qui en parle mais je ne comprend toujours pas comment ça marche .. "Rajouter Goblin à la monsterlist ne le fait pas attaquer les gobelin in game ^^

Pour cela il faut voir le script fait pour dans la partie DebugCore 3.3 un truc comme ça ^^"

C'st peut etre simple pour vous mais je ne comprend pas du tout le language informatique :s et je ne trouve pas de dossier debugcore 3.3 pur metre un script



Look le point numéro 15 du FAQ.

#47 GFGdeal

GFGdeal

    Newbie lvl 2

  • Membres
  • 9 messages

Posté 05 October 2012 - 15:38

[/quote]


Look le point numéro 15 du FAQ.
[/quote]

Ah ouais merci man ta géré javais pas vue ce faq, j'ai pu voir d'autre chose egalement dans ce sujet qui vont pas mal m'aider merci !! et j'aurai une petite question ^^ combien de gens ce sont fait coinsé avec ce bot ( ban ) ? car j'ai vue le topic des "RIP" mais je sais pas si il utlisé ce bot la

#48 max68

max68

    Player Killer

  • Membre Senior
  • 3218 messages
  • Hobbies :Sport
    Informatique
    Musique
    Femme :P

Posté 05 October 2012 - 16:17

personne c est fais ban avec ce bot a part euclide y a un moment car il mourrais en chaine tt une nuit
sinon en ce moment si tu check que le bot repare t es tres safe ;)
Mes buildsVive la nouvelle version ! <3Un petit Merci, ne fait pas de mal de temps en temps ... Si un commentaire vous est utile, pensez à cliquer le bouton (+)

#49 okuteur

okuteur

    Newbie lvl 2

  • Membres
  • 7 messages

Posté 14 October 2012 - 13:09

Bonjour,

J'aimerais savoir comment ramasser les objets bleu/jaune/marron et ne vendre que les bleus/jaunes ?
j'ai déjà testé
QualiteItem=3
ca ramasse bien les items mais les place dans le coffre.

Comment faire pour qu'il fasse le "tri" (si possible)

merci d'avance.

#50 Euclide_

Euclide_

    YOOOOOOOOOOO

  • Admin Gms
  • 8923 messages
  • Location :France
  • Trade : Mediator

Posté 14 October 2012 - 13:59

Bonjour,

J'aimerais savoir comment ramasser les objets bleu/jaune/marron et ne vendre que les bleus/jaunes ?



Ce n'est pas possible dans la version actuelle.

#51 okuteur

okuteur

    Newbie lvl 2

  • Membres
  • 7 messages

Posté 14 October 2012 - 15:03


Bonjour,

J'aimerais savoir comment ramasser les objets bleu/jaune/marron et ne vendre que les bleus/jaunes ?



Ce n'est pas possible dans la version actuelle.



ok merci, c'est prévu dans une prochaine version ?

#52 max68

max68

    Player Killer

  • Membre Senior
  • 3218 messages
  • Hobbies :Sport
    Informatique
    Musique
    Femme :P

Posté 14 October 2012 - 15:09

je pense qu il y a pour le moment des choses beaucoup plus importantes ...
Mes buildsVive la nouvelle version ! <3Un petit Merci, ne fait pas de mal de temps en temps ... Si un commentaire vous est utile, pensez à cliquer le bouton (+)

#53 Afro

Afro

    Gamer lvl 1

  • Membres
  • 102 messages

Posté 14 October 2012 - 15:16

Je ne sais pas si quelquun a deja poster ca mais voici la liste des items ilvl 63 rare si vous etes interesser a ne ramasser que les rare ilvl 63 et les legendaire:

ArchonCrown_|Archonspaulders_|ArchonArmor_|Razorspikes_|HighScabbard_|ArchonFaulds_|ArchonGreaves_|Sacredshield_|ArchAxe_|Darkblade_|
Demolisher_|CenturionSpear_|RuneSword_|VeilPiercer_|HeavenHand_|Slayer_|Decapitator_|DoomHammer_|DreadLance_|SovereignStaff_|WarlordSword_|
GuruStaff_|TitanAxe_|RevenantBow_|HellionCrossbow_|Exorcist_|DesolatorWand_|

#54 asufeld_ins

asufeld_ins

    Hard Gamer

  • Membres
  • 293 messages
  • Location :Belgium
  • Hobbies :Reconstitution historique ( antiquité ). Forge.

Posté 14 October 2012 - 15:44

Je ne sais pas si quelquun a deja poster ca mais voici la liste des items ilvl 63 rare si vous etes interesser a ne ramasser que les rare ilvl 63 et les legendaire:

ArchonCrown_|Archonspaulders_|ArchonArmor_|Razorspikes_|HighScabbard_|ArchonFaulds_|ArchonGreaves_|Sacredshield_|ArchAxe_|Darkblade_|
Demolisher_|CenturionSpear_|RuneSword_|VeilPiercer_|HeavenHand_|Slayer_|Decapitator_|DoomHammer_|DreadLance_|SovereignStaff_|WarlordSword_|
GuruStaff_|TitanAxe_|RevenantBow_|HellionCrossbow_|Exorcist_|DesolatorWand_|



Ah ça c'est cool !! parce que à part les légendaire , les bons items ilvl63 sont vendu par le bot ...
Sauf si qualiteitem=6 mais bon... c'est vite full.

merci à toi

#55 sovage44

sovage44

    Débutant lvl 1

  • Membres
  • 36 messages

Posté 14 October 2012 - 17:43

:) La solution pour vendre les bleu et jaune qu'on ne souhaite pas garder :)

Je vois que je ne suis pas le seul à avoir essayé de paramétrer le bot pour optimiser au maximum le rendement en gold. Comme vous tous j'ai constaté qu'on ne pouvait pas obtenir le comportement suivant :
- Ramasser tous les objet à partir des bleu (bleu / jaunes / légendaire)
- Conserver les légendaires et objets de la rareList dans le coffre
- Vendre tout le reste (bleu et jaunes restants)

En effet si on spécifie dans settings.ini QualiteItem=3 on se retrouve vite full puisque tout part au coffre (bleus / jaunes / légendaires).

J'ai donc pris le taureau par les cornes et modifié le code pour résoudre le problème, voici donc la solution mise en place ci-dessous (il vous faut évidemment autoit pour lancer le main.au3 au lieu du main.exe, sans quoi les modifications donnée n'auront aucun effet)

Observation du code et identification de la mécanique d'analyse des items

Après avoir fureté dans les fichiers main.au3 et toolkit.au3, on s'apercoit qu'une seule fonction est chargée de trier les items, et ce à 2 moments différents :
- moment 1 : quand on farme et qu'un piti item tombe par terre, et que notre baba se demande : je ramasse cette babiole ou pas ?
- moment 2 : quand on rentre à la ville et qu'on va stocker au coffre puis qu'on va vendre au marchand nos trésors de guerre

Il s'agit de la fonction CheckItem() du fichier toolkit.au3, ça ressemble à ça :
Func CheckItem($_GUID, $_NAME)
	If checkFromList($Potions, $_NAME) Then
		_log($_NAME & " ==> It's a pot")
		Return "Inventory"
	ElseIf checkFromList($grabList, $_NAME) Then
		_log($_NAME & " ==> It's in the grablist")
		Return "Stash"
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= $QualityLevel) Then ; filter the magic and higher
		_log($_NAME & " ==> It's the quality level wich is set to " & $QualityLevel)
		Return "Stash"
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= 6) And checkFromList($rareList, $_NAME) Then ; filter the magic and higher
		_log($_NAME & " ==> It's a rare in our list" & $QualityLevel)
		Return "Stash"
	EndIf
	Return "Trash"
EndFunc   ;==>CheckItem

Le problème est le suivant, en fonction du résultat des tests effectués on retourne la destination de l'objet (inventaire, coffre, laisser par terre, vendre). Or pour le dernier test il faudrait avoir une destination différente selon qu'on est 'en train de farmer' ou qu'on est 'à la ville'. Ce dernier test couvre les objets ayant une qualité suffisante (au regard de la config QualiteItem du settings.ini), et le fait de retourner Stash implique qu'on ramasse l'objet, mais aussi qu'on le stocke dans le coffre une fois à la ville.

Amélioration de la fonction pour atteindre notre objectif

Maitenant qu'on a identifié le problème, comment qu'on fait ? :)
1) On améliore la fonction pour qu'elle réagisse différemment selon le contexte : 'en train de farmer' ou 'à la ville'
2) On modifie les appels à cette fonction là où c'est nécessaire (2 endroits)

On a 2 chaînes d'appel à la fonction, une par contexte :
- Quand on est 'en train de farmer' : main.au3.Func _botting() --> toolkit.au3.Func Attack() --> toolkit.au3.Func CheckItem()
- Quand on est 'à la ville' : main.au3.Func _botting() --> toolkit.au3.FilterBackpack() --> toolkit.au3.Func CheckItem()

Procédure à suivre pour modifier votre bot facilement

ETAPE 1

Remplaçer la fonction toolkit.au3.Func CheckItem() par celle ci-dessous :
- il y a un nouveau paramètre qui indique dans quel contexte ou se trouve
- il y a une réorganisation des checks effectués pour assurer la conservation des légendaires au coffre
(voir commentaires dans le code pour plus de détails)

;;========================================================================================================
;      Function:	CheckItemCustom  (by Sovage44)
;
;   Description:- Détermine quoi faire de l objet à analyser au moment du LOOT et au moment
;                 du BREAK TOWN, selon le contexte la destination de l objet peut être différente
;		- Tout objet looté ou vendu passe par cette fonction
;               - Contexte LOOT = quand on va ramasser un objet qui est par terre
;               - Contexte BREAKTOWN = quand on va au coffre + quand on va au marchand
;
;         Return:4 valeurs possibles, leur signification ci-dessous pour chacun des contextes possibles :
;                VALEUR DE RETOUR/CONTEXTE           LOOT                           BREAK TOWN
;                                    Stash	     on ramasse l objet	            on met l objet au coffre
;				     Trash           on ne ramasse PAS l objet      on vend l objet
;				     Inventory       on ramasse l objet             on garde l objet dans l inventaire
;========================================================================================================
Func CheckItemCustom($_GUID, $_NAME, $_CONTEXT)

	;S agit-il d une Potion ?
	If checkFromList($Potions, $_NAME) Then
		_log($_NAME & " ==> It's a pot")
		Return "Inventory"; ;LOOT=on ramasse / BREAKTOWN:on garde dans l inventaire
		
	;S agit-il d un objet présent dans la grabLlist ? (settings.ini : grabList)
	ElseIf checkFromList($grabList, $_NAME) Then
		_log($_NAME & " ==> It's in the grablist")
		Return "Stash" ;LOOT=on ramasse / BREAKTOWN:on met au coffre
		
	;S agit-il d un objet au moins rare + présent dans la rarelist ? (settings.ini : rareList)
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= 6) And checkFromList($rareList, $_NAME) Then ; filter the magic and higher
		_log($_NAME & " ==> It's a rare in our list" & $QualityLevel)
		Return "Stash" ; LOOT=on ramasse / BREAKTOWN:on met au coffre
		
	;S agit-il d un objet légendaire ?
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) = 9) Then
		Return "Stash" ; LOOT=on ramasse / BREAKTOWN:on met au coffre
		
	; S agit-il d un objet de qualité supérieure ou égale à la qualité d objet du fichier de config (settings.ini : QualiteItem)
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= $QualityLevel) Then ; filter the magic and higher
		_log($_NAME & " ==> It's the quality level wich is set to " & $QualityLevel)
		
		; La subtilité est là, si on arrive ici c'est que : 
		; -> notre objet a la qualité requise pour être ramassé
		;-> il ne fait partie ni de la grabList, ni de la rareList et il n'est pas légendaire
		
		; - contexte de LOOT : on le ramasse (objet bleu ou jaune)
		If ($_CONTEXT = "LOOT") Then
			Return "Stash"
		; - contexte de BREAKTOWN : on le vend <img src='http://img.gmstemple.com/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />
		ElseIf ($_CONTEXT = "BREAKTOWN") Then
			Return "Trash"
		EndIf
	EndIf
	
	; Si on arrive ici, c est que l objet est de qualité inférieure à ce qu on a demandé de ramasser (settings.ini : QualiteItem)
	; Il peut s agir de missclick du bot par exemple
	; - contexte de LOOT (on ne le ramasse pas)
	; - contexte de BREAKTOWN (on le vend)
	Return "Trash"  ; on ne veut pas de l'objet
	
EndFunc   ;==>CheckItem

ETAPE 2

Modifier les appels à cette fonction là où c'est nécessaire (notez qu'on passe le nouveau paramètre $_CONTEXT) :

- Dans toolkit.au3.FilterBackpack() remplaçer la ligne :
$itemDestination = CheckItem($__ACDACTOR[$i][0], $__ACDACTOR[$i][1])
PAR
$itemDestination = CheckItemCustom($__ACDACTOR[$i][0], $__ACDACTOR[$i][1],"BREAKTOWN")

- Dans toolkit.au3.Func Attack() remplaçer :
$itemDestination = CheckItem($item[0], $item[1])
PAR
$itemDestination = CheckItemCustom($item[0], $item[1],"LOOT")

ETAPE 3

Vérifier votre settings.ini pour vous assurer de ramasser à partir des objets bleu (QualiteItem=3).

Au passage j'en profite pour vous donner ma config qui me parait optimale (dans laquelle j'ai inclu la liste d'item lvl63 donnée par Afro, merci à toi d'ailleurs pour cette liste):
grabList=GoldCoin|GoldMedium|GoldSmall|GoldLarge|Lore_Book_Flippy|Amethyst|Ruby|Topaz|Emerald|Tome|Book|Plan|BlacksmithsTome|CraftingPlan_Smith_Drop 
QualiteItem=3
rareList=Amulet_|Ring_|CraftingPlan_Smith_Drop|ArchonCrown_|Archonspaulders_|ArchonArmor_|Razorspikes_|HighScabbard_|ArchonFaulds_|ArchonGreaves_|Sacredshield_|ArchAxe_|Darkblade_|Demolisher_|CenturionSpear_|RuneSword_|VeilPiercer_|HeavenHand_|Slayer_|Decapitator_|DoomHammer_|DreadLance_|SovereignStaff_|WarlordSword_|GuruStaff_|TitanAxe_|RevenantBow_|HellionCrossbow_|Exorcist_|DesolatorWand_
Potions=healthPotion_Mythic

ETAPE 4

Lancez le bot via main.au3 !! Enjoy !!

PS : - j'ai monitoré le bot sur une dizaine de run et le comportement est nikel, c'est donc une solution testée que voila :)
- Pour ceux qui ne se sentent pas à l'aise avec le code, en pièce jointe les 2 fichiers .au3 modifiés à remplacer dans le répertoire de votre Bot.

Fichier(s) joint(s)


  • Euclide_, gms-mat et SantosJoao aiment ceci

#56 plpp

plpp

    Fragger débutant

  • Membres
  • 524 messages

Posté 14 October 2012 - 19:33

La liste des ilvl 63 marche ? Parce que normalement le jeu ne lit pas directement les noms des items quand ils droppent mais il faut passer par le sno pour trier le ilvl.
Mais si ça marche tant mieux.

#57 Marburg

Marburg

    Hard Gamer

  • Membres
  • 264 messages

Posté 14 October 2012 - 20:21


Je ne sais pas si quelquun a deja poster ca mais voici la liste des items ilvl 63 rare si vous etes interesser a ne ramasser que les rare ilvl 63 et les legendaire:

ArchonCrown_|Archonspaulders_|ArchonArmor_|Razorspikes_|HighScabbard_|ArchonFaulds_|ArchonGreaves_|Sacredshield_|ArchAxe_|Darkblade_|
Demolisher_|CenturionSpear_|RuneSword_|VeilPiercer_|HeavenHand_|Slayer_|Decapitator_|DoomHammer_|DreadLance_|SovereignStaff_|WarlordSword_|
GuruStaff_|TitanAxe_|RevenantBow_|HellionCrossbow_|Exorcist_|DesolatorWand_|



Ah ça c'est cool !! parce que à part les légendaire , les bons items ilvl63 sont vendu par le bot ...
Sauf si qualiteitem=6 mais bon... c'est vite full.

merci à toi

J'ai testé cette liste, mais le bot persiste à prendre tout ce qui vient en rare :/

Filter generator : Générateur de filtres avancés pour CorePlusField v7+ | %5Bbuild%5D Marburg's féticheur "high radius" | %5Bbuild%5D Marburg's sorcière "high speed"Moine %5B100%5D 196Kdps unbuff, 840Kgold/h, radius:14, Brigand 26Kdps, 8.0a | Moine %5B100%5D 120Kdps unbuff, 760Kgold/h max, Enchanteresse 15Kdps, 8.0aSorcière%5B100%5D 307Kdps unbuff, 974Kgold/h, radius:42, Enchanteresse 13Kdps, 8.1 | Féticheur%5B100%5D 275Kdps unbuff, 1025Kgold/h, radius:67, Enchanteresse 15Kdps, 8.1HC Féticheur%5B44%5D 57Kdps unbuff, 280Kgold/h, radius:45, Templier 3Kdps, 8.1Développement en cours : CoCbot, un bot pour Clash of Clan sur émulateur Androidbanner2.gif


#58 okuteur

okuteur

    Newbie lvl 2

  • Membres
  • 7 messages

Posté 14 October 2012 - 22:01

@sovage44

C'est exactement ce à quoi je pensais, je vais tester des que possible (après l'installation d'autoit)

#59 Garg

Garg

    Newbie lvl 3

  • Membres
  • 10 messages

Posté 14 October 2012 - 22:12

:) La solution pour vendre les bleu et jaune qu'on ne souhaite pas garder :)

Je vois que je ne suis pas le seul à avoir essayé de paramétrer le bot pour optimiser au maximum le rendement en gold. Comme vous tous j'ai constaté qu'on ne pouvait pas obtenir le comportement suivant :
- Ramasser tous les objet à partir des bleu (bleu / jaunes / légendaire)
- Conserver les légendaires et objets de la rareList dans le coffre
- Vendre tout le reste (bleu et jaunes restants)

En effet si on spécifie dans settings.ini QualiteItem=3 on se retrouve vite full puisque tout part au coffre (bleus / jaunes / légendaires).

J'ai donc pris le taureau par les cornes et modifié le code pour résoudre le problème, voici donc la solution mise en place ci-dessous (il vous faut évidemment autoit pour lancer le main.au3 au lieu du main.exe, sans quoi les modifications donnée n'auront aucun effet)

Observation du code et identification de la mécanique d'analyse des items

Après avoir fureté dans les fichiers main.au3 et toolkit.au3, on s'apercoit qu'une seule fonction est chargée de trier les items, et ce à 2 moments différents :
- moment 1 : quand on farme et qu'un piti item tombe par terre, et que notre baba se demande : je ramasse cette babiole ou pas ?
- moment 2 : quand on rentre à la ville et qu'on va stocker au coffre puis qu'on va vendre au marchand nos trésors de guerre

Il s'agit de la fonction CheckItem() du fichier toolkit.au3, ça ressemble à ça :

Func CheckItem($_GUID, $_NAME)
	If checkFromList($Potions, $_NAME) Then
		_log($_NAME & " ==> It's a pot")
		Return "Inventory"
	ElseIf checkFromList($grabList, $_NAME) Then
		_log($_NAME & " ==> It's in the grablist")
		Return "Stash"
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= $QualityLevel) Then ; filter the magic and higher
		_log($_NAME & " ==> It's the quality level wich is set to " & $QualityLevel)
		Return "Stash"
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= 6) And checkFromList($rareList, $_NAME) Then ; filter the magic and higher
		_log($_NAME & " ==> It's a rare in our list" & $QualityLevel)
		Return "Stash"
	EndIf
	Return "Trash"
EndFunc   ;==>CheckItem

Le problème est le suivant, en fonction du résultat des tests effectués on retourne la destination de l'objet (inventaire, coffre, laisser par terre, vendre). Or pour le dernier test il faudrait avoir une destination différente selon qu'on est 'en train de farmer' ou qu'on est 'à la ville'. Ce dernier test couvre les objets ayant une qualité suffisante (au regard de la config QualiteItem du settings.ini), et le fait de retourner Stash implique qu'on ramasse l'objet, mais aussi qu'on le stocke dans le coffre une fois à la ville.

Amélioration de la fonction pour atteindre notre objectif

Maitenant qu'on a identifié le problème, comment qu'on fait ? :)
1) On améliore la fonction pour qu'elle réagisse différemment selon le contexte : 'en train de farmer' ou 'à la ville'
2) On modifie les appels à cette fonction là où c'est nécessaire (2 endroits)

On a 2 chaînes d'appel à la fonction, une par contexte :
- Quand on est 'en train de farmer' : main.au3.Func _botting() --> toolkit.au3.Func Attack() --> toolkit.au3.Func CheckItem()
- Quand on est 'à la ville' : main.au3.Func _botting() --> toolkit.au3.FilterBackpack() --> toolkit.au3.Func CheckItem()

Procédure à suivre pour modifier votre bot facilement

ETAPE 1

Remplaçer la fonction toolkit.au3.Func CheckItem() par celle ci-dessous :
- il y a un nouveau paramètre qui indique dans quel contexte ou se trouve
- il y a une réorganisation des checks effectués pour assurer la conservation des légendaires au coffre
(voir commentaires dans le code pour plus de détails)

;;========================================================================================================
;      Function:	CheckItemCustom  (by Sovage44)
;
;   Description:- Détermine quoi faire de l objet à analyser au moment du LOOT et au moment
;                 du BREAK TOWN, selon le contexte la destination de l objet peut être différente
;		- Tout objet looté ou vendu passe par cette fonction
;               - Contexte LOOT = quand on va ramasser un objet qui est par terre
;               - Contexte BREAKTOWN = quand on va au coffre + quand on va au marchand
;
;         Return:4 valeurs possibles, leur signification ci-dessous pour chacun des contextes possibles :
;                VALEUR DE RETOUR/CONTEXTE           LOOT                           BREAK TOWN
;                                    Stash	     on ramasse l objet	            on met l objet au coffre
;				     Trash           on ne ramasse PAS l objet      on vend l objet
;				     Inventory       on ramasse l objet             on garde l objet dans l inventaire
;========================================================================================================
Func CheckItemCustom($_GUID, $_NAME, $_CONTEXT)

	;S agit-il d une Potion ?
	If checkFromList($Potions, $_NAME) Then
		_log($_NAME & " ==> It's a pot")
		Return "Inventory"; ;LOOT=on ramasse / BREAKTOWN:on garde dans l inventaire
		
	;S agit-il d un objet présent dans la grabLlist ? (settings.ini : grabList)
	ElseIf checkFromList($grabList, $_NAME) Then
		_log($_NAME & " ==> It's in the grablist")
		Return "Stash" ;LOOT=on ramasse / BREAKTOWN:on met au coffre
		
	;S agit-il d un objet au moins rare + présent dans la rarelist ? (settings.ini : rareList)
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= 6) And checkFromList($rareList, $_NAME) Then ; filter the magic and higher
		_log($_NAME & " ==> It's a rare in our list" & $QualityLevel)
		Return "Stash" ; LOOT=on ramasse / BREAKTOWN:on met au coffre
		
	;S agit-il d un objet légendaire ?
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) = 9) Then
		Return "Stash" ; LOOT=on ramasse / BREAKTOWN:on met au coffre
		
	; S agit-il d un objet de qualité supérieure ou égale à la qualité d objet du fichier de config (settings.ini : QualiteItem)
	ElseIf (IterateActorAtribs($_GUID, $Atrib_Item_Quality_Level) >= $QualityLevel) Then ; filter the magic and higher
		_log($_NAME & " ==> It's the quality level wich is set to " & $QualityLevel)
		
		; La subtilité est là, si on arrive ici c'est que : 
		; -> notre objet a la qualité requise pour être ramassé
		;-> il ne fait partie ni de la grabList, ni de la rareList et il n'est pas légendaire
		
		; - contexte de LOOT : on le ramasse (objet bleu ou jaune)
		If ($_CONTEXT = "LOOT") Then
			Return "Stash"
		; - contexte de BREAKTOWN : on le vend <img src='http://img.gmstemple.com/public/style_emoticons/<#EMO_DIR#>/smile.gif' class='bbc_emoticon' alt=':)' />
		ElseIf ($_CONTEXT = "BREAKTOWN") Then
			Return "Trash"
		EndIf
	EndIf
	
	; Si on arrive ici, c est que l objet est de qualité inférieure à ce qu on a demandé de ramasser (settings.ini : QualiteItem)
	; Il peut s agir de missclick du bot par exemple
	; - contexte de LOOT (on ne le ramasse pas)
	; - contexte de BREAKTOWN (on le vend)
	Return "Trash"  ; on ne veut pas de l'objet
	
EndFunc   ;==>CheckItem

ETAPE 2

Modifier les appels à cette fonction là où c'est nécessaire (notez qu'on passe le nouveau paramètre $_CONTEXT) :

- Dans toolkit.au3.FilterBackpack() remplaçer la ligne :
$itemDestination = CheckItem($__ACDACTOR[$i][0], $__ACDACTOR[$i][1])
PAR
$itemDestination = CheckItemCustom($__ACDACTOR[$i][0], $__ACDACTOR[$i][1],"BREAKTOWN")

- Dans toolkit.au3.Func Attack() remplaçer :
$itemDestination = CheckItem($item[0], $item[1])
PAR
$itemDestination = CheckItemCustom($item[0], $item[1],"LOOT")

ETAPE 3

Vérifier votre settings.ini pour vous assurer de ramasser à partir des objets bleu (QualiteItem=3).

Au passage j'en profite pour vous donner ma config qui me parait optimale (dans laquelle j'ai inclu la liste d'item lvl63 donnée par Afro, merci à toi d'ailleurs pour cette liste):
grabList=GoldCoin|GoldMedium|GoldSmall|GoldLarge|Lore_Book_Flippy|Amethyst|Ruby|Topaz|Emerald|Tome|Book|Plan|BlacksmithsTome|CraftingPlan_Smith_Drop 
QualiteItem=3
rareList=Amulet_|Ring_|CraftingPlan_Smith_Drop|ArchonCrown_|Archonspaulders_|ArchonArmor_|Razorspikes_|HighScabbard_|ArchonFaulds_|ArchonGreaves_|Sacredshield_|ArchAxe_|Darkblade_|Demolisher_|CenturionSpear_|RuneSword_|VeilPiercer_|HeavenHand_|Slayer_|Decapitator_|DoomHammer_|DreadLance_|SovereignStaff_|WarlordSword_|GuruStaff_|TitanAxe_|RevenantBow_|HellionCrossbow_|Exorcist_|DesolatorWand_
Potions=healthPotion_Mythic

ETAPE 4

Lancez le bot via main.au3 !! Enjoy !!

PS : - j'ai monitoré le bot sur une dizaine de run et le comportement est nikel, c'est donc une solution testée que voila :)
- Pour ceux qui ne se sentent pas à l'aise avec le code, en pièce jointe les 2 fichiers .au3 modifiés à remplacer dans le répertoire de votre Bot.


Je te confirme que c'est fonctionnel :)

Merci

#60 Marcis

Marcis

    Gamer lvl 1

  • Membres
  • 117 messages

Posté 14 October 2012 - 22:36

Bonsoir sovage44,

Merci pour la démonstration du script.
Je ne suis pas programmeur mais chauffeur.
Cela veut dire que le programme vend tous les items sauf les légendaires et rares ayant le level 63 ?