Thread: Auto Cache Downloader Ruse

Results 1 to 9 of 9
  1. #1 Auto Cache Downloader Ruse 
    Registered Member
    Join Date
    Nov 2014
    Posts
    22
    Thanks given
    0
    Thanks received
    0
    Rep Power
    11
    Hi, I'm new to coding in general and trying to learn... I've followed a couple of guides for the RusePS, and I'm now trying to make the cache automatically download. I could've packed the cache incorrectly, but if anyone has any tips it would be very appreciated.


    this is the error message I'm getting.
    Code:
    Ruse-PS.Com replied HTTP code: 404
    Ruse-PS.Com replied HTTP code: 404
    Ruse-PS.Com replied HTTP code: 404
    java.io.FileNotFoundException: C:\Users\austi\RSCache\AABnKcoSIM0ehgzNa1mZgDoZa?dl=1sprites.idx (The filename, directory name, or volume label syntax is incorrect)
            at java.io.FileOutputStream.open0(Native Method)
            at java.io.FileOutputStream.open(Unknown Source)
            at java.io.FileOutputStream.<init>(Unknown Source)
            at java.io.FileOutputStream.<init>(Unknown Source)
            at CacheDownloader.downloadFile(CacheDownloader.java:75)
            at CacheDownloader.init(CacheDownloader.java:30)
            at Client.startUp(Client.java:11755)
            at RSApplet.run(RSApplet.java:155)
            at Client.run(Client.java:8662)
            at java.lang.Thread.run(Unknown Source)
    my CacheDownloader code is


    Code:
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    
    
    /**
     * Enchanced cache downloader
     * Handles cache downloading & unzipping
     * @author Gabriel Hannason
     */
    public class CacheDownloader {
    
    	public static void init() {
    		try {
    			for(CACHE_DOWNLOAD_FILES cacheFile : CACHE_DOWNLOAD_FILES.values()) {
    				boolean exists = new File(signlink.findcachedir() + cacheFile.identifier).exists();
    				if(!exists) {
    					int total = cacheFile.file.length;
    					int current = 1;
    					for(String file : cacheFile.file) {
    						downloadFile(cacheFile, file, current, total);
    						if(file.endsWith(".zip")) {
    							unzip(new File(signlink.findcachedir() + file));
    						}
    						current ++;
    					}
    					new File(signlink.findcachedir() + cacheFile.identifier).createNewFile();
    				}
    			}
    		} catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static void downloadFile(CACHE_DOWNLOAD_FILES cacheFile, String file, int current, int total) throws IOException {
    		String fileURL = "https://www.dropbox.com/sh/kn68gwxktxf05mz/AABnKcoSIM0ehgzNa1mZgDoZa?dl=1" + file;
    		String downloadingText = Client.optimizeText(cacheFile.toString().toLowerCase());
    		URL url = new URL(fileURL);
    		HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
    		httpConn.addRequestProperty("User-Agent", "Mozilla/4.76");
    		int responseCode = httpConn.getResponseCode();
    
    		// always check HTTP response code first
    		if (responseCode == HttpURLConnection.HTTP_OK) {
    			String fileName = "";
    			String disposition = httpConn.getHeaderField("Content-Disposition");
    
    			if (disposition != null) {
    				// extracts file name from header field
    				int index = disposition.indexOf("filename=");
    				if (index > 0) {
    					fileName = disposition.substring(index + 10,
    							disposition.length() - 1);
    				}
    			} else {
    				// extracts file name from URL
    				fileName = fileURL.substring(fileURL.lastIndexOf("/") + 1,
    						fileURL.length());
    			}
    
    			// opens input stream from the HTTP connection
    			InputStream inputStream = httpConn.getInputStream();
    			String saveFilePath = signlink.findcachedir() + File.separator + fileName;
    
    			// opens an output stream to save into file
    			FileOutputStream outputStream = new FileOutputStream(saveFilePath);
    
    			int bytesRead = -1;
    			byte[] buffer = new byte[4096];
    			long startTime = System.currentTimeMillis();
    			int downloaded = 0;
    			long numWritten = 0;
    			int length = httpConn.getContentLength();
    			while ((bytesRead = inputStream.read(buffer)) != -1) {
    				outputStream.write(buffer, 0, bytesRead);
    				numWritten += bytesRead;
    				downloaded += bytesRead;
    				int percentage = (int)(((double)numWritten / (double)length) * 100D);
    				int downloadSpeed = (int) ((downloaded / 1024) / (1 + ((System.currentTimeMillis() - startTime) / 1000)));
    				String s = total > 1 ? "("+current+"/"+total+")" : "";
    				drawLoadingText(percentage, (new StringBuilder()).append("Downloading "+downloadingText+""+s+": "+percentage+"% ").append("@ "+downloadSpeed+"Kb/s").toString());
    			}
    
    			outputStream.close();
    			inputStream.close();
    
    		} else {
    			System.out.println("RSPS replied HTTP code: " + responseCode);
    		}
    		httpConn.disconnect();
    	}
    
    
    	private static void drawLoadingText(int amount, String text) {
    		Client.loadingPercentage = amount;
    		Client.loadingText = text;
    	}
    
    	private static void unzip(final File file) {
    		try {
    			InputStream in =  new BufferedInputStream(new FileInputStream(file));
    			ZipInputStream zin = new ZipInputStream(in);
    			ZipEntry e;
    			while((e=zin.getNextEntry()) != null) {
    				if(e.isDirectory()) {
    					(new File(signlink.findcachedir() + e.getName())).mkdir();
    				} else {
    					if (e.getName().equals(file.getName())) {
    						unzipPartlyArchive(zin, file.getName());
    						break;
    					}
    					unzipPartlyArchive(zin, signlink.findcachedir() + e.getName());
    				}
    			}
    			zin.close();
    			file.delete();
    		} catch(Exception e) {}
    	}
    
    	/**
    	 * Unzips a partly archive
    	 *  @[Only registered and activated users can see links. ] zin	The zip inputstream
    	 *  @[Only registered and activated users can see links. ] s		The location of the zip file
    	 *  @[Only registered and activated users can see links. ]s IOException	The method can throw an IOException.
    	 */
    	private static void unzipPartlyArchive(ZipInputStream zin, String s) throws Exception {
    		FileOutputStream out = new FileOutputStream(s);
    		drawLoadingText(100, "Unpacking data..");
    		byte [] b = new byte[1024];
    		int len = 0;
    
    		while ((len = zin.read(b)) != -1) {
    			out.write(b,0,len);
    		}
    		out.close();
    	}
    
    	enum CACHE_DOWNLOAD_FILES {
    
    		IMAGES(new String[]{"sprites.idx", "sprites.dat", "icon.png"}, "cache1loaded"),
    		CACHE(new String[]{"ruse.dat", "ruse.idx0", "ruse.idx1", "ruse.idx2", "ruse.idx3", "ruse.idx4", "ruse.idx5", "ruse.idx6"}, "cache2loaded"),
    		DATA(new String[]{"data.zip"}, "cache3loaded"),
    		;
    
    		CACHE_DOWNLOAD_FILES(String[] file, String identifier) {
    			this.file = file;
    			this.identifier = identifier;
    		}
    
    		private String[] file;
    		private String identifier;
    	}
    }
    I've made sure to put the dl=1 for automatic download.


    Also, I will give you the Signlink just incase

    Code:
    // Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
    // Jad home page: http://www.kpdus.com/jad.html
    // Decompiler options: packimports(3)
    // Source File Name:   signlink.java
    
    
    
    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;
    
    import javax.sound.midi.MidiChannel;
    import javax.sound.midi.MidiSystem;
    import javax.sound.midi.MidiUnavailableException;
    import javax.sound.midi.Sequence;
    import javax.sound.midi.Sequencer;
    import javax.sound.midi.ShortMessage;
    import javax.sound.midi.Synthesizer;
    import javax.sound.sampled.AudioFormat;
    import javax.sound.sampled.AudioInputStream;
    import javax.sound.sampled.AudioSystem;
    import javax.sound.sampled.DataLine;
    import javax.sound.sampled.FloatControl;
    import javax.sound.sampled.LineUnavailableException;
    import javax.sound.sampled.SourceDataLine;
    import javax.sound.sampled.UnsupportedAudioFileException;
    
    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;
    		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) {
    			}
    	}
    
    	enum Position {
    		LEFT, RIGHT, NORMAL
    	};
    
    	private final int EXTERNAL_BUFFER_SIZE = 524288; // 128Kb
    	private Position curPosition;
    
    	public void run() {
    		active = true;
    		String s = findcachedir();
    		try {
    			cache_dat = new RandomAccessFile(s + "ruse.dat", "rw");
    			for (int j = 0; j < 7; j++) {
    				cache_idx[j] = new RandomAccessFile(s + "ruse.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 (savereq != null) {
    				if (savebuf != null)
    					try {
    						FileOutputStream fileoutputstream = new FileOutputStream(s + savereq);
    						fileoutputstream.write(savebuf, 0, savelen);
    						fileoutputstream.close();
    					} catch (Exception _ex) {
    					}
    				if (waveplay) {
    					String wave = s + savereq;
    					waveplay = false;
    					AudioInputStream audioInputStream = null;
    					try {
    						audioInputStream = AudioSystem.getAudioInputStream(new File(wave));
    					} catch (UnsupportedAudioFileException e1) {
    						e1.printStackTrace();
    						return;
    					} catch (IOException e1) {
    						e1.printStackTrace();
    						return;
    					}
    					AudioFormat format = audioInputStream.getFormat();
    					SourceDataLine auline = null;
    					DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
    					try {
    						auline = (SourceDataLine) AudioSystem.getLine(info);
    						auline.open(format);
    					} catch (LineUnavailableException e) {
    						e.printStackTrace();
    						return;
    					} catch (Exception e) {
    						e.printStackTrace();
    						return;
    					}
    					if (auline.isControlSupported(FloatControl.Type.PAN)) {
    						FloatControl pan = (FloatControl) auline.getControl(FloatControl.Type.PAN);
    						if (curPosition == Position.RIGHT)
    							pan.setValue(1.0f);
    						else if (curPosition == Position.LEFT)
    							pan.setValue(-1.0f);
    					}
    					auline.start();
    					int nBytesRead = 0;
    					byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
    					try {
    						while (nBytesRead != -1) {
    							nBytesRead = audioInputStream.read(abData, 0, abData.length);
    							if (nBytesRead >= 0)
    								auline.write(abData, 0, nBytesRead);
    						}
    					} catch (IOException e) {
    						e.printStackTrace();
    						return;
    					} finally {
    						auline.drain();
    						auline.close();
    					}
    				}
    				if (midiplay) {
    					midi = s + savereq;
    					try {
    						if (music != null) {
    							music.stop();
    							music.close();
    						}
    						playMidi(midi);
    					} catch (Exception ex) {
    						ex.printStackTrace();
    					}
    					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) {
    			}
    		}
    
    	}
    
    	/**
    	 * Plays the specified midi sequence.
    	 * 
    	 *  @[Only registered and activated users can see links. ] location
    	 */
    	private void playMidi(String location) {
    		music = null;
    		synthesizer = null;
    		sequence = null;
    		File midiFile = new File(location);
    		try {
    			sequence = MidiSystem.getSequence(midiFile);
    			music = MidiSystem.getSequencer();
    			music.open();
    			music.setSequence(sequence);
    		} catch (Exception e) {
    			System.err.println("Problem loading MIDI file.");
    			e.printStackTrace();
    			return;
    		}
    		if (music instanceof Synthesizer) {
    			synthesizer = (Synthesizer) music;
    		} else {
    			try {
    				synthesizer = MidiSystem.getSynthesizer();
    				synthesizer.open();
    				if (synthesizer.getDefaultSoundbank() == null) {
    					music.getTransmitter().setReceiver(MidiSystem.getReceiver());
    				} else {
    					music.getTransmitter().setReceiver(synthesizer.getReceiver());
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    				return;
    			}
    		}
    		music.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
    		music.start();
    	}
    
    	/**
    	 * Sets the volume for the midi synthesizer.
    	 * 
    	 *  @[Only registered and activated users can see links. ] value
    	 */
    	public static void setVolume(int value) throws MidiUnavailableException {
    		int CHANGE_VOLUME = 7;
    		midiVolume = value;
    		synthesizer = MidiSystem.getSynthesizer();
    		if (synthesizer.getDefaultSoundbank() == null) {
    			try {
    				ShortMessage volumeMessage = new ShortMessage();
    				for (int i = 0; i < 16; i++) {
    					volumeMessage.setMessage(ShortMessage.CONTROL_CHANGE, i, CHANGE_VOLUME, midiVolume);
    					volumeMessage.setMessage(ShortMessage.CONTROL_CHANGE, i, 39, midiVolume);
    					MidiSystem.getReceiver().send(volumeMessage, -1);
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		} else {
    			MidiChannel[] channels = synthesizer.getChannels();
    			for (int c = 0; channels != null && c < channels.length; c++) {
    				channels[c].controlChange(CHANGE_VOLUME, midiVolume);
    				channels[c].controlChange(39, midiVolume);
    			}
    		}
    	}
    
    	public static Sequencer music = null;
    	public static Sequence sequence = null;
    	public static Synthesizer synthesizer;
    
    	public static String findcachedir() {
    		String cacheLoc = System.getProperty("user.home") + "/RSCache/"; //"./cache/";
    		File cacheDir = new File(cacheLoc);
    		if(!cacheDir.exists()) {
    			cacheDir.mkdir();
    		}
    		return cacheLoc;
    	}
    	
    	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 startthread(Runnable runnable, int i) {
    		threadreqpri = i;
    		threadreq = runnable;
    	}
    
    	public static final 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;
    		}
    	}
    
    	public static final synchronized boolean wavereplay() {
    		if (savereq != null) {
    			return false;
    		} else {
    			savebuf = null;
    			waveplay = true;
    			savereq = "sound" + wavepos + ".wav";
    			return true;
    		}
    	}
    
    	public static final synchronized void midisave(byte abyte0[], int i) {
    		if (i > 0x1e8480) {
    			return;
    		}
    		if (savereq != null) {
    			return;
    		} else {
    			midipos = (midipos + 1) % 5;
    			savelen = i;
    			savebuf = abyte0;
    			midiplay = true;
    			savereq = "jingle" + midipos + ".mid";
    			return;
    		}
    	}
    
    	private signlink() {
    	}
    
    	public static RandomAccessFile cache_dat = null;
    	public static final RandomAccessFile[] cache_idx = new RandomAccessFile[7];
    	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 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;
    	private static int midipos;
    	public static String midi = null;
    	public static int midiVolume;
    	public static int fadeMidi;
    	private static boolean waveplay;
    	private static int wavepos;
    	public static int wavevol;
    
    }
    I have actually gotten a little further, it downloads some files but not the data file or image files. By deleting the dL=1 and adding a / at the end of the url.
    Reply With Quote  
     

  2. #2  
    Registered Member
    Join Date
    Nov 2014
    Posts
    22
    Thanks given
    0
    Thanks received
    0
    Rep Power
    11
    Bump
    Reply With Quote  
     

  3. #3  
    Skotos Founder

    Mantvis's Avatar
    Join Date
    Jan 2017
    Age
    20
    Posts
    815
    Thanks given
    128
    Thanks received
    157
    Rep Power
    116
    java.io.FileNotFoundException: C:\Users\austi\RSCache\AABnKcoSIM0ehgzNa1mZgDoZa?d l=1sprites.idx (The filename, directory name, or volume label syntax is incorrect)
    Reply With Quote  
     

  4. #4  
    Registered Member
    Join Date
    Nov 2014
    Posts
    22
    Thanks given
    0
    Thanks received
    0
    Rep Power
    11
    Quote Originally Posted by Mantvis View Post
    java.io.FileNotFoundException: C:\Users\austi\RSCache\AABnKcoSIM0ehgzNa1mZgDoZa?d l=1sprites.idx (The filename, directory name, or volume label syntax is incorrect)
    Actually Iíve ran into a new problem. I fixed that error stated in your response, but Iím having unpacking issues. Specifically with the Data Folder. Every other file will unpack aside from the data folder and the load pngs.
    Reply With Quote  
     

  5. #5  
    Skotos Founder

    Mantvis's Avatar
    Join Date
    Jan 2017
    Age
    20
    Posts
    815
    Thanks given
    128
    Thanks received
    157
    Rep Power
    116
    Quote Originally Posted by IAmRiz View Post
    Actually I’ve ran into a new problem. I fixed that error stated in your response, but I’m having unpacking issues. Specifically with the Data Folder. Every other file will unpack aside from the data folder and the load pngs.
    Sorry i can't help any further
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    Nov 2014
    Posts
    22
    Thanks given
    0
    Thanks received
    0
    Rep Power
    11
    No problem. I’m going to see if it works on another host.
    Reply With Quote  
     

  7. #7  
    Im an albatraoz

    Nand0's Avatar
    Join Date
    Feb 2010
    Age
    27
    Posts
    821
    Thanks given
    197
    Thanks received
    113
    Rep Power
    116
    java.io.FileNotFoundException: C:\Users\austi\RSCache\AABnKcoSIM0ehgzNa1mZgDoZa?d l=1sprites.idx (The filename, directory name, or volume label syntax is incorrect)

    Quote Originally Posted by IAmRiz View Post
    Actually I’ve ran into a new problem. I fixed that error stated in your response, but I’m having unpacking issues. Specifically with the Data Folder. Every other file will unpack aside from the data folder and the load pngs.
    ooh bro use a diffrent program to zip your cache and zip everything inside the cache folder dont zip the folder with it to fix this
    [Only registered and activated users can see links. ]






    [
    Reply With Quote  
     

  8. #8  
    Registered Member
    Join Date
    Nov 2014
    Posts
    22
    Thanks given
    0
    Thanks received
    0
    Rep Power
    11
    Quote Originally Posted by Nand0 View Post
    java.io.FileNotFoundException: C:\Users\austi\RSCache\AABnKcoSIM0ehgzNa1mZgDoZa?d l=1sprites.idx (The filename, directory name, or volume label syntax is incorrect)



    ooh bro use a diffrent program to zip your cache and zip everything inside the cache folder dont zip the folder with it to fix this
    This actually didn't work either.
    Reply With Quote  
     

  9. #9  
    Registered Member
    Join Date
    Nov 2014
    Posts
    22
    Thanks given
    0
    Thanks received
    0
    Rep Power
    11
    If anyone sees this having the same issue. I figured out you can't actually use dropbox for hosting with Ruse Cache. [Only registered and activated users can see links. ]
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. "ruse" auto cache download with dropbox
    By FezoR2 in forum Help
    Replies: 7
    Last Post: 04-29-2020, 07:39 PM
  2. Ruse Auto Cache Downloader not working
    By Jayson in forum Help
    Replies: 3
    Last Post: 12-04-2017, 06:44 PM
  3. Auto Cache Downloader (Ruse V2)
    By Goody in forum Buying
    Replies: 2
    Last Post: 06-19-2017, 03:09 AM
  4. ruse auto cache download
    By chivalryps in forum Help
    Replies: 0
    Last Post: 10-10-2015, 09:00 PM
  5. Auto Cache Downloading (Here's how!)
    By Ninja Cat in forum Tutorials
    Replies: 22
    Last Post: 03-11-2008, 02:50 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •