Re: [C++ (Qt)][v9-v18?] NexusServer (Updated to v1.2.0)
Your progress is awesome man! I love this project, please keep continueing and make this the best oldschool server, released, ever.
By the way, wouldn't it better to add the sso ticket to the user table and just leave the default value null? Saves you a whole table!
Re: [C++ (Qt)][v9-v18?] NexusServer (Updated to v1.2.0)
Keep up the fantastic work :)
Re: [C++ (Qt)][v9-v18?] NexusServer (Updated to v1.2.0)
Quote:
Originally Posted by
Near
Your progress is awesome man! I love this project, please keep continueing and make this the best oldschool server, released, ever.
By the way, wouldn't it better to add the sso ticket to the user table and just leave the default value null? Saves you a whole table!
Thanks :o
Yeah, it would most likely be better to put the SSO-ticket data into the accounts table. I need to standardize the whole database a lot more in the future, there are a few things that don't need their own table.
Also, getting a hold of a working MySQL driver DLL is proving to be troublesome, I need to compile it on my system so it matches the DLLs distributed with the server, but it doesn't want to compile D:
Re: [C++ (Qt)][v9-v18?] NexusServer (Updated to v1.2.0)
You should me merging the consolemission table with the user table too. If you want me to help you with your database structure, if you need help, you can always ask me. I'll make sure to help you out!
Re: [C++ (Qt)][v9-v18?] NexusServer (Updated to v1.2.0)
Within the 'users' table, you could have:
id
username
password
credits
ssoticket
consolemission
mission
etc.
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.0)
Development thread approved :D latest progress please?
Re: [C++ (Qt)][v9-v18?] NexusServer (Updated to v1.2.0)
Quote:
Originally Posted by
Aerospark
Thanks :o
Yeah, it would most likely be better to put the SSO-ticket data into the accounts table. I need to standardize the whole database a lot more in the future, there are a few things that don't need their own table.
Also, getting a hold of a working MySQL driver DLL is proving to be troublesome, I need to compile it on my system so it matches the DLLs distributed with the server, but it doesn't want to compile D:
i wouldn't worry to much about mysql atm
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.0)
Got a due date for this project (when will it be finished?)
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.0)
Quote:
Originally Posted by
*****
Got a due date for this project (when will it be finished?)
Never ask that question -.-
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.0)
Quote:
Originally Posted by
*****
Got a due date for this project (when will it be finished?)
Stupid question, stupid question....
There is normally no "due date" for any projects.. It can take longer than expected or it can take less time than expected..
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.0)
Who said I can't ask if there's a possible, estimated, due date? Jeez you guys complain over the smallest things.
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.0)
I actually agree with *****, you do complain about the smallest things. You could have just ignored him.
Aero, I'm checking your development every day! Awesome, man, so awesome!
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.0)
Version 1.2.1 Release!
Code:
Changelog
- lots of random code cleanup
- added signal handlers to catch crashes
- moved furniture handling to memory instead of sql statements
- fixed stack height of some items
- fixed stacking
- fixed sitting
- partially fixed pathfinder
Downloads:
Win32 Binaries
QtCreator Source
Linux Binaries Coming Soon!
The links have been updated in the first post as well
We're going to start work on a custom CMS very soon, as well as a direct-access JSON web interface for the server!
And for those unfamiliar with SQLite:
SQLite is NOT a flat-file database, each SQLite database is a `normal` sql database stored in binary-formatted file (4 bytes per int and so on).
Each entry (column in a table) is stored in as a `page` which allows the software to skip directly to an entry just by calculating its position, since each page is the same size in bytes.
MySQL Stores its databases each in its own file too, but since its a full server it stores them all in a main folder, where as sqlite stores wherever the code specifies.
So the main difference becomes that SQLite isn't a server, it has pretty much all the features any SQL server would, and because its direct access instead of over a socket it can end up being a lot faster especially when performing a lot of random transactions!
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.1)
First of all, this is cute, secondly, why would you use Qt to code a server, Qt is a god damned library / framework for User Interfaces...
Also what's with your so-called stress test, how was it done? Explain I want to know. Be detailed because any actual developer would provide details to everything they're doing.
Another note my anonymous friend pointed out is where is the memory management?
There's other things I would mention but the list goes on with the number of issues with this server. It looks like it will be nice exploitable, bug filled and a waste of space in our community. You're better off coding it in Visual Basic 6.
This isn't a rant I'm just pointing out simple things, I'm also awaiting an answer from the developer to my own questions / anonymous' questions.
Edit:
Message from my friend the Black Sheep: he wouldn't allow this past QA, it looks to be easily exploitable and early versions of holograph seem to have cleaner code.
Re: [C++ (Qt)][v9-v18?][Multi-platform] NexusServer (Updated to v1.2.1)
Quote:
Originally Posted by
Moogly
First of all, this is cute, secondly, why would you use Qt to code a server, Qt is a god damned library / framework for User Interfaces...
Also what's with your so-called stress test, how was it done? Explain I want to know. Be detailed because any actual developer would provide details to everything they're doing.
A friend pointed out another thing "Compiled windows binary with libraries (updated to 1.2.1):" how is that cross-platform if it requires windows binaries. You've just contradicted yourself.
Another note my anonymous friend pointed out is where is the memory management?
There's other things I would mention but the list goes on with the number of issues with this server. It looks like it will be nice exploitable, bug filled and a waste of space in our community. You're better off coding it in Visual Basic 6.
This isn't a rant I'm just pointing out simple things, I'm also awaiting an answer from the developer to my own questions / anonymous' questions.
Qt isn't JUST for user interfaces, it supports a wide array of implementations, including servers.
Cut our server some slack, this project is only about a month old.
Also, what about "Compiled windows binary with libraries" makes you think it's not cross-platform? Currently the post only has a compiled windows version, but I've compiled it on Linux multiple times just fine. (In fact, most of today's dev by Ktae was done on Ubuntu)
The memory managment is handled partially by Qt, and partially by the client manager. I'm not the person to talk to about this though, Ktae wrote the client manager.
You also wanted to know how my "stress tester" works, it's just a simple Java program that creates threads with this code:
PHP Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package straastaast;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Luke
*/
public class Bot {
public static String getUsername() {
String[] prefixes;
prefixes = new String[]{
"Melted",
"Fried",
"Curled",
"Minty",
"Shaky",
"Reclusive",
"Friendly",
"Illegal",
"Legal",
"Molten",
"Jerked",
"Juicy",
"Steamy",
"Basted",
"Wasted",
"Baked",
"Grilled",
"Watered",
"Pristine",
"Damaged",
"Funky",
"Horsed",
"Jammed"
};
String[] suffixes;
suffixes = new String[]{
"Melon",
"Fridge",
"Balcony",
"Humphrey",
"Apple",
"Fish",
"Milk",
"Chair",
"Bottle",
"Reefer",
"Lemon",
"Orange",
"Rope",
"Vase",
"Car",
"Truck",
"Van",
"Couch",
"Freezer",
"Board",
"Bird",
"Shark",
"Potato",
"Banana",
"Sail",
"Army",
"Troll",
"Moron",
"Idiot",
"Henchman",
"Overlord",
"God",
"Jesus",
"Satan",
"Turkey",
"Poultry",
"Beast",
"George"
};
return prefixes[Math.round((float) (Math.random() * prefixes.length))] + suffixes[Math.round((float) (Math.random() * suffixes.length))];
}
public Bot() {
final Bot thisBot = this;
new Thread(new Runnable() {
@Override
public void run() {
try {
Socket s = new Socket("localhost", 11421);
InputStream in = s.getInputStream();
OutputStream out = s.getOutputStream();
String regpak="@k@B@Euname@D@Y1000118001270012900121001@E@AM@F@@@G@Pfghgf@dfgdfg.com@H@J11.01.1980@JA@A@@IA@C@Fabc123";
// if(Math.round(Math.random()*2) == 1){
// regpak = regpak.replace("@E@AM", "@E@AF");
// }
regpak = regpak.replace("1000118001270012900121001", genfig());
String uname = getUsername();
regpak = regpak.replace("@Euname", Encoding.encodeB64(uname.length(), 2) + uname);
writePacket(out, regpak);
writePacket(out, "@D@Au@Fabc123".replace("@Au", Encoding.encodeB64(uname.length(), 2) + uname));
writePacket(out, "@U5");
while(true){
Thread.sleep(750 + Math.round(Math.random()*750));
switch((int)Math.round(Math.random()*15)){
case 3:{
writePacket(out,Encoding.encodeB64(75, 2) + Encoding.encodeB64((int)Math.round(Math.random()*15), 2)+ Encoding.encodeB64((int)Math.round(Math.random()*15), 2));
//AK@H@I
break;
}
case 5:{
writePacket(out, "@w@QI'M AN END-USER! ");
break;
}
}
}
} catch (InterruptedException ex) {
Logger.getLogger(Bot.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnknownHostException ex) {
Logger.getLogger(Bot.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Bot.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void writePacket(OutputStream out, String regpak) throws IOException {
out.write((Encoding.encodeB64(regpak.length(), 3) + regpak).getBytes());
}
private String genfig() {
//String fig = "1000118001270012900121001";
String fig = randma();
fig += "0011800127";
fig += randma();
fig += "129";
fig += randma();
fig += "12";
fig += String.valueOf(Math.round(Math.random()*9));
fig += "00";
fig += String.valueOf(Math.round(Math.random()*9));
return fig;
}
private String randma() {
int e = (int) Math.round(Math.random()*30);
String s = String.valueOf(e);
if(s.length() != 2){
if(s.length() == 1){
s = "0" + s;
}else{
s = "15";
}
}
return s;
}
private String randm() {
int e = (int) Math.round(Math.random()*99);
String s = String.valueOf(e);
if(s.length() != 3){
if(s.length() == 1){
s = "00" + s;
}else
if(s.length() == 2){
s = "0" + s;
}else{
s = "007";
}
}
return s;
}
}).start();
}
boolean valid = true;
boolean isValid() {
return valid;
}
}
It just registeres, logs in, goes to a set room, then randomly walks and talks. It is fairly simple, and yes at this point it would be exploitable, but as I've pointed out earier, this is only about a month old.
In short: Yes, the server does have some problems, but nothing we don't plan on fixing. Nothing is perfect from day 1. You may want to take note of the "Development" tag on this thread.