Aller au contenu


Photo

[Fonction] Resurection


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

#1 kickbar

kickbar

    Devlopette

  • Membre
  • 539 messages
  • Hobbies :Informatiques, jeux vidéo, botting !!!! ;D

Posté 19 November 2012 - 10:09

*
MESSAGE POPULAIRE !

N'UTILISEZ PAS CETTE FONCTION SI VOUS N'ETES PAS DEVANT VOTRE ORDINATEUR, IL FAUT AU MOIN 24h/48h DE RUN POUR ETRE SUR DE SON COMPORTEMENT VIS A VIS DE VOS REGLAGES

- Fonctionne pour la 1.0.6 !!

##Mise a jour le 22/11/2012##
- ajout d'une vérification dans la routine de déplacement, corrige la statistique "Nombre de mort"
- modification de la fonction random(), maintenant elle fonctionne bien ! (Merci gmsMath & tazgrominet)

##Mise a jour le 24/11/2012##
- ajout de securité quand on nombre de mort vis a vis de la variable repairafterxxgame du fichier config.ini

Bonjours tous le monde,

Voila j'en avais marre de voir mon bot mourir sur des élites, en les laissant a 5 hp ( oui oui, je suis stupide je regarde mon bot botter tout en travaillant ^^) (c'est mon meilleur ami ce bot, donc je le cajole :P )

Donc je me suis posée la question de savoir si il serait intéressant de faire revivre le bot, un nombre de fois donnée, pour qu'il puisse retenter sa chance et finir son run.

Utilité :
- augmenter la difficulté de vos runs (je pense surtout du passage de hell à inferno)
- ne pas gaspiller le nephalem
- finir le run
- beaucoup plus discret que de deco/reco au premier décé survenus


Modification complète de Sequence.au3

Spoiler


Modification de main.au3

- Ajout d'une ligne de code
Spoiler


Modification de toolkit.au3

- Ajout des fonctions init_sequence() et bloc_sequence()
Spoiler


- Ajout de la fonction _playerdead_revive()
je vous conseille de l'ajouter en dessous de la fonction _playerdead(), sa place dans le code n'a pas vraiment d'importance !
Spoiler


- ajout de 5 vérifications de mort (toujours dans toolkit.au3)
-> la première dans la fonction KillMob($name, $offset, $guid)
Spoiler


-> deuxième modification dans la fonction Attack($range, $monsterList)
début de la fonction
Spoiler


-> 3éme modification, toujours dans la fonction Attack($range, $monsterList)
début du corp du while principale
Spoiler


->4éme vérification, dans la fonction Grabit($name, $offset)
début du corp du while principale
Spoiler


-> 5ème vérification, dans la fonction MoveToPos($_x, $_y, $_z, $_a, $m_range)
a l’intérieur du corp de la deuxième boucle
Spoiler

Maintenant on s'occupe de mettre en place un systeme pour activer/desactiver le system de resurection

->fichier \lib\setting.au3

Spoiler



->fichier setting.ini

ajouter les lignes suivantes, juste au dessus de "repairafterxxgames"
Spoiler



Pour finaliser on ajoute la stat "Résurrection"

-> fichier toolkit.au3

modifier dans la fonction StatsDisplay()
Spoiler



Détail de comment crée les array de séquence :

Spoiler



Merci de me faire part des erreurs que vous pourriez rencontré en installant/exécutant cette fonction !



***********************************************************************************************************************
* LA SUITE DU CODE AJOUTE UNE SÉCURITÉ QUAND AU NOMBRE DE MORT MAXIMUM VIS A VIS DU NOMBRE DE PARTIT SANS RÉPARATION *
***********************************************************************************************************************


Je vous propose ici deux solution, l'une qui vérifie bêtement l’état du stuff après un revive, l'autre qui prend en compte la variable "repairafterxxgames" du fichier config.ini + état du stuff.


Première possibilité, sans vérification de la variable "repairafterxxgames"


- Dans le fichier toolkit.au3 modifier la fonction bloc_sequence()

Spoiler




