metin2 için bot kodladım fakat bir yerde takıldım. botun arayüzünde taşı kesme süresi textboxu var oraya kaç saniyede taşı kestiğimi yazıyorum o saniye boyunca hiçbir şey yapmıyo o saniye dolunca yeni taş aramaya başlıyor. fakat şimdi takıldığım bir şey yeni bir textbox açtım, bu textboxta otomatik skill bastırmak için kaç saniye gerektiği. mesela x skili 65 saniye sonra geliyo. 65 saniye sonra otomatik o tuşa bastırmak için ne yapabilirim (pydirectinput kullanacağım fakat sorduğum tam olarak bu değil) oraya yazdığımız süreye göre beklemesini nasıl sağlayabilirim. mesela 5yazdım 5 saniye bekledi. sonra başka zaman kullandım 20 yazdım 20 saniye beklicek falan. direkt arayüzden olmasını istediğim için soruyorum, yoksa kodlarsan sürekli sleep(x) değiştirirdim fakat arayüzünde bunu nasıl yapabilirim
botun arayüzünde yazdığım sayıya göre bunu algılıcak otomatik sleep atıcak lütfen yardımcı olur musunuz
Oraya yazılan saniyeyi integer olarak get
fonksiyonu ile alabilirsiniz diye düşünüyorum. Bir entry componenti oluşturun. Ardından bunu arayüzde bir yere konumlandırın. İsterseniz baştan integer değer almasını sağlayabilirsiniz. eğer bunu yapmazsanızda sonrasında oraya yazılan değeri okumak için integere çevirirsiniz. Çevirdiğiniz sayı kadar tekrar eden bir for döngüsü oluşturursunuz her adımda bir saniye bekler (sleep fonksiyonuna argüman olarak 1 değerini atayın) böylece belirlenen sayı sizin bekleme süreniz olmuş olur.
tkinter kütüphanesinde Entry sınıfının kullanımı:
bu komutu istediğim gibi nasıl kullanıcağımı tam anlamadım
Şimdi bahsettiğiniz durum yalnızca beklemekle alakalı olduğundan girilen döngü içerisinde de bir işlem yapılmayacak. Belirlenen koşul boyunca döngü de kalacağından döngü den çıktıktan sonra belirlenen işlemler yapılacak.
Örnek veriyorum
for _ in range(entry.get()):
sleep(1)
print("Entry'e girilen değer kadar döngü tekrarı oluşturuldu")
diğer işlemler.
.
.
.
entry.get()
integer olarak verdiğim bir örnek. Daha detaylı bakmak için verdiğim linklere gidin.
EDİT:
Üstteki cevabımda attığım linkteki şu kodu inceleyin
# Program to make a simple
# login screen
import tkinter as tk
root=tk.Tk()
# setting the windows size
root.geometry("600x400")
# declaring string variable
# for storing name and password
name_var=tk.StringVar() # Entry sınıfında textvariable parametresine verilecek değişken bu haliyle entry sınfından alınan her türlü girdi "string" bir girdi olacak. Bunu önlemek için IntVar() kullanılabilir bu şekilde de yalnızca sayı(tam sayı) kabul etmiş olacak.
passw_var=tk.StringVar()
# defining a function that will
# get the name and password and
# print them on the screen
def submit():
name=name_var.get() # get fonksiyonunun kullanımı
password=passw_var.get() # get fonksiyonunun kullanımı
print("The name is : " + name)
print("The password is : " + password)
name_var.set("")
passw_var.set("")
# creating a label for
# name using widget Label
name_label = tk.Label(root, text = 'Username', font=('calibre',10, 'bold'))
# creating a entry for input
# name using widget Entry
name_entry = tk.Entry(root,textvariable = name_var, font=('calibre',10,'normal'))
# creating a label for password
passw_label = tk.Label(root, text = 'Password', font = ('calibre',10,'bold'))
# creating a entry for password
passw_entry=tk.Entry(root, textvariable = passw_var, font = ('calibre',10,'normal'), show = '*')
# creating a button using the widget
# Button that will call the submit function
sub_btn=tk.Button(root,text = 'Submit', command = submit)
# placing the label and entry in
# the required position using grid
# method
name_label.grid(row=0,column=0)
name_entry.grid(row=0,column=1)
passw_label.grid(row=1,column=0)
passw_entry.grid(row=1,column=1)
sub_btn.grid(row=2,column=1)
# performing an infinite loop
# for the window to display
root.mainloop()
her şeyi denedim fakat yapamadım. yeni def açtım entryi tanımladım falan yine de çalışmıyor allah allah
def havayak(havasuresi):
for _ in range(havasuresi.get):
pydirectinput.keyDown("ctrl")
pydirectinput.keyDown("g")
pydirectinput.keyUp("ctrl")
pydirectinput.keyUp("g")
pydirectinput.keyDown("3")
pydirectinput.keyUp("3")
pydirectinput.keyDown("ctrl")
pydirectinput.keyDown("g")
pydirectinput.keyUp("ctrl")
pydirectinput.keyUp("g")
sleep(1)
yapmak istediğim şey şöyle bir şey. arayüzde yazdığım süre geldiğinde bu kodları yapsın ama beceremedim
entry içine yazdığını get komutu ile bekle değişkenine atadım onu da sleep(bekle) komutu içine yazdım
import pydirectinput
import tkinter as tk
import threading
from time import sleep
root = tk.Tk()
root.geometry("300x200")
def havayak():
bekle = int(ent1.get())
for i in range(10):
pydirectinput.keyDown("g")
pydirectinput.keyUp("g")
pydirectinput.keyDown("3")
pydirectinput.keyUp("3")
pydirectinput.keyDown("g")
pydirectinput.keyUp("g")
sleep(bekle)
def thehava():
t2 = threading.Thread(target=havayak)
t2.start()
ent1 = tk.Entry(width=5)
ent1.place(x=150, y=10)
btn1 = tk.Button(text='hava', width=8, height=1,
command=thehava)
btn1.place(x=5, y=5)
root.mainloop()
boş bir py üzerine yazdığımda çalıştırdım. fakat kendi hazırladığım arayüz üzerinde çalıştıramadım çalışmıyor. varmı bir bilginiz
pek anlamam ama yazdıklarını , hatayı vs görmem lazım
hata vermiyor. yeni bir proje oluşturup sizin attığınız kodu oraya yazınca benim program ve sizin attığınız program olarak 2 sekme geliyor, sizin sekmede çalışıyor. yeni proje açmak yerine kendi projem üstüne yazdığım zaman algılamıyor hata vermiyor ama çalışmıyor basmıyor tuşlara
yaptım hocam hallettim, ben threadı farklı şekilde tanımlamıştım oyüzden çalışmıyordu ama artık çalışıyor. elinize kolunuza sağlık çok teşekkür ederim