You are Unregistered, please register to gain Full access.
    


RaGEZONE sponsored advertisment:

 
 
LinkBack Thread Tools
Old 10-30-2009   #76 (permalink)
Money To Blow
 
TheAJ's Avatar
 
Rank: Moderator
Join Date: May 2007
Location: Toronto, ON
Posts: 5,915
Blog Entries: 3
Thanked 68 Times in 42 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by Tyler View Post
AJ, I didn't mean you.
I'm talking about the players of RaGESCAPE. xD

But yeh, an amusement park is a great way of putting it.
:D


Anyways guys, been doing some beastly work today, and done login pretty much done. Just needs to load the character.

Right now, it gathers everything that's needed :)


for those who believe games should have a strong security:
http://ajravindiran.com/projects/jol...rd_hashing.png

All passwords are double hashed

Code:
// Hashed password.
string partHash = Hash.GetHash(p.ReadString(), HashType.SHA1);
string password = Hash.GetHash(username + partHash, HashType.SHA1);
We'll also be able to better support hd in RageScape 3.0, so we're looking at a positive start

---------- Post added at 10:19 PM ---------- Previous post was at 10:16 PM ----------

PS login processing is ALOT more efficient than it used to be aswell,

RageScape 1.0 & 2.0:
Code:
/************************************************\
 * ############################################ *
 * ## RageScape 508 Server - MySQL Edition   ## *
 * ############################################ *
 * ## Copyright (c) 2006 - 2009 TheAJP       ## *
 * ## http://theajp.com/ <truebrown@live.ca> ## *
 * ############################################ *
\************************************************/
package com.aj.ragescape.io;

import java.sql.*;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import com.aj.ragescape.Server;
import com.aj.ragescape.Engine;
import com.aj.ragescape.players.Player;
import com.aj.ragescape.util.*;
import com.aj.ragescape.skills.*;
import com.aj.ragescape.content.*;

public class Login {

    public static String MD5(String text)
            throws NoSuchAlgorithmException, UnsupportedEncodingException {
        MessageDigest md;
        md = MessageDigest.getInstance("MD5");
        byte[] md5hash = new byte[32];
        md.update(text.getBytes("iso-8859-1"), 0, text.length());
        md5hash = md.digest();
        return convertToHex(md5hash);
    }