Deuxième possibilité, beaucoup plus restrictive que la première, mais qui permet de ne jamais etre dans le jaune si vous avez bien réglé repairafterxxgames dans votre fichier ini, mais qui pour ma part dénature un peu la fonction "revive"

- modification de main.au3

ajouter la global si dessous, dans la liste des variables Global :
Spoiler


dans la fonction _dorun(), au début de la fonction ajouter :
Spoiler


modifier dans la fonction _botting la ligne suivante :
Spoiler



- modification de toolkit.au3

remplacer complétement la fonction bloc_sequence :
Spoiler


Une petite explication quand a la deuxieme possibilité, a chaque fois que vous mourrez et que vous revenez a la vie, la variable "games" s'incremente de 1, ce qui fait croire au code que vous commencez un nouveau run, donc une fois que "games" se retrouve etre plus grand ou egale a la valeur de repairafterxxgames que vous avez definit dans setting.ini, la fonction de revive se desactive, et vous teleporte en ville pour reparer.

Lorsque je dit que la deuxieme possibilité denature la fonction revive, c'est uniquement car le code actuelle du bot ne fait pas la difference entre un run finit et un run echoué pour cause de mort/bloquage etc...
perso j'utilise la variable repairafterxxgames comme etant un echapatoire pour ne jamais etre plein dans mon inventaire, avec le code actuelle je suis obliger d'utiliser repairafterxxgames comme etant aussi un nombre de mort autorisé avant de reparer, ce qui pour le coup m'embete, car si je veux allouer a mon personnage le droit de mourir entre 2 et 3 fois par run et que je veux me vider tout les un ou deux run maximum,
au final, à cause de cette variable mon perso n'aura le droit de mourir qu'une à deux fois avant de rentrer pour reparer.

Je vous avoue ne pas avoir la motivation de crée une nouvelle variable et de modifier le fonctionnement de base du bot sachant que pour moi cette fonction marche tres bien.

j'ai tester la deuxieme possibilité en arma 3 avec le bot, perso je n'ai pas eu de probleme malgré un gros nombre de décé, donc voila j'attend vos retours quand a ces modifications !

Quand a la premiere je n'ai pas testé, mais j'ai confiance en la fonction "CheckRepair()" donc cela devrait etre bon !


***********************************************************************************************************************
* LA SUITE DU CODE AJOUTE UN FICHIER LOG.TXT (NON OBLIGATOIRE) *
***********************************************************************************************************************


-> Avant tout, ajouter un dossier "log" a la racine du dossier de votre bot

- Ajout d'une global dans le fichier main.au3
Spoiler


- Modification de la fonction _log($text) dans le fichier toolkit.au3
Spoiler


- toujours dans main.au3, modifier les appels suivant à la fonction _log()
Spoiler



- dans le fichier toolkit.au3 modifier les appels suivant à la fonction _log()

fonction init_sequence()
Spoiler


fonction bloc_sequence()
Spoiler


Si toute vos modifications sont correct, vous devriez avoir un fichier log de ce type :
Spoiler



N'UTILISEZ PAS CETTE FONCTION SI VOUS N'ETES PAS DEVANT VOTRE ORDINATEUR, IL FAUT AU MOIN 24h/48h DE RUN POUR ETRE SUR DE SON COMPORTEMENT VIS A VIS DE VOS REGLAGES

  • Euclide_, bilabou, Rudzan et 13 autres aiment ceci

#2 dass

dass

    Débutant lvl 4

  • Membres
  • 92 messages
  • Location :44600
  • Hobbies :azis

Posté 19 November 2012 - 13:38

beau boulot en tout cas, maintenant le challenge, ce serait d'utiliser la fonction rez seulement si un légendaire est drop en cas de mort :lol: :lol: :lol:

#3 Rudzan

Rudzan

    Hard Gamer

  • Membres
  • 285 messages

Posté 19 November 2012 - 18:24

allez un ptit +1 car il se creuse la tête pour la communauté!

Bon courage ;)

#4 bilabou

bilabou

    Hard Gamer

  • Membres
  • 330 messages
  • Hobbies :Echecs, sports de combat

