Results 1 to 2 of 2
  1. #1
    Lirim is offline Member
    Join Date
    Mar 2013
    Posts
    1
    Rep Power
    0

    Default Cachedownloader for a Game

    So im using an auto cache downloader for a game.
    Right when you open the Client by using the .Jar or the Run.bat, the client opens.
    Instead of downloading the cache, it just gets stuck at "Loading".
    I checked the folder in C:\ Where the cache has to get saved, nothing happens. Any Help ?

    My Cachedownloader that downloads the cache

    Java Code:
    package epicurus;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    
    
    public class CacheDownloader
    {
    
    	public Client client;
    	public final int BUFFER = 1024;
    	public static final int VERSION = 26;
    	public String cacheLink = "http://penthium.org/cache.zip";
    	public String fileToExtract = getCacheDir() + getArchivedName();
    
    	public CacheDownloader(Client client) {
    		this.client = client;
    	}
    
    	public void drawLoadingText(String text) {
    		client.drawLoadingText(35, text);
    	}
    
    	public void drawLoadingText(int amount, String text) {
    		client.drawLoadingText(amount, text);
    	}
    
    	public String getCacheDir() {
    		return SignLink.findcachedir();
    	}
    
    	public String getCacheLink() {
    		return cacheLink;
    	}
    
    	public int getCacheVersion() {
    		return VERSION;
    	}
    	
    	public CacheDownloader downloadCache() {
    		try {
    		File location = new File(getCacheDir());
    		File version = new File(getCacheDir() + "/cacheUpdate" + getCacheVersion() + ".dat");
    		if(!location.exists()) {
    			//delete(getCacheDir());
    			downloadFile(getCacheLink(), getArchivedName());
    			unZip();
    			BufferedWriter versionFile = new BufferedWriter(new FileWriter(getCacheDir() + "/cacheUpdate" + getCacheVersion() + ".dat"));
    			versionFile.close();
    			deleteDownloadedZipFile(getArchivedName());
    		} else {
    			if(!version.exists()) {
    				//delete(getCacheDir());
    				downloadFile(getCacheLink(), getArchivedName());
    				unZip();
    				BufferedWriter versionFile = new BufferedWriter(new FileWriter(getCacheDir() + "/cacheUpdate" + getCacheVersion() + ".dat"));
    				versionFile.close();
    				deleteDownloadedZipFile(getArchivedName());
    			} else {
    				return null;
    			}
    		}
    		} catch(Exception e) {
    		}
    		return null;
    	}
    	
    	public void downloadFile(String adress, String localFileName) {
    		OutputStream out = null;
    		URLConnection conn;
    		InputStream in = null;
    		try {
    			URL url = new URL(adress);
    			out = new BufferedOutputStream(new FileOutputStream(getCacheDir() + "/" +localFileName)); 
    			conn = url.openConnection();
    			in = conn.getInputStream(); 
    			byte[] data = new byte[BUFFER]; 
    			int numRead;
    			long numWritten = 0;
    			int length = conn.getContentLength();
    			while((numRead = in.read(data)) != -1) {
    				out.write(data, 0, numRead);
    				numWritten += numRead;
                int percentage = (int)(((double)numWritten / (double)length) * 100D);
    				drawLoadingText(percentage, "Downloading Cache " + percentage + "%");
    			}
    			drawLoadingText("Finished downloading "+getArchivedName()+"!");
    		} catch (Exception exception) {
    			exception.printStackTrace();
    		} finally {
    			try {
    				if (in != null) {
    					in.close();
    				}
    				if (out != null) {
    					out.close();
    				}
    			} catch (IOException ioe) {
    			}
    		}
    	}
    
    	public String getArchivedName() {
    		int lastSlashIndex = getCacheLink().lastIndexOf('/');
    		if (lastSlashIndex >= 0 
    			&& lastSlashIndex < getCacheLink().length() -1) { 
    			return getCacheLink().substring(lastSlashIndex + 1);
    		} else {
    		}
    		return "";
    	}
    	
    	public void deleteDownloadedZipFile(String fileName) {
    		File f = new File(getCacheDir() + fileName);
    		if (!f.exists())
    			throw new IllegalArgumentException("Delete: no such file or directory: " + fileName);
    		if (!f.canWrite())
    			throw new IllegalArgumentException("Delete: write protected: " + fileName);
    		if (f.isDirectory()) {
    			String[] files = f.list();
    		if (files.length > 0)
    			throw new IllegalArgumentException("Delete: directory not empty: " + fileName);
    		}
    		boolean success = f.delete();
    		if (!success)
    			throw new IllegalArgumentException("Delete: deletion failed");
    	}
    	
    	public static boolean delete( String path ) {
    		if (path == null || path.trim().length() == 0) 
    		return false;
    		return delete(new File(path));
    	}
    
    	public static boolean delete( File fileOrDirectory ) {
    		if (fileOrDirectory == null) return false;
    		if (!fileOrDirectory.exists()) return false;
    		if (fileOrDirectory.isDirectory()) {
    			for (File childFile : fileOrDirectory.listFiles()) {
    				delete(childFile);
    			}
    		}
    		return fileOrDirectory.delete();
    	}
    
    	public void unZip() {
    		try {
        		InputStream in = new BufferedInputStream(new FileInputStream(fileToExtract));
    			ZipInputStream zin = new ZipInputStream(in);
    			ZipEntry e;
    			while((e=zin.getNextEntry()) != null) {
                   	if(e.isDirectory()) {
    					(new File(getCacheDir() + e.getName())).mkdir();
                   	} else {
    				if (e.getName().equals(fileToExtract)) {
    					unzip(zin, fileToExtract);
    					break;
    				}
    					unzip(zin, getCacheDir() + e.getName());
    				}
    			}
    			zin.close();
    		} catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void unzip(ZipInputStream zin, String s) throws IOException {
    		FileOutputStream out = new FileOutputStream(s);
    		byte [] b = new byte[BUFFER];
    		int len = 0;
    		while ((len = zin.read(b)) != -1) {
    			out.write(b,0,len);
    		}
    		out.close();
    	}
    
    	public boolean checkCache(boolean corruptCache) {
    		return false;
    	}
    
    
    }
    My Signlink, that saves the cache into a folder in C:\ Drive

    Java Code:
    package epicurus;
    
    import java.applet.Applet;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.URL;
    
    public final class SignLink
    implements Runnable
    {
    
    public static void startpriv(InetAddress inetaddress)
    {
        threadliveid = (int)(Math.random() * 99999999D);
        if(active)
        {
            try
            {
                Thread.sleep(500L);
            }
            catch(Exception _ex) { }
            active = false;
        }
        socketreq = 0;
        threadreq = null;
        dnsreq = null;
        savereq = null;
        urlreq = null;
        socketip = inetaddress;
        Thread thread = new Thread(new SignLink());
        thread.setDaemon(true);
        thread.start();
        while(!active)
            try
            {
                Thread.sleep(50L);
            }
            catch(Exception _ex) { }
    }
    
    public static void setuid() {
    uid = 26342;
    }
    public void run()
    {
        active = true;
        String s = findcachedir();
       // uid = getuid(s);
       uid = 26342;
        try {
            cache_dat = new RandomAccessFile(s + "main_file_cache.dat", "rw");
            for(int j = 0; j < 5; j++) {
                cache_idx[j] = new RandomAccessFile(s + "main_file_cache.idx" + j, "rw");
    		}
        } catch(Exception exception) {
            exception.printStackTrace();
        }
        for(int i = threadliveid; threadliveid == i;)
        {
            if(socketreq != 0)
            {
                try
                {
                    socket = new Socket(socketip, socketreq);
                }
                catch(Exception _ex)
                {
                    socket = null;
                }
                socketreq = 0;
            } else
            if(threadreq != null)
            {
                Thread thread = new Thread(threadreq);
                thread.setDaemon(true);
                thread.start();
                thread.setPriority(threadreqpri);
                threadreq = null;
            } else
            if(dnsreq != null)
            {
                try
                {
                    dns = InetAddress.getByName(dnsreq).getHostName();
                }
                catch(Exception _ex)
                {
                    dns = "unknown";
                }
                dnsreq = null;
            } else
            if(savereq != null)
            {
                if(savebuf != null)
                    try
                    {
                        FileOutputStream fileoutputstream = new FileOutputStream(s + savereq);
                        fileoutputstream.write(savebuf, 0, savelen);
                        fileoutputstream.close();
                    }
                    catch(Exception _ex) { }
                if(waveplay)
                {
                    waveplay = false;
                }
                if(midiplay)
                {
                    midi = s + savereq;
                    midiplay = false;
                }
                savereq = null;
            } else
            if(urlreq != null)
            {
                try
                {
                    System.out.println("urlstream");
                    urlstream = new DataInputStream((new URL(mainapp.getCodeBase(), urlreq)).openStream());
                }
                catch(Exception _ex)
                {
                    urlstream = null;
                }
                urlreq = null;
            }
            try
            {
                Thread.sleep(50L);
            }
            catch(Exception _ex) { }
        }
    
    }
    
    public static String findcachedir() {
        String as[] = {"C:/"};
        if(storeid < 32 || storeid > 34)
            storeid = 32;
        String s = "abc";
        for(int i = 0; i < as.length; i++)
            try {
                String s1 = as[i];
                if(s1.length() > 0) {
                    File file = new File(s1);
                    if(!file.exists())
                        continue;
                }
                File file1 = new File(s1 + s);
                if(file1.exists() || file1.mkdir())
                    return s1 + s + "/";
            }
            catch(Exception _ex) { }
        return null;
    }
    
    public static int getuid(String s) {
    return 26342;
    }
    
    /* private static int getuid(String s)
    {
        try
        {
            File file = new File(s + "uid.dat");
            if(!file.exists() || file.length() < 4L)
            {
                DataOutputStream dataoutputstream = new DataOutputStream(new FileOutputStream(s + "uid.dat"));
                dataoutputstream.writeInt((int)(Math.random() * 99999999D));
                dataoutputstream.close();
            }
        }
        catch(Exception _ex) { }
        try
        {
            DataInputStream datainputstream = new DataInputStream(new FileInputStream(s + "uid.dat"));
            int i = datainputstream.readInt();
            datainputstream.close();
            return i + 1;
        }
        catch(Exception _ex)
        {
            return 0;
        }
    }*/
    
    public static synchronized Socket opensocket(int i)
        throws IOException
    {
        for(socketreq = i; socketreq != 0;)
            try
            {
                Thread.sleep(50L);
            }
            catch(Exception _ex) { }
    
        if(socket == null)
            throw new IOException("could not open socket");
        else
            return socket;
    }
    
    public static synchronized DataInputStream openurl(String s)
        throws IOException
    {
        for(urlreq = s; urlreq != null;)
            try
            {
                Thread.sleep(50L);
            }
            catch(Exception _ex) { }
    
        if(urlstream == null)
            throw new IOException("could not open: " + s);
        else
            return urlstream;
    }
    
    public static synchronized void dnslookup(String s)
    {
        dns = s;
        dnsreq = s;
    }
    
    public static synchronized void startthread(Runnable runnable, int i)
    {
        threadreqpri = i;
        threadreq = runnable;
    }
    
    public static synchronized boolean wavesave(byte abyte0[], int i)
    {
        /*if(i > 0x1e8480)
            return false;
        if(savereq != null)
        {
            return false;
        } else
        {
            wavepos = (wavepos + 1) % 5;
            savelen = i;
            savebuf = abyte0;
            waveplay = true;
            savereq = "sound" + wavepos + ".wav";
            return true;
        }*/
    	return false;
    }
    
    public static synchronized boolean wavereplay()
    {
        if(savereq != null)
        {
            return false;
        } else
        {
            savebuf = null;
            waveplay = true;
            savereq = "sound" + wavepos + ".wav";
            return true;
        }
    }
    
    public static synchronized void midisave(byte abyte0[], int i)
    {
        /*if(i > 0x1e8480)
            return;
        if(savereq != null)
        {
        } else
        {
            midipos = (midipos + 1) % 5;
            savelen = i;
            savebuf = abyte0;
            midiplay = true;
            savereq = "jingle" + midipos + ".mid";
        }*/
    }
    
    public static void reporterror(String s)
    {
        System.out.println("Error: " + s);
    }
    
    private SignLink()
    {
    }
    
    public static final int clientversion = 317;
    public static int uid;
    public static int storeid = 32;
    public static RandomAccessFile cache_dat = null;
    public static final RandomAccessFile[] cache_idx = new RandomAccessFile[5];
    public static boolean sunjava;
    public static Applet mainapp = null;
    private static boolean active;
    private static int threadliveid;
    private static InetAddress socketip;
    private static int socketreq;
    private static Socket socket = null;
    private static int threadreqpri = 1;
    private static Runnable threadreq = null;
    private static String dnsreq = null;
    public static String dns = null;
    private static String urlreq = null;
    private static DataInputStream urlstream = null;
    private static int savelen;
    private static String savereq = null;
    private static byte[] savebuf = null;
    private static boolean midiplay;
    public static String midi = null;
    public static int midivol;
    public static int midifade;
    private static boolean waveplay;
    private static int wavepos;
    public static int wavevol;
    public static boolean reporterror = true;
    public static String errorname = "";
    
    }
    Any help ? :S

  2. #2
    Steve11235's Avatar
    Steve11235 is offline Senior Member
    Join Date
    Dec 2008
    Posts
    1,046
    Rep Power
    7

    Default Re: Cachedownloader for a Game

    Watch your code run in a debugger. See where its hanging.
    The Java Tutorial. Read it.

Similar Threads

  1. Replies: 4
    Last Post: 07-08-2012, 09:07 AM
  2. Replies: 1
    Last Post: 06-02-2011, 09:29 AM
  3. Replies: 2
    Last Post: 08-05-2010, 04:49 AM
  4. game code for any game
    By deathnote202 in forum Java Gaming
    Replies: 4
    Last Post: 06-10-2010, 08:06 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •