Gå til innhold

Noen som kan LAGE auto bot for text spill , eks: mafia spillet.


Anbefalte innlegg

Videoannonse
Annonse
  • 1 måned senere...
  • 4 uker senere...

Hvorfor spille et tekstspill om du ikke gidder å spille det?

 

Finn noe bedre å bruke tiden på.

Selv om jeg ikke har noen interesse av å gjøre noe slikt selv... så føler jeg at jeg må påpeke at personen prøver å finne en måte å IKKE bruke tid på det -_-

Lenke til kommentar

Hvorfor spille et tekstspill om du ikke gidder å spille det?

 

Finn noe bedre å bruke tiden på.

Selv om jeg ikke har noen interesse av å gjøre noe slikt selv... så føler jeg at jeg må påpeke at personen prøver å finne en måte å IKKE bruke tid på det -_-

Noe som er hele poenget mitt, hvis du ikke vil bruke tid på det, så ikke spill det i første omgang.

Med en bot så blir du sittende og se på noen tall som oppdaterer seg uten noen som helst substanse.

Lenke til kommentar
  • 1 måned senere...

Det som gjør det "vanskelig" å lage en bot til slike spill er at de oftest har captchas. Mange har et enkelt captcha-system. Simpel Captcha kan løses med tesseract (/ PyTesser). Selve boten på slike spill leser bare kildekoden, og bladrer seg gjennom, trykker på knappene etc. Dette er gjort ved rundt 100 linjer i Python.

 

En enkel bot til MafiansHevn (ikke mafiaspillet) laget på noen minutter i Python. Denne boten er bare et eksempel på hvor enkelt det er (uansett språk). Denne er ikke koblet opp til PyTesser (OCR), men kan implementeres på få linjer kode. PyTesser burde enkelt løse captchas som du finner på f.eks MafiansHevn.

 

Eksempel i Python:

 

# -*- coding: utf-8 -*-
import mechanize
import time
import string
from random import choice
import re

br = mechanize.Browser()

class mafiaBot:
   def __init__(self, username, password, siteUrl):
       br.open(siteUrl)
       br.select_form(nr=0)

       br["username"] = username
       br["password"] = password

       br.submit()

       #html = response.read()
       print ">>> Logged on!"

       #run script
       self._run()

   def inText(self, haystack, needle, n):
       parts= haystack.split(needle, n+1)
       if len(parts)<=n+1:
           return -1
       return len(haystack)-len(parts[-1])-len(needle)


   def _run(self):
       while 1:
           try:
               openTheft = br.open("http://www.mafiaenshevn.com/?side=bil")
               htmlT = openTheft.read()
               noAntibot = self.inText(htmlT, 'name="abkode"', 0)
               notInJail = self.inText(htmlT, "src='grafikk/bilder/funksjoner/fengsel.png'", 0)
               theftWait = self.inText(htmlT, "tellned", 1)    


               if notInJail == -1 and noAntibot == -1:
                   if theftWait == -1: #Theft
                       try:
                           openTheft
                           br.select_form(nr=0)
                           br.form['car'] = ['2']
                           br.submit()
                           print "Status: Stealing a car!"
                           time.sleep(4)
                       except Exception:
                           time.sleep(4)



               try:            
                   matches = re.compile('Penger<\/div><\/td>\n\s+<td>(.*?)</td>\n\s+(.*?)<td align=\"left\">(.*) kr').findall(htmlT)
                   money = re.sub(r'[^\w]', '', matches[0][2])
               except Exception:
                   pass

               if notInJail == -1 and money != "0":
                   openBank = br.open("http://www.mafiaenshevn.com/?side=bank")
                   try:
                       openBank
                       br.select_form(nr=0)
                       br["ovalue"] = money
                       br.submit(name='insett')
                       print "Status: Banking"
                       time.sleep(4)
                   except Exception:
                       time.sleep(4)                            



               if notInJail == -1 and noAntibot == -1:    
                   openCrime = br.open("http://www.mafiaenshevn.com/?side=krim")
                   htmlC = openCrime.read()
                   crimeWait = self.inText(htmlC, "tellned", 1)

                   if crimeWait == -1: #Crime
                       try:
                           openCrime
                           br.select_form(nr=0)
                           br['boten'] = ['6']
                           br.submit()
                           print "Status: Doing a crime!"
                           time.sleep(4)    
                       except Exception:
                           time.sleep(4)

               if notInJail == -1 and noAntibot == -1:    
                   openRobbery = br.open("http://www.mafiaenshevn.com/?side=ranhus")
                   htmlR = openRobbery.read()
                   robberyWait = self.inText(htmlR, "tellned", 1)

                   if robberyWait == -1: #Robbery
                       try:
                           openRobbery
                           br.select_form(nr=0)
                           br['bots'] = ['3']
                           br.submit()
                           print "Status: Robbing house!"
                           time.sleep(4)
                       except Exception:
                           time.sleep(4)

               if notInJail != -1:
                   print "Status: Wating (Jale)"
                   time.sleep(10)

               if noAntibot != -1:
                   print "Status: Sleeping (Antibot!)"
                   time.sleep(10)
                   '''~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   ||-> Her må vi til med noe enkel OCR, og bilde manipulering (PIL)..
                   ||-> Tesserect-OCR fikser dette.
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'''
           except Exception:
               time.sleep(5)


if __name__ == '__main__':
   mafiaBot("UserName","SomePassword", "http://www.mafiaenshevn.com/logginn.php")

 

 

Jeg kommer ikke til å hjelpe deg med å bruke, eller konvertere eller noe. Boten er et eksempel.

Endret av warpie
Lenke til kommentar

Kjørte noen tester mot MafiaensHevn sin Captcha, med PIL.

 

Ikke all kode er tatt med for å kutte ned på langden.. Men det som gjør noe er med.

import subprocess
import Image,ImageEnhance

def filter(img):
   img = img.convert("L")
   img = ImageEnhance.Color(img).enhance(0.1) #Color
   img = ImageEnhance.Brightness(img).enhance(0.5) #Brightness
   img = ImageEnhance.Contrast(img).enhance(2.5) #Contrast
   EnhanceText(img)

def EnhanceText(img):
   img = img.convert("RGB")
   pix = img.load()
   for x in xrange(img.size[0]):
       for y in xrange(img.size[1]):
           px = pix[x, y]
           if pix[x, y] <= (115, 115, 115):
               pix[x, y] = (255,255,255)
           if pix[x, y] <= (254, 254, 254):
               pix[x, y] = (0,0,0)
   img.save('temp.bmp', 'bmp')

def tesseract(image):
   filter(image)
   data = subprocess.Popen("tesseract temp.bmp temp", stdout=subprocess.PIPE).communicate()[0]
   if data:
       file = open("temp.txt").readline()
       return file
   return False

print(tesseract("captcha.gif"))
>>> iHle 

Nå er captchaen klar for OCR (med, f.eks Google Tesseract-ocr).. Ser kansje "unødvendig" ut.. Men, jeg liker å altid være på den sikre siden, så har det seg også slik at teksten i flere tilfeller kommer rimelig tett opp til bakgrunsfargen, da er det greit å filtere litt før man fjerner farger :)

 

 

Fra.. a0gar5.jpg

Til..: rmmu8j.jpg

 

Dette bildet er veldig lett å lese med OCR.

Endret av warpie
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...