Posté 19 November 2012 - 21:16

Je trouve la fonction super intéressante et ça rend le Bot bien plus humain. Quand je me fait flingué par des élite et bien j'aime pas ça j'y retourne pour les déglinguées !!!

Donc je teste et te rapporte les bugs si j'en ai. :D

#5 max68

max68

    Player Killer

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

Posté 19 November 2012 - 21:26

surtout dis nous ton ratio de gold si il varie en mieux ou pire parce que pour ma part j hésite a rajouter la fonction je pense qu elle diminuera le rendement du bot
enfin a voir j'attends les retour :)
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 (+)

#6 kickbar

kickbar

    Devlopette

  • Membre
  • 539 messages
  • Hobbies :Informatiques, jeux vidéo, botting !!!! ;D

Posté 19 November 2012 - 23:33

Je te donnerais mes logs de la nuit, pour le moment je modifie donc j’arrête pas de stop/redémarrer le bot etc...

mais a partir du moment ou il t'arrive de mourir en début de run que ce soit une fois sur 50 ou 10 fois sur 20, la fonction te fais gagner de l'exp et du gold.

Perso je meurt beaucoup plus dans les escaliers qu'a la fin du run dans la pleine, après je pense qu'il faut juste regarder ou tu meurs le plus souvent, dans tt les cas, elle te permet de profiter a fond de ton nephalem sur chaqu'un de tes run !

Voila c'est a jour, elle fonctionne beaucoup mieux, si vous avez plein de mob autour de vous, il n'attend plus le settimeout pour chaque mob, du coup on ne déclenche plus le settimeout d'inactivité, votre hero est bien res, et recommence sont blocs sequence comme s'y de rien n'était ;D

#7 bilabou

bilabou

    Hard Gamer

  • Membres
  • 330 messages
  • Hobbies :Echecs, sports de combat

Posté 20 November 2012 - 07:50

le script fonctionne du tonnerre !
rallonge un peu la durée moyen d'un run (environ d'une minute,mais est ce vraiment cette fonction car avec toutes les modifs déjà faites^^) mais on profite à fond des nephalems et le GPH reste le même du coup, voir un peu meilleur.
Cette nuit j'ai looté deux purs lég ! Une gardienne infame full Int/vita et une pierre moine DEX/CC/chasse/compétence j'suis super content.

La fonction résurrection est adopté pour ma part. Le découpage des movetopos est une très bonne idée.Plus le marathon du barbare on perd pas trop de temps.

Merci kickbar

#8 max68

max68

    Player Killer

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

Posté 20 November 2012 - 08:21

Et ton ratio gold ? Parce que bon les legs c est de la chance hun c est pas du a la fonction
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 (+)

#9 kickbar

kickbar

    Devlopette

  • Membre
  • 539 messages
  • Hobbies :Informatiques, jeux vidéo, botting !!!! ;D

Posté 20 November 2012 - 08:48

Niveau gold, sa a pas changé grand chose vu que je ne meurt pas des masses ^^
donc c'est très difficile de dire si sa change quelque chose ou pas, il faudrait tester avec quelqu'un qui meurt plus de 2 fois sur 10 run.

Niveau drop, a partir du moment ou tu meurs, ne serais ce qu'une fois, la fonction est intéressante, vu que tu retournes loot ce que tu n'as pas pus prendre.

j'ai modifié un peu le code pour pouvoir le configurer (activation/désactivation) depuis le config.ini


honnêtement, je trouve juste que cette fonction est bien pour palier au gros defaut du bot, c'est a dire, je meurt donc je recrée.
Pourquoi ne pas juste ressayer ;D

le nombre de "vie" est maintenant configurable

#10 bilabou

bilabou

    Hard Gamer

  • Membres
  • 330 messages
  • Hobbies :Echecs, sports de combat

Posté 20 November 2012 - 09:13

Pour le ratio gold et drop, les bufs néphalems sont très important et je trouve que les exploiter au max nous procure plus de chance de drop des légendaires que de déco et recommencer à zéro à tuer les élites.
En plus hier je l'ai vu mourir en droppant un lég donc résurection très utile ! :wub:

