jhylands

ogame.com automation

Feb 23rd, 2014
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.93 KB | None | 0 0
  1. #import the module to deal with the requests
  2. import requests
  3. #import regular expression module
  4. import re
  5. #import time module
  6. import time
  7. #import mathermatics module
  8. import math
  9. #import random libary
  10. from random import randint
  11. #import the current time
  12. from datetime import datetime
  13. #declear important pages
  14. global resource
  15. resource = "http://s123-en.ogame.gameforge.com/game/index.php?page=resources"
  16. station = "http://s123-en.ogame.gameforge.com/game/index.php?page=station"
  17. global index
  18. index = "http://s123-en.ogame.gameforge.com/game/index.php"
  19. def login(s):
  20.     #create a payload to login with
  21.     payload = {'kid':'','uni':'s123-en.ogame.gameforge.com','login':'jhylands','pass':'*****'}
  22.     #send that payload to the login server
  23.     r = s.post("http://en.ogame.gameforge.com/main/login", data=payload)
  24.     #display cookies
  25.     for cookie in s.cookies:
  26.         print (cookie.name,cookie.value)
  27.     r = s.post(index)
  28.     return s
  29. def getEnergy(s):
  30.     r = s.post(index)
  31.     trim = r.text
  32.     start = trim.find('id="resources_energy"')
  33.     trim = trim[start:]
  34.     start = trim.find(">")+1
  35.     trim = trim[start:]
  36.     end = trim.find("<")
  37.     return trim[:end].strip()
  38. #gets the current amount of a resource
  39. def getResourceLevel(s,type):
  40.     r = s.post(index)
  41.     trim = r.text
  42.     start = trim.find('id="resources_' + type + '"')
  43.     trim = trim[start:]
  44.     start = trim.find(">")+1
  45.     trim = trim[start:]
  46.     end = trim.find("<")
  47.     trim = trim[:end]
  48.     return trim
  49. def upgrade(s,item):
  50.     #upgrade = True
  51.     #while upgrade:
  52.     trim = cutToSupply(s,item)
  53.     #trim is now limited to supply 4 or solar power
  54.     if(trim.find("sendBuildRequest")!=-1):
  55.         #it can be upgraded
  56.         start = trim.find("sendBuildRequest") + 18
  57.         trim=trim[start:]
  58.         finish = trim.find("'")
  59.         r = s.post(trim[:finish])
  60.         return 0
  61.     else:
  62.         trim = cutToLevel(trim)
  63.         print item + " level " + str(trim)
  64.         return trim
  65. #requires cutToSupply first for mines only
  66. def cutToLevel(r):
  67.     trim = r
  68.     start = trim.find('</span')+8
  69.     trim = trim[start:]
  70.     finish = trim.find("</span")
  71.     trim = trim[:finish].strip()
  72.     try:
  73.         trim = int(trim)
  74.     except:
  75.         #try something else
  76.         trim = r
  77.         start = trim.find('class="level"')
  78.         trim = trim[start:]
  79.         start = trim.find(">") +1
  80.         trim = trim [start:]
  81.         finish = trim.find("<")
  82.         trim = trim[:finish].strip()
  83.     return trim    
  84. def cutToSupply(s,item):
  85.     r = s.post(resource)
  86.     trim = r.text
  87.     start = trim.find("supply" + item) + 8
  88.     trim = trim[start:]
  89.     end = trim.find("</li>")
  90.     trim = trim[:end]
  91.     return trim
  92. def storageCap(level):
  93. #   print "Level" + str(float(level))
  94.     a = (20 * float(level)) / 33
  95. #   print "A<1>" + str(a)
  96.     a = 2.5 * math.exp(a)
  97. #   print "A<2>" + str(a)
  98. #   time.sleep(10)
  99.     return 5000 * int(a)
  100. def mineCost(level,mult,B):
  101.     return B * mult ** (int(level)-1)
  102. def build(s,page,type):
  103.     #!!use class="disabled" to tell if an item will not upgrade
  104.     r = s.post(index + "?page=" + page)
  105.     trim = r.text
  106.     start = trim.find("name='token'")+13
  107.     trim = trim[start:]
  108.     start = trim.find("'")+1
  109.     trim = trim[start:]
  110.     print trim[:32]
  111.     trim = trim[:32]
  112.     print "Token: " + trim
  113.     token = trim
  114.     trim = r.text
  115.     start = trim.find(page + str(int(type) % 100))
  116.     trim = trim[start:]
  117.     end = trim.find(">")
  118.     trim = trim[:end]
  119.     if trim.find("on"):
  120.         #create a payload to login with
  121.         payload = {'token':token,'modus':'1','type':type,'menge':'1'}
  122.         #send that payload to the login server
  123.         r = s.post(index + "?page=" + page + "&depreciated=1", data=payload).text
  124.         return True
  125.     else:
  126.         return False
  127. def checkForMessage(s):
  128.     r = s.post(index)
  129.     trim = r.text
  130.     if trim.find("empty"):
  131.         return False
  132.     else:
  133.         return True
  134. def printInboxStatus(s):
  135.     if checkForMessage(s):
  136.         print "You have unread message(s)"
  137.     else:
  138.         print "inbox empty"
  139. #create a session to hold the cookie data
  140. s = requests.Session()
  141. s = login(s)
  142. pausetime = 600
  143. thisUp="Metal"
  144. loopno = 0
  145. while True:
  146.     #build solar sat
  147. #   build(s,"shipyard","212")
  148.     loopno +=1
  149.     #get met level
  150.     metalAmount = getResourceLevel(s,"metal")
  151.     crystalAmount = getResourceLevel(s,"crystal")
  152.     deuteriumAmount = getResourceLevel(s,"deuterium")
  153.     print "This up:" + thisUp
  154.     print "Loop no. :" + str(loopno)
  155.     print datetime.now()
  156.     print "Metal: " + metalAmount
  157.     print "Crystal: " + crystalAmount
  158.     print "Det : " + deuteriumAmount
  159. #   f = open("log.txt",'a')
  160. #   f.write("<log><time>")
  161. #   f.write(datetime.now())
  162. #   f.write("</time><this>")
  163. #   f.write(thisUp)
  164. #   f.write("</this>")
  165. #   f.write("</log>")
  166. #   f.close()
  167.     if(randint(1,10)==7):
  168.         s = requests.session()
  169.         s = login(s)
  170.     energy_amount = getEnergy(s)
  171.     print "Energy: " + energy_amount
  172.     if(int(energy_amount) < 50):
  173.         level = upgrade(s,"4")
  174.         while level!=0:
  175.             #cost to upgrade
  176.             trim = cutToSupply(s,"22")#23,24 resp
  177.             levelStorage = cutToLevel(trim)
  178. #           print "storageCap: " + str(storageCap(levelStorage))
  179. #           print "mine cost: " + str(mineCost(level,1.5,75))
  180.             if(storageCap(levelStorage)< (3 * mineCost(level,1.5,75)) ):
  181.                 while upgrade(s,"22")!=0:
  182.                     print "attempting to upgrade met store"
  183.                     #wait 10 mins to try again
  184.                     time.sleep(pausetime)
  185.  
  186.             trim = cutToSupply(s,"23")#p
  187.             levelStorage = cutToLevel(trim)
  188.             if(storageCap(levelStorage)< (3 * mineCost(level,1.5,35)) ):
  189.                 while upgrade(s,"23")!=0:
  190.                     #wait 10 mins to try again
  191.                     print "attempting to upgrade cry store"
  192.                     time.sleep(pausetime)
  193.             printInboxStatus(s)
  194.             print "Attempting to upgrade energy"
  195.             level = upgrade(s,"4")
  196.             time.sleep(pausetime)
  197.         print "energy Upgraded"
  198.     #because energy will get caught up if too low we continue without else
  199.     if(thisUp=="Metal"):
  200.         level = upgrade(s,"1")
  201.         while level!=0:
  202.             #cost to upgrade
  203.             trim = cutToSupply(s,"22")#23,24 resp
  204.             levelStorage = cutToLevel(trim)
  205.             if(storageCap(levelStorage)< (3 * mineCost(level,1.5,60)) ):
  206.                 while upgrade(s,"22")!=0:
  207.                     print "attempting to upgrade met store"
  208.                     #wait 10 mins to try again
  209.                     time.sleep(pausetime)
  210.  
  211.             trim = cutToSupply(s,"23")#p
  212.             levelStorage = cutToLevel(trim)
  213.             if(storageCap(levelStorage)< (3 * mineCost(level,1.5,15)) ):
  214.                 while upgrade(s,"23")!=0:
  215.                     print "attempting to upgrade cry store"
  216.                     #wait 10 mins to try again
  217.                     time.sleep(pausetime)
  218.             printInboxStatus(s)
  219.             print "Trying to upgrade metal"
  220.             level = upgrade(s,"1")
  221.             time.sleep(pausetime)
  222.         thisUp = "Crystal"
  223.         print "Upgraded Metal"
  224.     elif(thisUp=="Crystal"):
  225.         level = upgrade(s,"2")
  226.         while level!=0:
  227.             #cost to upgrade
  228.             trim = cutToSupply(s,"22")#23,24 resp
  229.             levelStorage = cutToLevel(trim)
  230.             if(storageCap(levelStorage)< (3 * mineCost(level,1.6,48)) ):
  231.                 while upgrade(s,"22")!=0:
  232.                     print "attempting to upgrade met store"
  233.                     #wait 10 mins to try again
  234.                     time.sleep(pausetime)
  235.  
  236.             trim = cutToSupply(s,"23")#p
  237.             levelStorage = cutToLevel(trim)
  238.             if(storageCap(levelStorage)< (3 * mineCost(level,1.6,24)) ):
  239.                 while upgrade(s,"23")!=0:
  240.                     print "attempting to upgrade cry store"
  241.                     #wait 10 mins to try again
  242.                     time.sleep(pausetime)
  243.             printInboxStatus(s)
  244.             print "crystal upgrade being tried"
  245.             level = upgrade(s,"2")
  246.             time.sleep(pausetime)
  247.         thisUp="Deuterium"
  248.         print "Upgraded crystal"
  249.     elif(thisUp=="Deuterium"):
  250.         level = (upgrade(s,"3"))
  251.         while level!=0:
  252.             #cost to upgrade
  253.             trim = cutToSupply(s,"22")#23,24 resp
  254.             levelStorage = cutToLevel(trim)
  255.             if(storageCap(levelStorage)< (3 * mineCost(level,1.5,225)) ):
  256.                 while upgrade(s,"22")!=0:
  257.                     print "attempting to upgrade met store"
  258.                     #wait 10 mins to try again
  259.                     time.sleep(pausetime)
  260.  
  261.             trim = cutToSupply(s,"23")#p
  262.             levelStorage = cutToLevel(trim)
  263.             if(storageCap(levelStorage)< (3 * mineCost(level,1.5,75)) ):
  264.                 while upgrade(s,"23")!=0:
  265.                     print "attempting to upgrade cry store"
  266.                     #wait 10 mins to try again
  267.                     time.sleep(pausetime)
  268.             printInboxStatus(s)
  269.             print "Det upgrade being tried"
  270.             level = upgrade(s,"3")
  271.             time.sleep(pausetime)
  272.         thisUp="Metal"
  273.         print "upgraded deu"
  274.    
  275.     #build defence
  276.     while not build(s,"defense","402"):
  277.         print "build error"
Advertisement
Add Comment
Please, Sign In to add comment