Page 2 sur 2
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : sam. 19 nov. 2011 17:07
par zeshrek
En fait je ne suis pas sur qu'il cherche a créer un outil pour tricher mais plutot un jeu.
Apres avoir bien réfléchi, j'ai l'impression qu'il crée un jeu de stratégie dans lequel il faut contruire des batiments et les améliorer (c'est le coup de l'amélioration de la forge qui me fait penser a ca).
Me gourre je ?
Si tel est le cas, je comprend mal l'interet du random, sauf si le but est de reproduire l'effet de lancer de dé comem dans le s jeux de role.
Mais tres franchement c'est assez pénible de devoir imaginer l'objectif de celui qui demande de l'aide. Une fonction se place dans l'ensemble d'un script/programme et on a un peu besoin d'en connaitre les tenants et aboutissants pour pouvoir passer du temps a apporter une aide, plutot qu'a éssaye de comprendre ce qui est demandé.
N'aurait il pas été plus simple de dire que tu voulais faire un jeu ou l'utilisateur pouvait lancer plusieurs améliorations (de batiments, de materiels, de sorts, peu importe) dont la durée était fixée par un random, et que tu voulais que pour chaque objet il y ait une barre de progression qui avance.
Car je suppose que c'est ca que tu cherches a faire ? Mon flair serait il encore tombé juste ?
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : sam. 19 nov. 2011 17:31
par sylvanie
Ce qui est dit est vrai pour l'aspect association Autoit - bot mais là je ne pense vraiment pas qu'on soit dans le cas d'un développement de bot ...
Tout ce que j'ai vu c'est une inspiration issue des jeux mais de là à lever une barricade digne de Stuxnet (qui lui n'est pas écrit en Autoit) c'est peut êtreun peu beaucoups.
Maintenant pour la détection antiviral, c'est plus du fait que les malwares utilisent souvent UPX tout comme Autoit le fait; et que ce dernier se fait toper sur des faux positifs. J'ai eu un tas de cas où la simple recompilation en désactivant UPX à suffit à calmer le jeu.
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : sam. 19 nov. 2011 17:43
par jchd
@shrek
Bah, tricher ou pas, c'est un point complètement secondaire.
Ceci dit, je plussoie fortement aux voix qui auraient préféré une question claire, car on n'y est pas encore.
@loockys
Comment poser une question ? version Potter
@Sylvanie
Oui je vois ton post et j'entends bien tout ça. Ce n'est pas une barricade, c'est juste la motivation de mon opinion. Quand je déterre la hache, ça saigne _vraiment_, pas là.
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : sam. 19 nov. 2011 22:07
par legend
tout a fait d'accord avec jchd.
maintenant, il faut expliquer le but du script et de
l'arme que tu a cité.
sinon, le grand méchant
Tlem va débarquer

après tout, si c'est pas un bot. ça dérange pas de se justifier non?
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : sam. 19 nov. 2011 22:14
par Iste
Pour le moment on a aucune raison de verrouiller tout ca, sinon ca aurait déja été fait.
De plus, personne n'est obligé de décrire son projet (d'autant plus que dans certain cas "légale" ils n'en ont pas la possibilité pour diverses raisons)
La seule chose demandé ici, est une explication plus claire de ce qui est voulu. Je suis le sujet depuis le début, et j'ai toujours pas compris :/ Mais il semblerait que sylvanie en tapant au hasard soit pas loin de la cible !
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : sam. 19 nov. 2011 22:45
par mikell
Autant la méfiance anti-bot est compréhensible, autant alors là franchement j'ai beau tourner le truc dans tous les sens je vois vraiment pas comment un script qui incrémente une valeur de façon aléatoire pourrait servir à tricher

Faut pas tétaniser sur "arme" vu que dans la msgbox il y a "forgeron" ... ça ressemble beaucoup plus à un petit soft inoffensif de suivi de RPG personnel
Du genre une table, des joueurs, une carte avec des personnages, et on clique au lieu de lancer les dés... le bon vieux RPG à l'ancienne quoi

Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : sam. 19 nov. 2011 23:38
par loockys
mikell a écrit :@loockys
Si c'est pour du divertissement je suppose qu'une msgbox personnalisée peut vous intéresser...
Oui pourquoi pas "merci Nikell"
Mais pas pour le moment je me suis concentré sur les nombres aléatoires et la synchronisation de la msgbox et la progressbar.
J'aurais une dernière question à vous poser :
J'aimerais donner une limite à un nombre dans la variable $Resultat, c'est-à-dire que je ne veux pas qu'elle dépasse au-delà de 10 et en dessous de 0.
► Afficher le texte
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 555, 170, 192, 124)
GUISetFont(8, 400, 0, "Pristina")
GUISetBkColor(0xA6CAF0)
$Craft = GUICtrlCreateButton("Lancer la mise a niveau", 21, 16, 513, 49)
GUICtrlSetFont(-1, 30, 400, 0, "Pristina")
$Label1 = GUICtrlCreateLabel("L'objet est maintenant ", 64, 120, 288, 48)
GUICtrlSetFont(-1, 25, 800, 0, "Pristina")
GUICtrlSetColor(-1, 0x000080)
$Label2 = GUICtrlCreateLabel("0", 360, 112, 141, 56)
GUICtrlSetFont(-1, 30, 400, 0, "Pristina")
GUICtrlSetColor(-1, 0x000080)
$Progress1 = GUICtrlCreateProgress(21, 88, 513, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Craft
;GUICtrlSetData($Progress1,100)
_Start()
EndSwitch
WEnd
Func Progressbar()
$v1 = GUICtrlRead($Progress1)
If $v1 < 100 Then $v1 += 9
GUICtrlSetData($Progress1, $v1)
EndFunc
Func _Start()
Static Local $Resultat = 0
$ch1 = Random(0,3,1) ;=> nombre additionnelle
$ch2 = Random(0,2,1) ;=> nombre soustractionnelle
$ch3 = Random(1,2,1) ;=> reussite (1) et echec (2)
Sleep(100)
For $i = 0 To 100 step 2
GUICtrlSetData($Progress1,$i)
Sleep(70)
Next
sleep(1000)
If ($ch3 = 1) Then
MsgBox(0,"Forgeron","Félicitation + " & $ch1&@CRLF)
$Resultat += $ch1
GUICtrlSetData($Label2, $Resultat)
Else
If ($ch3 = 2) Then
MsgBox(0,"Forgeron","Perdue - " & $ch2&@CRLF)
$Resultat -= $ch2
GUICtrlSetData($Label2, $Resultat)
EndIf
EndIf
For $i = 100 To 0 step -4
GUICtrlSetData($Progress1,$i)
Sleep(1)
Next
EndFunc
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : dim. 20 nov. 2011 11:34
par mikell
C'est tout à fait faisable
Il suffit de faire en sorte que la variable ne puisse pas être négative ou supérieure à 10
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : dim. 20 nov. 2011 12:24
par zeshrek
loockys a écrit :J'aimerais donner une limite à un nombre dans la variable $Resultat, c'est-à-dire que je ne veux pas qu'elle dépasse au-delà de 10 et en dessous de 0.
Tu sais pas utiliser la commande if... then... else... endif ?
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : lun. 21 nov. 2011 18:01
par loockys
Je ne crois pas au compte de fée.
mikell a écrit :C'est tout à fait faisable
Il suffit de faire en sorte que la variable ne puisse pas être négative ou supérieure à 10
Ok
zeshrek a écrit :Tu sais pas utiliser la commande if... then... else... endif ?
Sur mon programme j'en utilise et je suis allé voir sur le forum sur ses fonctions que vous citez
ici
Je ne dois pas tout connaitre sur ses conditions, avez-vous une autre suggestion qui pourrait m'aider davantage.
d'avance merci
Je vais re formuler ma question car, j' impression d'être encore mal compris.
Imaginons que le résultat soit 9 et qu'il me donne une réussite de +3 qui fait ( 9+3 =12) au lieu de cela que le script affiche le résultat 12, je voudrais qu'il affiche le résultat 10 car, le résultat du script a été limité au delà de 10.
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : lun. 21 nov. 2011 18:10
par sylvanie
Là ce n'est plus une question Autoit mais d’algorithmie pure :
Version Autoit
Conseil : puisque vous allez faire ceci souvent d'après le code, pensez à concentrer cette routine dans une fonction
2eme conseil : vous puvez synthétiser encore plus grâce à la fonction Mod :
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : lun. 21 nov. 2011 18:41
par jchd
sylvanie a écrit :
2eme conseil : vous puvez synthétiser encore plus grâce à la fonction Mod :
Nada, tu confonds Mod(x, y) et Min(x, y)
Mod(13, 10) = 3
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : lun. 21 nov. 2011 19:39
par mikell
@sylvanie
s'il fait ça, au vu de son script il aura des misères avec sa msgbox, donc vaudrait mieux agir directement sur la variable qui incrémente
Code : Tout sélectionner
If ($ch3 = 1) Then
If $Resultat +$ch1>10 Then $ch1=10 - $Resultat
$Resultat += $ch1
If $Resultat>=10 Then
MsgBox(0,"Forgeron","Maximum atteint"&@CRLF)
Else
MsgBox(0,"Forgeron","Félicitation + " & $ch1&@CRLF)
EndIf
GUICtrlSetData($Label2, $Resultat)
Le lien donné par jchd sur "comment poser une question" est excellent et mériterait de figurer dans les règlements du forum
Il faut vraiment avoir un gros balai là où je pense pour le dénigrer sans même prendre le temps d'aller y voir
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : lun. 21 nov. 2011 20:27
par sylvanie
jchd a écrit :sylvanie a écrit :
2eme conseil : vous puvez synthétiser encore plus grâce à la fonction Mod :
Nada, tu confonds Mod(x, y) et Min(x, y)
Mod(13, 10) = 3
yep, je n'ai pas tapé ceux à quoi je pensais ...
Re: [..] Mise a niveau des nombres aléatoire en temps réel
Posté : lun. 21 nov. 2011 21:43
par jchd
S'il fallait taper tous ceux qui ...
Re: [R] Mise a niveau des nombres aléatoire en temps réel
Posté : mar. 22 nov. 2011 22:45
par loockys
Merci Sylvanie, mikell, Zeshrek, Jchd, Iste, Legend, d'avoir fait avancer mon poste et aussi évoluer mon apprentissage.
Je vais en arrêter là au sujet du Script et mettre résolu.
Encore un grand merci à vous.
► Afficher le texte
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$Form1 = GUICreate("Form1", 555, 170, 192, 124)
GUISetFont(8, 400, 0, "Pristina")
GUISetBkColor(0xA6CAF0)
$Craft = GUICtrlCreateButton("Lancer la mise a niveau", 21, 16, 513, 49)
GUICtrlSetFont(-1, 30, 400, 0, "Pristina")
$Label1 = GUICtrlCreateLabel("Votre objet est maintenant +", 34, 120, 370, 48)
GUICtrlSetFont(-1, 25, 800, 0, "Pristina")
GUICtrlSetColor(-1, 0x000080)
$Label2 = GUICtrlCreateLabel("0", 360, 112, 141, 56)
GUICtrlSetFont(-1, 30, 400, 0, "Pristina")
GUICtrlSetColor(-1, 0x000080)
$Progress1 = GUICtrlCreateProgress(21, 88, 513, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Craft
;GUICtrlSetData($Progress1,100)
_Start()
EndSwitch
WEnd
Func Progressbar()
$v1 = GUICtrlRead($Progress1)
If $v1 < 100 Then $v1 += 9
GUICtrlSetData($Progress1, $v1)
EndFunc
Func _Start()
Static Local $Resultat = 0
$ch1 = Random(0,3,1) ;=> nombre additionnelle
$ch2 = Random(0,2,1) ;=> nombre soustractionnelle
$ch3 = Random(1,2,1) ;=> reussite (1) et echec (2)
Sleep(100)
For $i = 0 To 100 step 2
GUICtrlSetData($Progress1,$i)
Sleep(70)
Next
sleep(1000)
If ($ch3 = 1) Then
MsgBox(0,"Forgeron","Félicitation + " & $ch1&@CRLF)
$Resultat += $ch1
if ($Resultat > 10) Then $Resultat=10
GUICtrlSetData($Label2, $Resultat)
Else
If ($ch3 = 2) Then
MsgBox(0,"Forgeron","Perdue - " & $ch2&@CRLF)
$Resultat -= $ch2
if ($Resultat < 0) Then $Resultat=0
GUICtrlSetData($Label2, $Resultat)
EndIf
EndIf
For $i = 100 To 0 step -4
GUICtrlSetData($Progress1,$i)
Sleep(1)
Next
EndFunc
Re: [R] Mise a niveau des nombres aléatoire en temps réel
Posté : mar. 22 nov. 2011 23:00
par Tlem
Bonsoir,
V'Z'avez oublié la balise de code dans le spoiler.
Merci
Re: [R] Mise a niveau des nombres aléatoire en temps réel
Posté : mer. 23 nov. 2011 11:37
par zeshrek
Si je puis me permettre qq commentaires
- Les vriables $ch1/2/3 ne sont pas parlante du tout. là sur un truc de moins de 100 lignes, ca peut passer, mais il vaut mieux prendrel'habitude de mettre des noms parlants. Un petit script tout bete de 2-300 lignes a vite fait de montr à 1000, 2000... 10000 lignes.
- Les lignes 49 et 54 sont inutiles
- La ligne 64 aussi (et du coup là 70) car $ch3 ne peut avoir comme vleur que 1 ou 2 or en 56 tu teste déjà si elle vaut 1 donc le else ne peut etre que 2
- La fonction Progressbar aussi, vu qu'elle n'est pas appelée
- Le 'score' ne change pas a chaque lancé ($label2)
- Si jamais il changeait, on aurait un pb de signe (+/-) sachant que le "+" est dans $label1
- Si jamais il devait y avoir d'autres batiments que la forge, tel que c'est fichu, on ne peut en metre a jour qu'un seul a la fois
... etc