De plus le bot est plus humanoïde ainsi. Quand je joue à la main je me déco pas à chaque mort.

Le fait en plus de choisir dans le config.ini d'activer ou désactiver la fonction c'est du luxe. ;)

Max68 essaye on te dit !? :D

#11 neutredu89

neutredu89

    Maître de la paix

  • Membres
  • 37 messages

Posté 20 November 2012 - 12:55

Désoler, je vais faire mon Noobs mais pourrai tu expliquer comment rajouter des point de départ car je farme les clef donc cette fonction peu être très bien pour monter dans les PM merci.

#12 xoum

xoum

    Hard Gamer

  • Membres
  • 257 messages

Posté 20 November 2012 - 14:41

Plusieurs choses :

- dans sequence.au3 on ne déclare pas des variables global si elles ne sont pas utilisées dans un autre fichier :

Global $nb_die_t = 0
Global $rdn_die_t = 0


- Merci de ne pas mettre des commentaires de log inapproprié :
_log("You are death N00b !!!, max :" & $rdn_die_t - $nb_die_t & " more death allowed")

- tu re-déclares des variables utilisé en global
Func sequence()
        $nb_die_t = 0
        $rdn_die_t = $ResLife + Random(-1, 1)

- Correction de phrases en anglais :

You have reached the max number of resurrection
You have reached the max number of resurrection

Invalide sequence array argument
InvalidX sequence array argument


Il manque une chose assez urgente. C'est la modification des nb de run lorsque l'on meurt.
Je m'explique, dans le setting nous avons ajouté une variable pour choisir le nombre de run pour réparer notre stuff.
Cette variable ne veut maintenant plus rien dire avec l'ajout de ta fonction.
Ex : On peut mourir 5 fois en 2 run et ne toujours pas réparer si le nombre de run pour réparation choisi est 6.
Il est alors probable que le bot tourne avec un stuff dans le rouge.
C'est pour cela qu'il faut ajouter dans le code une variable qui tiens compte de cela. Je n'ai pas le script sous les yeux je ne peux donc pas le faire pour l'instant mais si tu ne l'ajoutes pas je le ferai.


Merci pour ton script.

#13 kickbar

kickbar

    Devlopette

  • Membre
  • 539 messages
  • Hobbies :Informatiques, jeux vidéo, botting !!!! ;D

Posté 20 November 2012 - 18:02

Avant toute chose merci pour tes corrections ;)

je modifie de suite,

- pour les Globals, j'ai fait du travail de cochon ;D


Func sequence()
$nb_die_t = 0
$rdn_die_t = $ResLife + Random(-1, 1)

Ce n'est pas une re-déclaration de variable global, c'est juste un reset qui à lieu au début de chaque appelle de la fonction sequence(), en terme de BOT sa revient a réinitialiser ces variables au début de chaque run

Pour les réparations je vais reflechir, mais si tu as une idée de comment gérer sa, n’hésite pas a m'en faire part !

#14 kickbar

kickbar

    Devlopette

  • Membre
  • 539 messages
  • Hobbies :Informatiques, jeux vidéo, botting !!!! ;D

Posté 20 November 2012 - 18:10

Désoler, je vais faire mon Noobs mais pourrai tu expliquer comment rajouter des point de départ car je farme les clef donc cette fonction peu être très bien pour monter dans les PM merci.


Donne moi ton fichier séquence, j'en profiterais pour expliquer au gens comment convertir leur coordonnée en un joli array ;)

#15 nuloseninformatique

nuloseninformatique

    Débutant lvl 2

  • Membres
  • 66 messages

Posté 20 November 2012 - 23:05

je testerais ce week end et je vous dirais ce qu'il en est
car cela peu etre interessant , par exemple mes 3 feti on entre 82k et 95k dps et 600 a 800 all res , 32k life a 45k life
et pour le moment ils sont parangon 70 a 75 ( en 2 semaines de bot arma ) , mais en PM il se font tuer tout les 2 run en milieu de run sur des elite peste rayon lazer , donc il est possible que cette fonction soit tres sympa :) d'autant que ne serais ce qu'en PM2 on gagne 50% mf et 8% d'objet bonus
donc voila , maintenant a voir effectivement le souci que souleve xoum pour les nombre de run pour réparer
ce week je prend le temps pour voir ca et vous donner mes retours

