RaGEZONE sponsored advertisment:
10-30-2009
|
#76 (permalink)
| | Money To Blow
Rank: Moderator Join Date: May 2007 Location: Toronto, ON
Posts: 5,915
Thanked 68 Times in 42 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by Tyler |
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
}
}
|
| |
RaGEZONE sponsored advertisment:
10-30-2009
|
#77 (permalink)
| | Currently...Engaged :3
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 |
| | 
Endorsement
10-30-2009
|
#78 (permalink)
| | Monster Member
Rank: Member
Join Date: Nov 2008
Posts: 197
Thanked 0 Times in 0 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by Tyler |
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.
|
| | 
Endorsement
10-30-2009
|
#79 (permalink)
| | Owned in the way up.
Rank: Member + Join Date: Apr 2007 Location: The Netherlands
Posts: 1,202
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!
|
| |
10-30-2009
|
#80 (permalink)
| | Love, what?
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 | 
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 |
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 | |
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 |
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.
|
| |
10-30-2009
|
#81 (permalink)
| | Money To Blow
Rank: Moderator Join Date: May 2007 Location: Toronto, ON
Posts: 5,915
Thanked 68 Times in 42 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by Tyler |
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)
|
| |
10-30-2009
|
#82 (permalink)
| | Love, what?
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?
|
| |
10-30-2009
|
#83 (permalink)
| | Money To Blow
Rank: Moderator Join Date: May 2007 Location: Toronto, ON
Posts: 5,915
Thanked 68 Times in 42 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by Tyler |
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
|
| |
10-30-2009
|
#84 (permalink)
| | Love, what?
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.
|
| |
10-30-2009
|
#85 (permalink)
| | The Almighty Omega
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)
|
| |
10-30-2009
|
#86 (permalink)
| | Love, what?
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.
|
| |
10-30-2009
|
#87 (permalink)
| | Owned in the way up.
Rank: Member + Join Date: Apr 2007 Location: The Netherlands
Posts: 1,202
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 :)
|
| |
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' |
| |
10-31-2009
|
#89 (permalink)
| | Newbie
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.
|
| |
10-31-2009
|
#90 (permalink)
| | Love, what?
Rank: Alpha Member Join Date: Nov 2008
Posts: 3,112
Thanked 16 Times in 12 Posts
| Re: [Dev] RageScape 508 3.0 |
| |
11-09-2009
|
#91 (permalink)
| | Behind You
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! |
| |
11-09-2009
|
#92 (permalink)
| | Old School GunZ Owner
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?
|
| |
11-09-2009
|
#93 (permalink)
| | Money To Blow
Rank: Moderator Join Date: May 2007 Location: Toronto, ON
Posts: 5,915
Thanked 68 Times in 42 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by gregon13 | |
what am I missing when it states 'dynamic' isn't a variable or somthing rather along those lines?
| What? |
| |
11-09-2009
|
#94 (permalink)
| | Old School GunZ Owner
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 |
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
| |
| |
11-09-2009
|
#95 (permalink)
| | Money To Blow
Rank: Moderator Join Date: May 2007 Location: Toronto, ON
Posts: 5,915
Thanked 68 Times in 42 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by gregon13 | |
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.
|
| |
11-09-2009
|
#96 (permalink)
| | Old School GunZ Owner
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 |
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
|
| |
11-09-2009
|
#97 (permalink)
| | Money To Blow
Rank: Moderator Join Date: May 2007 Location: Toronto, ON
Posts: 5,915
Thanked 68 Times in 42 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by gregon13 | |
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
|
| |
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..
|
| |
11-09-2009
|
#99 (permalink)
| | Old School GunZ Owner
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 | |
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
|
| |
11-10-2009
|
#100 (permalink)
| | Bear with me
Rank: Member + Join Date: Jul 2009 Location: syd, Australia
Posts: 665
Thanked 3 Times in 2 Posts
| Re: [Dev] RageScape 508 3.0
|
Originally Posted by markgil |
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 | |
sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123sp123sp123sp123sp123sp123sp123 sp123sp123sp123sp123
|  |
| | |