    private static String convertToHex(byte[] data) {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < data.length; i++) {
            int halfbyte = (data[i] >>> 4) & 0x0F;
            int two_halfs = 0;
            do {
                if ((0 <= halfbyte) && (halfbyte <= 9)) {
                    buf.append((char) ('0' + halfbyte));
                } else {
                    buf.append((char) ('a' + (halfbyte - 10)));
                }
                halfbyte = data[i] & 0x0F;
            } while (two_halfs++ < 1);
        }
        return buf.toString();
    }

    /**
     * Validate a connection.
     * <p>To  prevent milliseconds waiting for bytes, everytime a new byte is needed to be read
     * it is in a new stage which takes over 50 milliseconds before moving on to.
     * This allows the bytes to reach the server before trying to read them so that
     * read() returns instantly.
     * @param p The Player which the frame should be created for.
     */
    public void login(Player p) {
        if (p == null || p.stream == null) {
            return;
        }
        long serverSessionKey = ((long) (Math.random() * 99999999D) << 32) + (long) (Math.random() * 99999999D);
        long clientSessionKey = 0;
        int returnCode = 2;

        if (p.loginStage < -1) {
            updateServer(p);
        } else if (p.loginStage == 0) {
            try {
                if (!fillStream(p, 2)) {
                    return;
                }
            } catch (Exception e) {
                return;
            }
            int connectionType = p.stream.readUnsignedByte();

            if (connectionType == 15) {
                updateServer(p);
                p.loginStage = -5;
                return;
            }
            if (connectionType != 14) {
                p.loginStage = -1;
                return;
            }
            int longPlayerName = p.stream.readUnsignedByte();

            p.stream.writeByte(0);
            p.stream.writeQWord(serverSessionKey);
            directFlushStream(p);
            p.loginStage++;
        } else if (p.loginStage == 1) {
            try {
                if (!fillStream(p, 3)) {
                    return;
                }
            } catch (Exception e) {
                return;
            }
            int loginType = p.stream.readUnsignedByte();

            if (loginType != 16 && loginType != 18 && loginType != 14) {
                p.loginStage = -1;
                return;
            }
            p.loginStage++;
        } else if (p.loginStage == 2) {
            int loginPacketSize = p.stream.readUnsignedWord();
            int loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2);

            if (loginEncryptPacketSize <= 0) {
                p.loginStage = -1;
                return;
            }
            try {
                if (!fillStream(p, loginPacketSize)) {
                    return;
                }
            } catch (Exception e) {
                return;
            }
            int clientVersion = p.stream.readDWord();

            if (clientVersion != 508) {
                p.loginStage = -1;
                return;
            }
            p.stream.readUnsignedByte();
            p.stream.readUnsignedWord();
            p.stream.readUnsignedWord();
            for (int i = 0; i < 24; i++) {
                int cacheIDX = p.stream.readUnsignedByte();
            }
            String junk = p.stream.readString();

            for (int i = 0; i < 29; i++) {
                int junk2 = p.stream.readDWord();
            }
            loginEncryptPacketSize--;
            int junk29 = p.stream.readUnsignedByte();
            int encryption = junk29;
            if (!(encryption == 10 || encryption == 64)) {
                encryption = p.stream.readUnsignedByte();
            }
            if (encryption != 10 && encryption != 64) {
                p.loginStage = -1;
                return;
            }
            clientSessionKey = p.stream.readQWord();
            serverSessionKey = p.stream.readQWord();

            p.username = Misc.longToString(p.stream.readQWord()).toLowerCase().replaceAll("_", " ").trim();

            if (p.username == null) {
                p.loginStage = -1;
                p.username = "";
                return;
            }

            for (int i = 0; i < p.username.length(); i++) {
                Character c = new Character(p.username.charAt(i));

                if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
                    p.loginStage = -1;
                    p.username = "";
                    return;
                }
            }

            if (playerOnline(p.username, p)) {
                returnCode = 5;
            }

            if (checkBannedUsers(p.username)) {
                returnCode = 4;
            }



            String password = p.stream.readString();

            if (password == null) {
                p.loginStage = -1;
                return;
            }

            boolean isValid = Engine.fileManager.loadCharacter(p);

            try {
                password = MD5(password);
            } catch (Exception e) {
                password = "invalid password"; // it will never match this, even if the user's password is 'invalid password'
            }

            if (password != null && p.password != null && p.password != "" && !p.password.equals(password) || !isValid) {
                returnCode = 3;
            }

            try {
                MySQL.executeUpdate("UPDATE users SET online = '1' WHERE username = '" + p.username + "' LIMIT 1");
            } catch (Exception e) {
                e.printStackTrace();
            }

            p.stream.writeByte(returnCode);
            p.stream.writeByte(p.rights);
            p.stream.writeByte(0);
            p.stream.writeByte(0);
            p.stream.writeByte(0);
            p.stream.writeByte(1);
            p.stream.writeByte(0);
            p.stream.writeByte(p.playerId);
            p.stream.writeByte(0);

            directFlushStream(p);

            if (p.teleportToX == -1 && p.teleportToY == -1) {
                p.setCoords(3242, 3520, 0);
            }

            Engine.playerMovement.getNextPlayerMovement(p);
            p.frames.setMapRegion(p);
            directFlushStream(p);

            if (returnCode != 2) {
                MySQL.executeUpdate("INSERT INTO s_ip (userid,username,ip,connection) VALUES ('" + p.absoluteId + "','" + Misc.capitalize(p.username) + "','" + Server.socketListener.getAddress(p.socket.socket) + "','Failed')");
                return;
            }
            MySQL.executeUpdate("INSERT INTO s_ip (userid,username,ip,connection) VALUES ('" + p.absoluteId + "','" + Misc.capitalize(p.username) + "','" + Server.socketListener.getAddress(p.socket.socket) + "','Successful')");

            if (p.rights >= 1) {
                p.memberCount = 99;
            }

            try {
                ResultSet RS = MySQL.executeQuery("SELECT COUNT(*) FROM message_centre WHERE recieverid = '" + p.absoluteId + "' AND unread = '1'");
                RS.next();
                p.messageCount = RS.getInt(1);
            } catch (Exception e) {
                p.messageCount = 0;
                e.printStackTrace();
                Logger.errorln("Login", "Could not retreieve message count for " + p.username);
            }

            p.frames.setWelcome(p);
	    p.introTimer = 20;
            p.frames.setInterfaces(p);
            p.frames.setConfigs(p);

            for (int i = 0; i < p.skillLvl.length; i++) {
                p.frames.setSkillLvl(p, i);
            }

            p.frames.setItems(p, 149, 0, 93, p.items, p.itemsN);
            p.frames.setItems(p, 387, 28, 93, p.equipment, p.equipmentN);

            String prefix = "";

            if (p.rights == 1) {
                prefix = "<img=0> "; // silver crown
            } else if (p.rights == 2) {
                prefix = "<img=1> "; // gold crown
            } else if (p.memberCount > 0) {
                prefix = "[<col=ff0000>Donator</col>]"; // donator
            }

            p.frames.sendMessage(p, "<img=2> Welcome to RageScape.");

            for (Player ap : Engine.players) {
                if (ap == null) {
                    continue;
                }

                if (!ap.online) {
                    continue;
                }

                ap.frames.sendMessage(ap, "<img=2> " + prefix + Misc.capitalize(p.username) + " has logged in.");
            }

            p.frames.setPlayerOption(p, "null", 1);
            p.frames.setPlayerOption(p, "Trade", 2);
            p.frames.setPlayerOption(p, "Follow", 3);
            //p.frames.setPlayerOption(p, "Private-chat", 4);

            p.frames.setConfig(p, 172, p.autoRetaliate);
            p.frames.setConfig(p, 43, p.AttackStyle);
	    p.frames.setConfig(p, 1249, p.bankX);

            p.playerWeapon.setWeapon();
            p.frames.connecttofserver(p);
            p.friendsLoggedIn();
            p.calculateEquipmentBonus();
            Clan.LoadClan(p);

            if (p.started == 0) {
                p.setCoords(2142, 4853, 0);
            } else if (p.absX == 0 && p.absY == 0) {
                p.setCoords(3243, 3518, 0);
            }

            p.online = true;
            p.appearanceUpdateReq = true;
            p.updateReq = true;
            p.runEnergyUpdateReq = true;

            p.wc = new Woodcutting(p);
            p.mi = new Mining(p);

            p.specialAmountUpdateReq = true;

            if (p.rights >= 2) {
                p.frames.sendMessage(p, "AntiPK and Drop Protection enabled.");
                p.dropProtect = true;
                p.AntiPK = true;
            }
        }
    }

    /**
     * If the connection is the client's update server than send the keys.
     * @param p The Player which the frame should be created for.
     */
    private void updateServer(Player p) {
        if (p == null) {
            return;
        }
        try {
            if (p.loginStage == 0) {
                if (!fillStream(p, 3)) {
                    return;
                }
                p.stream.writeByte(0);
                directFlushStream(p);
            } else if (p.loginStage == -5) {
                if (!fillStream(p, 8)) {
                    return;
                }
                for (int i = 0; i < Misc.uKeys.length; i++) {
                    p.stream.writeByte(Misc.uKeys[i]);
                }
                directFlushStream(p);
                p.loginStage = -1;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Make sure the player isn't already online.
     * @param name The name to compare with.
     * @param _p The Player which the frame should be created for.
     */
    private boolean playerOnline(String name, Player _p) {
        for (Player p : Engine.players) {
            if (p != null && _p.playerId != p.playerId) {
                if (p.username.equalsIgnoreCase(name)) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * Checks if a user is banned.
     * @param username The name to check.
     * @return Returns if the name was found.
     */
    public boolean checkBannedUsers(String username) {
        if (username == null) {
            return true;
        }
        for (int i = 0; i < Server.bannedUsers.length; i++) {
            if (Server.bannedUsers[i] != null && username.equalsIgnoreCase(Server.bannedUsers[i])) {
                return true;
            }
        }
        return false;
    }

    /**
     * Check and read any incoming bytes.
     * @param p The Player which the frame should be created for.
     * @param forceRead How many bytes to read from the buffer.
     */
    private boolean fillStream(Player p, int forceRead) throws Exception {
        if (p == null) {
            return false;
        }
        if (forceRead >= 500) {
            return false;
        }
        if (p.socket.avail() < forceRead) {
            return false;
        }
        p.stream.inOffset = 0;
        p.socket.read(forceRead);
        return true;
    }

    /**
     * Send the bytes in the stream's outBuffer directly to the client.
     * @param p The Player which the frame should be created for.
     */
    private void directFlushStream(Player p) {
        if (p == null) {
            return;
        }
        try {
            p.socket.write(p.stream.outBuffer, 0, p.stream.outOffset);
            p.stream.outOffset = 0;
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}
RageScape 3.0:
Code:
/* 
    Jolt Environment
    Copyright (C) 2009 AJ Ravindiran

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;

using JoltEnvironment.Security;
using JoltEnvironment.Utilities;
using RuneScape.Models.Characters;
using RuneScape.Network.Tcp;
using RuneScape.Network.Packets;
using RuneScape.Network.Packets.Builders;
using RuneScape.Utilities.Buffer;

namespace RuneScape.Network.Login
{
    /// <summary>
    /// Provices processing of login requests.
    /// </summary>
    public static class LoginProtocol
    {
        #region Fields
        /// <summary>
        /// The update keys needed to update the 508 version client.
        /// </summary>
        private static int[] updateKeys = 
        { 
            0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xd8, 
		    0x84, 0xa1, 0xa1, 0x2b, 0x00, 0x00, 0x00, 0xba, 
		    0x58, 0x64, 0xe8, 0x14, 0x00, 0x00, 0x00, 0x7b, 
		    0xcc, 0xa0, 0x7e, 0x23, 0x00, 0x00, 0x00, 0x48, 
		    0x20, 0x0e, 0xe3, 0x6e, 0x00, 0x00, 0x01, 0x88, 
		    0xec, 0x0d, 0x58, 0xed, 0x00, 0x00, 0x00, 0x71, 
		    0xb9, 0x4c, 0xc0, 0x50, 0x00, 0x00, 0x01, 0x8b, 
		    0x5b, 0x61, 0x79, 0x20, 0x00, 0x00, 0x00, 0x0c, 
		    0x0c, 0x69, 0xb1, 0xc8, 0x00, 0x00, 0x02, 0x31, 
		    0xc8, 0x56, 0x67, 0x52, 0x00, 0x00, 0x00, 0x69, 
		    0x78, 0x17, 0x7b, 0xe2, 0x00, 0x00, 0x00, 0xc3, 
		    0x29, 0x76, 0x27, 0x6a, 0x00, 0x00, 0x00, 0x05, 
		    0x44, 0xe7, 0x75, 0xcb, 0x00, 0x00, 0x00, 0x08, 
		    0x7d, 0x21, 0x80, 0xd5, 0x00, 0x00, 0x01, 0x58, 
		    0xeb, 0x7d, 0x49, 0x8e, 0x00, 0x00, 0x00, 0x0c, 
		    0xf4, 0xdf, 0xd6, 0x4d, 0x00, 0x00, 0x00, 0x18, 
		    0xec, 0x33, 0x31, 0x7e, 0x00, 0x00, 0x00, 0x01, 
		    0xf7, 0x7a, 0x09, 0xe3, 0x00, 0x00, 0x00, 0xd7, 
		    0xe6, 0xa7, 0xa5, 0x18, 0x00, 0x00, 0x00, 0x45, 
		    0xb5, 0x0a, 0xe0, 0x64, 0x00, 0x00, 0x00, 0x75, 
	    	0xba, 0xf2, 0xa2, 0xb9, 0x00, 0x00, 0x00, 0x5f, 
	    	0x31, 0xff, 0xfd, 0x16, 0x00, 0x00, 0x01, 0x48, 
	    	0x03, 0xf5, 0x55, 0xab, 0x00, 0x00, 0x00, 0x1e, 
	    	0x85, 0x03, 0x5e, 0xa7, 0x00, 0x00, 0x00, 0x23, 
	    	0x4e, 0x81, 0xae, 0x7d, 0x00, 0x00, 0x00, 0x18, 
	    	0x67, 0x07, 0x33, 0xe3, 0x00, 0x00, 0x00, 0x14, 
	    	0xab, 0x81, 0x05, 0xac, 0x00, 0x00, 0x00, 0x03, 
	    	0x24, 0x75, 0x85, 0x14, 0x00, 0x00, 0x00, 0x36
        };
        #endregion Fields

        #region Methods
        /// <summary>
        /// Processes a login for the given buffer.
        /// </summary>
        /// <param name="connection">The login request that needs processing.</param>
        public static void Process(LoginRequest request)
        {
            if (request.Buffer == null) return;

            try
            {
                switch (request.LoginStage)
                {
                    case -2: // Sending update keys.
                        {
                            if (8 <= request.Buffer.RemainingAmount)
                            {
                                WriteBuffer keys = new WriteBuffer(updateKeys.Length);
                                foreach (int i in updateKeys) keys.Append((byte)i); // Append the keys to the write buffer.
                                request.Connection.SendData(keys.Payload); // Send the update keys to client.
                                request.LoginStage = -3; // Client ready from removal.
                            }
                            return;
                        }
                    case -1: // The client's version check.
                        {
                            if (3 <= request.Buffer.RemainingAmount)
                            {
                                request.Buffer.Read(); // Useless data :P
                                int clientVersion = ((short)((request.Buffer.Read() & 0xff) << 8) | (short)(request.Buffer.Read() & 0xff));
                                if (clientVersion == 508) // Make sure client version is 508.
                                {
                                    // Send a reponse to tell the client that the revision is correct.
                                    request.Connection.SendData(new WriteBuffer(1).Append((byte)0).Payload);
                                    request.Buffer = null; // Dump current buffer.
                                    request.LoginStage = -2;
                                }
                            }
                            return;
                        }
                    case 0: // The first few packets are recieved.
                        {
                            if (2 <= request.Buffer.RemainingAmount)
                            {
                                int protocolId = request.Buffer.Read();
                                int namePart = request.Buffer.Read();

                                Program.Logger.WriteDebug("Protocol id: " + protocolId);

                                if (protocolId == 15) // The client is requesting a version check + update keys.
                                {
                                    request.LoginStage = -1;
                                    goto case -1;
                                }
                                else if (protocolId == 14) // The client is requesting a login.
                                {
                                    long key = ((long)(new Random().NextDouble() * 99999999D) << 32) + (long)(new Random().NextDouble() * 99999999D);
                                    request.Connection.SendData(
                                        new PacketBuilder().AppendByte((byte)0)
                                        .AppendLong(key)
                                        .ToTrimmedArray());
                                    request.Buffer = null; // Dump current buffer.
                                    request.LoginStage = 1;
                                }
                                else request.LoginStage = -3;
                            }
                            return;
                        }
                    case 1: // Username and password input.
                        {
                            int loginType = -1, loginPacketSize = -1;
                            if (3 <= request.Buffer.RemainingAmount)
                            {
                                loginType = request.Buffer.Read(); // Should be 16 (new connection) or 18 (reconnection)
                                loginPacketSize = ((request.Buffer.Read() & 0xff) << 8) + // packet size will vary depending on user's name and pass.
                                    (request.Buffer.Read() & 0xff);
                            }
                            else return;

                            if (loginPacketSize <= request.Buffer.RemainingAmount)
                            {
                                Packet p = new Packet(-1, PacketType.Fixed, new ReadBuffer(request.Buffer.RemainingData));
                                int loginEncrpytPacketSize = loginPacketSize - (36 + 1 + 1 + 2); // Cannot be below 0.

                                int clientVersion = p.ReadInt();
                                if (clientVersion != 508) // Check to make sure the client is 508.
                                {
                                    request.LoginStage = -3;
                                    return;
                                }

                                p.Buffer.Skip(148);

                                int tmpEncryptPacketSize = p.ReadByte();
                                bool hd = true;
                                if (tmpEncryptPacketSize != 10)
                                {
                                    int encryptPacketId = p.ReadByte();
                                    hd = false;
                                }

                                // User data.
                                long clientKey = p.ReadLong();
                                long serverKey = p.ReadLong();
                                string username = StringUtilities.LongToString(p.ReadLong());

                                // Hashed password.
                                string partHash = Hash.GetHash(p.ReadString(), HashType.SHA1);
                                string password = Hash.GetHash(username + partHash, HashType.SHA1);

                                Console.WriteLine(password);


                                
                                //string password = p.ReadString();

                                Program.Logger.WriteDebug("USERNAME: " + username + "\nPASSWORD: " + password + "\nCLIENT SESSION: " + clientKey + "\nSERVER SESSION: " + serverKey);

                                CharacterDetails details = new CharacterDetails(request.Connection.Id, username, password, hd, clientKey, serverKey);
                            }
                            return;
                        }
                }
            }
            catch (Exception ex)
            {
                Program.Logger.WriteException(ex);
            }
        }
        #endregion Methods
    }
}
__________________



TheAJ is offline   Reply With Quote

RaGEZONE sponsored advertisment:
Old 10-30-2009   #77 (permalink)
Currently...Engaged :3
 
GhostSnyper's Avatar
 
Rank: Moderator
Join Date: May 2006
Location: Chandler, AZ
Posts: 2,706
Thanked 17 Times in 14 Posts

Re: [Dev] RageScape 508 3.0

Impressive, very impressive. I like the way you hashed the passwords :3

Strong security, even if we show how we encrypt, it's still not easy to reverse engineer the passwords, without knowing the password in the first place :P
__________________
Learning c#
Furthering knowledge in Java

Working on stuff
GhostSnyper is offline   Reply With Quote

Endorsement
Old 10-30-2009   #78 (permalink)
Monster Member
 
Erupt Strength's Avatar
 
Rank: Member
Join Date: Nov 2008
Posts: 197
Thanked 0 Times in 0 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by Tyler View Post
Half the people who play RaGESCAPE here are just posting for the sake of it.

Erupt Strength for example.
Update keys, I know is a big deal.. but he probably doesn't even know.
:|
So what if I don't know what the hell is going on.. I'm just giving a bit of encouragement or at least trying 2.
__________________
Erupt Strength is offline   Reply With Quote

Endorsement

Old 10-30-2009   #79 (permalink)
Owned in the way up.
 
Aukemon0NL's Avatar
 
Rank: Member +
Join Date: Apr 2007
Location: The Netherlands
Posts: 1,202
Blog Entries: 9
Thanked 4 Times in 2 Posts

Re: [Dev] RageScape 508 3.0

I love the new codes :)
Looks good and secure :)
I'm learn C# now 2 :)

IT'S EASY!
__________________
Aukemon0NL is online now   Reply With Quote
Old 10-30-2009   #80 (permalink)
Love, what?
 
Tyler's Avatar
 
Rank: Alpha Member
Join Date: Nov 2008
Posts: 3,112
Thanked 16 Times in 12 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by TheAJ View Post


Anyways guys, been doing some beastly work today, and done login pretty much done. Just needs to load the character.

Right now, it gathers everything that's needed :)
Good good.
Then you can start on some real work.

Originally Posted by TheAJ View Post
PS login processing is ALOT more efficient than it used to be aswell.
Is it as efficient as possible though?

---------- Post added at 03:24 PM ---------- Previous post was at 03:17 PM ----------

Originally Posted by Erupt Strength View Post
So what if I don't know what the hell is going on.. I'm just giving a bit of encouragement or at least trying 2.
Then don't act like you know whats going on.
You'll end yourself up in a mess. Just offer encouragement and be done with it.

Originally Posted by Aukemon0NL View Post
I love the new codes :)
Looks good and secure :)
I'm learn C# now 2 :)

IT'S EASY!
Yeh, I said exactly the same thing.
It was hard.
__________________




Last edited by Tyler; 10-30-2009 at 04:23 PM.
Tyler is online now   Reply With Quote
Old 10-30-2009   #81 (permalink)
Money To Blow
 
TheAJ's Avatar
 
Rank: Moderator
Join Date: May 2007
Location: Toronto, ON
Posts: 5,915
Blog Entries: 3
Thanked 68 Times in 42 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by Tyler View Post
Is it as efficient as possible though?

Well, it's the most efficient way i could think of, so yes the most efficient way (yet)
__________________



TheAJ is offline   Reply With Quote
Old 10-30-2009   #82 (permalink)
Love, what?
 
Tyler's Avatar
 
Rank: Alpha Member
Join Date: Nov 2008
Posts: 3,112
Thanked 16 Times in 12 Posts

Re: [Dev] RageScape 508 3.0

Good good.
Maybe once the game actually has some fun in-game features and your c# has progressed a little you'll re-think it all. :D

Good luck though.
Still providing free versions of jolt?
__________________



Tyler is online now   Reply With Quote
Old 10-30-2009   #83 (permalink)
Money To Blow
 
TheAJ's Avatar
 
Rank: Moderator
Join Date: May 2007
Location: Toronto, ON
Posts: 5,915
Blog Entries: 3
Thanked 68 Times in 42 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by Tyler View Post
Good good.
Maybe once the game actually has some fun in-game features and your c# has progressed a little you'll re-think it all. :D

Good luck though.
Still providing free versions of jolt?
Jolt will always be free and updated
__________________



TheAJ is offline   Reply With Quote
Old 10-30-2009   #84 (permalink)
Love, what?
 
Tyler's Avatar
 
Rank: Alpha Member
Join Date: Nov 2008
Posts: 3,112
Thanked 16 Times in 12 Posts

Re: [Dev] RageScape 508 3.0

Obviously you'll keep an exclusive version for RaGESCAPE though, right? ;)

How deep will the latest free jolt go?
You'll stop eventually and work on Jolt for RaGESCAPE.
__________________



Tyler is online now   Reply With Quote
Old 10-30-2009   #85 (permalink)
The Almighty Omega
 
Superfun's Avatar
 
Rank: Moderator
Join Date: Dec 2006
Location: The Netherlands
Posts: 6,812
Thanked 27 Times in 13 Posts

Re: [Dev] RageScape 508 3.0

Outside jolt, paypal script for auto-donator receive is almost done. (will also work on jolt in the furture)
__________________
-
Superfun is offline   Reply With Quote
Old 10-30-2009   #86 (permalink)
Love, what?
 
Tyler's Avatar
 
Rank: Alpha Member
Join Date: Nov 2008
Posts: 3,112
Thanked 16 Times in 12 Posts

Re: [Dev] RageScape 508 3.0

Basically, is that what automatically sets donator status when the money is recieved? A problem that has lacked throughout RaGESCAPE's history.
__________________



Tyler is online now   Reply With Quote
Old 10-30-2009   #87 (permalink)
Owned in the way up.
 
Aukemon0NL's Avatar
 
Rank: Member +
Join Date: Apr 2007
Location: The Netherlands
Posts: 1,202
Blog Entries: 9
Thanked 4 Times in 2 Posts

Re: [Dev] RageScape 508 3.0

indeed Tyler.
But they're still working on it :)
I'm not really helping though.
I'm only sitting here and enjoy my self with some games :)
__________________
Aukemon0NL is online now   Reply With Quote
Old 10-30-2009   #88 (permalink)
Newbie
 
Rank: Hobbit
Join Date: Jun 2009
Location: California
Posts: 4
Thanked 0 Times in 0 Posts

Re: [Dev] RageScape 508 3.0

About your bar, Ghost, it looks rockin'
purerange is offline   Reply With Quote
Old 10-31-2009   #89 (permalink)
Newbie
 
scarey2k8's Avatar
 
Rank: Hobbit
Join Date: Dec 2008
Posts: 14
Thanked 0 Times in 0 Posts

Re: [Dev] RageScape 508 3.0

Hey Guys, Sorry but what is the link to Ragescape because i would love to play it because i play runescape alot it would be nice to play a retro one.
scarey2k8 is offline   Reply With Quote
Old 10-31-2009   #90 (permalink)
Love, what?
 
Tyler's Avatar
 
Rank: Alpha Member
Join Date: Nov 2008
Posts: 3,112
Thanked 16 Times in 12 Posts

Re: [Dev] RageScape 508 3.0

http://RaGESCAPE.org
__________________



Tyler is online now   Reply With Quote
Old 11-09-2009   #91 (permalink)
Behind You
 
eennee's Avatar
 
Rank: Member +
Join Date: May 2008
Location: This Post.
Posts: 759
Thanked 0 Times in 0 Posts

Re: [Dev] RageScape 508 3.0

ragescape.org
__________________

1. "Even A Blind Squirrel Picks Up A Nut Once In A While"
2. Friendship is like peeing on yourself: everyone can see it, but only you get the warm feeling that it brings.
Got A Funny Quote? Pm ME!
eennee is offline   Reply With Quote
Old 11-09-2009   #92 (permalink)
Old School GunZ Owner
 
gregon13's Avatar
 
Rank: Alpha Member
Join Date: Nov 2007
Location: Canada
Posts: 1,747
Thanked 113 Times in 53 Posts

Re: [Dev] RageScape 508 3.0

what am I missing when it states 'dynamic' isn't a variable or somthing rather along those lines?
gregon13 is offline   Reply With Quote
Old 11-09-2009   #93 (permalink)
Money To Blow
 
TheAJ's Avatar
 
Rank: Moderator
Join Date: May 2007
Location: Toronto, ON
Posts: 5,915
Blog Entries: 3
Thanked 68 Times in 42 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by gregon13 View Post
what am I missing when it states 'dynamic' isn't a variable or somthing rather along those lines?
What?
__________________



TheAJ is offline   Reply With Quote
Old 11-09-2009   #94 (permalink)
Old School GunZ Owner
 
gregon13's Avatar
 
Rank: Alpha Member
Join Date: Nov 2007
Location: Canada
Posts: 1,747
Thanked 113 Times in 53 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by TheAJ View Post
What?
Quote:
Error 1 The type or namespace name 'dynamic' could not be found (are you missing a using directive or an assembly reference?) D:\SVN\jolt\Source\JoltEnvironment\Configuration.c s 40 36 JoltEnvironment
and this error too

Quote:
Error 4 The base class or interface 'System.Data.Common.DbCommand' in assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' referenced by type 'MySql.Data.MySqlClient.MySqlCommand' could not be resolved d:\SVN\jolt\Source\JoltEnvironment.Storage\Resourc es\MySQL\MySql.Data.dll JoltEnvironment.Storage
gregon13 is offline   Reply With Quote
Old 11-09-2009   #95 (permalink)
Money To Blow
 
TheAJ's Avatar
 
Rank: Moderator
Join Date: May 2007
Location: Toronto, ON
Posts: 5,915
Blog Entries: 3
Thanked 68 Times in 42 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by gregon13 View Post
and this error too
You need .NET Framework 4.0, by the error given, you seem to have only 2.0

And dynamic is a new type in C# 4.0
__________________




Last edited by TheAJ; 11-09-2009 at 05:06 AM.
TheAJ is offline   Reply With Quote
Old 11-09-2009   #96 (permalink)
Old School GunZ Owner
 
gregon13's Avatar
 
Rank: Alpha Member
Join Date: Nov 2007
Location: Canada
Posts: 1,747
Thanked 113 Times in 53 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by TheAJ View Post
You need .NET Framework 4.0, by the error given, you seem to have only 2.0

And dynamic is a new type in C# 4.0
i have 3.5 and ok I will update yet again and I thought I have the latest c# I downloaded the package and it comes wit c++ C# VB and Web design an sql server 2008
gregon13 is offline   Reply With Quote
Old 11-09-2009   #97 (permalink)
Money To Blow
 
TheAJ's Avatar
 
Rank: Moderator
Join Date: May 2007
Location: Toronto, ON
Posts: 5,915
Blog Entries: 3
Thanked 68 Times in 42 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by gregon13 View Post
i have 3.5 and ok I will update yet again and I thought I have the latest c# I downloaded the package and it comes wit c++ C# VB and Web design an sql server 2008
4.0 is still in beta, so you might have to search for .net 4.0 beta
__________________



TheAJ is offline   Reply With Quote
Old 11-09-2009   #98 (permalink)
Newbie
 
Rank: Hobbit
Join Date: Jun 2009
Posts: 8
Thanked 0 Times in 0 Posts

Re: [Dev] RageScape 508 3.0

AJ is the server updating...?im done to patch gracia final..

---------- Post added at 04:52 AM ---------- Previous post was at 04:49 AM ----------

i log -in earlier...i played a couple of minutes..then after i got disconnected..when i tried to log-in ..it says account is already in used..and i tried many times...but i cant log in..
markgil is offline   Reply With Quote
Old 11-09-2009   #99 (permalink)
Old School GunZ Owner
 
gregon13's Avatar
 
Rank: Alpha Member
Join Date: Nov 2007
Location: Canada
Posts: 1,747
Thanked 113 Times in 53 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by TheAJ View Post
4.0 is still in beta, so you might have to search for .net 4.0 beta
I just got VS C# 2010 Beta which comes with everything I need to get it to go, looking forward to see how this project progress,and if I get anything going I'll let you know
gregon13 is offline   Reply With Quote
Old 11-10-2009   #100 (permalink)
Bear with me
 
sp123me's Avatar
 
Rank: Member +
Join Date: Jul 2009
Location: syd, Australia
Posts: 665
Blog Entries: 2
Thanked 3 Times in 2 Posts

Re: [Dev] RageScape 508 3.0

Originally Posted by markgil View Post
AJ is the server updating...?im done to patch gracia final..

---------- Post added at 04:52 AM ---------- Previous post was at 04:49 AM ----------

i log -in earlier...i played a couple of minutes..then after i got disconnected..when i tried to log-in ..it says account is already in used..and i tried many times...but i cant log in..
Off topic but anyway use account unstucker, log in on the site account management account unstuck

@devs will the administration cp change at all with 3.0?
__________________
Originally Posted by Superfun View Post
sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123
sp123me is offline   Reply With Quote
 

Bookmarks

Thread Tools




Translated by Google
Albanian Arabic Belarusian Bulgarian Catalan Chinese Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician German Greek Hebrew Hindi Hungarian Icelandic Indonesian Italian Japanese Korean Latvian Lithuanian Maltese Norwegian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swedish Taiwanese Thai Turkish Ukrainian Vietnamese
no new posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274