#16 gmsMath

gmsMath

    Fragger

  • Membres
  • 981 messages
  • Location :Paris
  • Hobbies :Voyages, Moto, calembour hilarant et gms temple :)

Posté 21 November 2012 - 23:31

Merci Beaucoup kickBar pour cette fonction !
Elle marche vraiment pas mal !

Si je peux me permettre quelques remarques - je ne suis pas encore suffisamment calé pour savoir si c'est réalisable - quand le perso meurt on pourrait pas récupérer sa position et faire directement un MoveTo là bas [modulo quelques mètres] plutôt que de reprendre pas à pas la séquence ?

Pourquoi définir la fonction bloc_sequence dans le fichier Sequence ? ca pourrait être cool de l'intégrer dans le fichier Toolkit non?
Sinon autre point dans le log de cette fonction tu mets "You are death" je pense que çà serait plus "You are dead".
Toujours dans ce log mon nombre de "resurect" restante n'est pas un entier mais un décimal à plusieurs chiffres après la virgule. Il est pourtant bien définit dans le Settings.ini comme étant 4.
Peut être faudrait il les typer quelque part ?
=> Je pense que le hic vient juste du $rdn_die_t = $ResLife + Random(-1, 1) Random doit renvoyer un float donc forcément hop bon après c'est qu'une histoire d'esthétisme ...

Merci beaucoup pour ton boulot c'est vraiment cool.
--Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.

#17 kickbar

kickbar

    Devlopette

  • Membre
  • 539 messages
  • Hobbies :Informatiques, jeux vidéo, botting !!!! ;D

Posté 22 November 2012 - 00:07

Effectivement, la fonction Random() doit renvoyer un float, il faut que je regarde comment tronquer/convertir ce float pour obtenir un int (on aurais était dans n'importe qu'elle autre langage, j'aurais eu une erreur, la autoit s'en fou royalement ^^).

Pour le MovToPos directement à l'endroit du décès, ce n'est pas possible, car si il y a un élément du décor entre le point de départ et l'endroit de la mort il y aura blocage, le plus sur étant donc de tout refaire (à moins d’être capable d’écrire un algo qui calcul le chemin le plus court en prenant en compte les obstacles).

Pour les fautes en anglais, je corrige sa tout de suite (je ne comprend pas pourquoi j'ai fait des fautes... moi qui suis, si bon en anglais d'habitude xD). Bon j’arrête les mensonges !

pour le placement de la fonction, effectivement tu as complètement raison, elle sera plus propre dans toolkit que dans sequence.au3.
C'est juste qu'au moment du développement, je trouvais sa plus utile de l'avoir directement dans le fichier ou étais declaré mes arrays

Merci a toi pour ces petites correction, je m'y applique dans la nuit !

#18 tazgrominet

tazgrominet

    Gamer lvl 2

  • Membres
  • 190 messages

Posté 22 November 2012 - 08:14

salut,

la fonction random peut retourner soit un float soit un int c'est au programmeur de choisir.suffit de mettre le flag a 1 pour avoir un int.
voici la copie de l'aide d'autoit, a ouvrir avec F1 pour ceux qui n'utilise jamais l'aide.

Spoiler


taz,
« Errare humanum est, perseverare diabolicum » Un probleme de configuration du bot ? d'utilisation du bot ? --> FAQ

#19 kickbar

kickbar

    Devlopette

  • Membre
  • 539 messages
  • Hobbies :Informatiques, jeux vidéo, botting !!!! ;D

Posté 22 November 2012 - 08:21

Merci ;) je corrige !

#20 Crush33

Crush33

    Hard Gamer

  • Membres
  • 314 messages

Posté 22 November 2012 - 23:29

Excellent travail, je viens de l'intégrer et de le tester ça vend du rêve, aucun souci à déplorer.

Merci beaucoup !!!