home *** CD-ROM | disk | FTP | other *** search
/ Enter 2004 April / enter-2004-04.iso / files / EVE_1424_100181.exe / autoexec.py < prev    next >
Encoding:
Text File  |  2004-04-20  |  5.9 KB  |  202 lines

  1.  
  2. #   *************************************************************************
  3. #
  4. #   autoexec.py
  5. #
  6. #   Author:    Matthias Gudmundsson
  7. #   Created:   Nov. 2001
  8. #   Project:   Framework
  9. #
  10. #   Description:
  11. #
  12. #       Executes startup scripts according to command line arguments. Optionally
  13. #       Executes script:/my_autoexec.py if present, see comment below
  14. #
  15. #   Dependencies:
  16. #
  17. #       Blue
  18. #
  19. #   (c) CCP 2000, 2001
  20. #
  21. #   *************************************************************************
  22.  
  23.  
  24. # --------------------------------------------------------------------
  25. # Startup
  26. # --------------------------------------------------------------------
  27. def CheckDXVersion():
  28.  
  29.     musthave = 0x00090002 # 9.0b
  30.     ver = blue.os.GetDXVersion()
  31.  
  32.     if ver < musthave:
  33.         major, minor, letter = DecodeVersion(ver)
  34.         major2, minor2, letter2 = DecodeVersion(musthave)
  35.  
  36.         msg = "DirectX %s.%s%s detected but this application needs %s.%s%s.\r\n"
  37.         msg += "Click Yes to continue, but the application may not run.\r\n"
  38.         msg += "Click No to go to support web page where you can download the "
  39.         msg += "latest DirectX runtime files."
  40.         msg = msg % (major, minor, letter, major2, minor2, letter2)
  41.  
  42.         ret = blue.os.MessageBox(msg, "Try continue with old DirectX version?", 0x1000|0x20|0x4)
  43.         if ret == 6:
  44.             return 1
  45.  
  46.         url = "http://www.eve-online.com/directx"
  47.         url += "?dxversion=%s.%s%s"%(major, minor, letter)
  48.         url += "&"+GetVersionArg()
  49.         blue.os.ShellExecute(url)
  50.         
  51.         blue.pyos.Quit("DirectX version check failed.")
  52.         return 0
  53.  
  54.     return 1
  55.     
  56.     
  57. def DecodeVersion(version):
  58.     major, minor, lettercode = version >> 16, (version & 0xff00)>>8, version & 0xff
  59.     if (lettercode):
  60.         letter = chr(ord("a") + lettercode - 1)
  61.     else:
  62.         letter = ""
  63.     return major, minor, letter
  64.  
  65.     
  66. def GetVersionArg():
  67.     try:
  68.         buildno = "%s.%s" % (boot.keyval["version"].split("=", 1)[1], boot.build)
  69.     except:
  70.         try:
  71.             buildno = str(boot.build)
  72.         except:
  73.             buildno = "501" # internal error  
  74.  
  75.     return "buildno=" + buildno
  76.  
  77.  
  78.  
  79. if CheckDXVersion():
  80.  
  81.  
  82.     import blue
  83.     blue.pyos.ExecFile("script:/sys/nasty.py")
  84.  
  85.     ## here we list out all the paths under the cache directory that have to exist
  86.     ## because they are created every time EVE starts up, users can delete the cache folder
  87.     ## with out suffering any consiquences (apart from having to get everything again)
  88.     paths = [
  89.         blue.os.cachepath,
  90.         blue.os.cachepath + "Browser",
  91.         blue.os.cachepath + "Browser/Img",
  92.         blue.os.cachepath + "Map",
  93.         blue.os.cachepath + "Pictures",
  94.         blue.os.cachepath + "Pictures/Gids",
  95.         blue.os.cachepath + "Pictures/Planets",
  96.         blue.os.cachepath + "Pictures/Portraits",
  97.         blue.os.cachepath + "Pictures/Types",
  98.         blue.os.cachepath + "Temp",
  99.         blue.os.cachepath + "Temp/Mapbrowser",
  100.         blue.os.cachepath + "Texture",
  101.         blue.os.cachepath + "Texture/Planets",
  102.         blue.os.cachepath + "Texture/Planets/Visited",
  103.         blue.os.cachepath + "Shader",
  104.         blue.os.cachepath + "Settings",
  105.  
  106.         blue.os.rootpath + "capture",
  107.         blue.os.rootpath + "capture/Screenshots",
  108.         blue.os.rootpath + "capture/Chatlogs",
  109.         blue.os.rootpath + "capture/Gamelogs",
  110.         blue.os.rootpath + "capture/Portraits",
  111.  
  112.     ]
  113.  
  114.     import os
  115.     for path in paths:
  116.         try:
  117.             os.listdir(path)
  118.         except OSError:
  119.             os.mkdir(path)
  120.  
  121.  
  122.     import eve
  123.     evetmp = eve.eve
  124.     import __builtin__
  125.     del eve
  126.     __builtin__.eve = evetmp
  127.  
  128.  
  129.     def Startup():
  130.  
  131.         import log
  132.         startedat = "EVE Client version %s build %s started %s %s"%( boot.version, boot.build, blue.os.FormatUTC()[0], blue.os.FormatUTC()[2] )
  133.         print startedat
  134.         log.general.Log(startedat, 1)
  135.         log.general.Log(startedat, 2)
  136.         log.general.Log(startedat, 4)
  137.         log.general.Log(startedat, 8)
  138.         log.general.Log(startedat, 32)
  139.         log.general.Log(startedat, 64)
  140.         log.general.Log(startedat, 128)
  141.  
  142.  
  143.  
  144.         # this is a placeholder for whatever local crap you want to do on
  145.         # startup. I haven't checked in a blank script:/my_autoexec.py to
  146.         # avoid annoying ss messages, so it just ignores it if the file is
  147.         # not found.
  148.         import service
  149.  
  150.         srvMng = service.ServiceManager()
  151.         # Can┤t hurt to load some things early.
  152.         run = [
  153.             "dataconfig",
  154.             "textmetr",
  155.             "godma",
  156.             "caption",
  157.             "photo",
  158.             "TransitionMgr",
  159.             "machoNet",
  160.             "objectCaching",
  161.             "ComTool",
  162.             "patch",
  163.             "inv",
  164.             "selection",
  165.             "billboard",
  166.             "xitems"
  167.             ]
  168.         if hasattr(prefs,"http") and prefs.http:
  169.             print "http"
  170.             run.append("http")
  171.         if hasattr(prefs,"telnet") and prefs.telnet:
  172.             print "telnet"
  173.             run.append("telnet")
  174.         srvMng.Run(run)
  175.  
  176.  
  177.         # Execute all files referred on the command line
  178.         for i in blue.pyos.GetArg()[1:]:
  179.             if i[0] != '-' and i[0] != '/':
  180.                 print "Executing", i
  181.                 scriptfile = blue.os.scriptpath + i[8:]
  182.                 blue.pyos.ExecFile(i)
  183.  
  184.  
  185.         # Try run private script
  186.         file = blue.os.CreateInstance("blue.ResFile")
  187.  
  188.         if file.Open("script:/my_autoexec.py",1):
  189.             file.Close()
  190.             blue.pyos.ExecFile("script:/my_autoexec.py")
  191.  
  192.  
  193.         # Try run deployment script
  194.         if "/skiprun" not in blue.pyos.GetArg()[1:] and file.Open("script:/run.py",1):
  195.             file.Close()
  196.             blue.pyos.ExecFile("script:/run.py")
  197.  
  198.  
  199. import uthread
  200. uthread.new(Startup)
  201.  
  202.