Jump to content

GTS: website research


Recommended Posts

  • Replies 652
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

DOWNLOAD:

HyperGTS 1.01

is a GTS-Server with included DNS written in C#. You will need a PC with Windows and the Microsoft .net-Framework to run the application.

HyperGTS_Screenshot_small.png

Features:

  • A graphical user interface :biggrin:
  • Included DNS-Server, so no additional Software needed
  • Send a .pkm to a game
  • send all pkm from a folder to a game
  • receive pokemon from a game and save it as .pkm
  • send the PKMN that has been received (nice for cloning ;) )
  • Sourcecode included - feel free to read and use it - but be warned: it is a little bit messy

Thanks to all users that have posted their results and sourcecodes in this thread. You are great!

PS: Wouldn't it be better to create a thread where all GTS-Applications can be posted so it is easier to find the download?

Download HyperGTS now:

HyperGTS_1.01.rar

HyperGTS_Screenshot_small.png.22830973ef

HyperGTS_1.01.rar

Edited by madaruwode
Link to comment
Share on other sites

woah, this sounds really good. ill let you know if it works for me. tyvm:biggrin:

HyperGTS

PS: Wouldn't it be better to create a thread where all GTS-Applications can be posted so it is easier to find the download?

couldn't agree more haha

Link to comment
Share on other sites

which IP should be in the hyperGTS? My DS' IP(10 higher than the computer's lan IP), or one of my computer's IPs? (when i look up my IP address on a website it gives me one, and then when i see the website for my router it shows the LAN IP, which is a completely different number)

Link to comment
Share on other sites

HyperGTS

is a GTS-Server with included DNS written in C#. You will need a PC with Windows and the Microsoft .net-Framework to run the application.

[ATTACH]4472[/ATTACH]

Features:

  • A graphical user interface :biggrin:
  • Included DNS-Server, so no additional Software needed
  • Send a .pkm to a game
  • send all pkm from a folder to a game
  • receive pokemon from a game and save it as .pkm
  • send the PKMN that has been received (nice for cloning ;) )
  • Sourcecode included - feel free to read and use it - but be warned: it is a little bit messy

Thanks to all users that have posted their results and sourcecodes in this thread. You are great!

PS: Wouldn't it be better to create a thread where all GTS-Applications can be posted so it is easier to find the download?

Thanks for this, works great so far. The only problem I have with it is that I can't expand the window at all, nothing major just kind of annoying. Lol

EDIT: Oh and the Start GTS button doesn't turn into a Stop GTS button like the DNS button does.

Link to comment
Share on other sites

Thx for your replies, all suggestions how to make HyperGTS better are welcome!

The IP has to be the one of the computer on which HyperGTS is running.

I have made the window fixed size because I havn't configured everything to expand like it should and it wasn't my highest priority to implement it. I hope this is ok for you :)

The GTS isn't stoppable because I havn't managed to stop the backgroundworker when it is waiting for a connection... I hope I can fix this soon, until then you will have to restart the whole app, sorry.

Link to comment
Share on other sites

Thx for your replies, all suggestions how to make HyperGTS better are welcome!

The IP has to be the one of the computer on which HyperGTS is running.

I have made the window fixed size because I havn't configured everything to expand like it should and it wasn't my highest priority to implement it. I hope this is ok for you :)

The GTS isn't stoppable because I havn't managed to stop the backgroundworker when it is waiting for a connection... I hope I can fix this soon, until then you will have to restart the whole app, sorry.

Hi, fellow C# developer. :)

It'd be easier if I could talk to you on MSN or IRC (something live) so you can respond instantly.. but..

Here, try this as a solution to 'havn't managed to stop the backgroundworker when it is waiting for a connection'.

private void BGW_GTS_DoWork(object sender, DoWorkEventArgs e)
       {
           BGW_GTS.ReportProgress(1, "GTS started...");
           Socket serv = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
           serv.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
           try
           {
               serv.Bind(new IPEndPoint(IPAddress.Any, 80));
           }
           catch (System.Net.Sockets.SocketException)
           {
               BGW_GTS.ReportProgress(1, "Server could not be started (Port 80 already used)");
               return;
           }

           serv.Listen(50);
           List<Socket> clients = new List<Socket>();

           SocketAsyncEventArgs saea = new SocketAsyncEventArgs();
           bool readyToContinueAccept = true;
           EventHandler<SocketAsyncEventArgs> clientAccepted = (sendr, eventargs) => // True Async request handling.
                                                                   {
                                                                       readyToContinueAccept = true; // AcceptAsync finished.
                                                                       if (eventargs.SocketError != SocketError.Success)
                                                                           return; // did the AcceptAsync succeed? if not, quit.
                                                                       Socket client = eventargs.AcceptSocket; // get the new Socket (duh)

                                                                       ThreadPool.QueueUserWorkItem(si =>
                                                                                                        {
                                                                                                            try
                                                                                                            {
                                                                                                                clients.Add(client);
                                                                                                                asyncReq(client);

                                                                                                            } catch
                                                                                                            {

                                                                                                            } finally
                                                                                                            {
                                                                                                                if (clients.Contains(client))
                                                                                                                    clients.Remove(client);
                                                                                                                client.Close();
                                                                                                            }
                                                                                                        });

                                                                   };
           saea.Completed += clientAccepted;
           Action continueAccept = () =>
                                       {
                                           saea.AcceptSocket = null;
                                           if (!serv.AcceptAsync(saea))
                                           {   // AcceptAsync completed synchronously, call ClientAccepted
                                               clientAccepted(null, saea);
                                           }
                                       };
           while(true)
           {
               if(!BGW_GTS.CancellationPending)
               {

                   if(readyToContinueAccept) // has the previous AcceptAsync finished?
                   {
                       // if yes, launch another
                       readyToContinueAccept = false;
                       continueAccept();
                   } // if not, wait 30 ms and check again

               } else
               {
                   // cancellation pending
                   break; // let's quit
               }

               Thread.Sleep(30);
           }
           foreach(Socket client in clients)
           {
               if(client.Connected) client.Close();
           }
           serv.Close(); // this will call clientAccepted with saea.SocketError != SocketError.Success. It will do nothing.

           /*while (!BGW_GTS.CancellationPending)
           {
               SocketAsyncEventArgs saea = new SocketAsyncEventArgs();
               saea.
               serv.AcceptAsync(new SocketAsyncEventArgs {})
               Socket client = serv.Accept();

               try
               {

                   clients.Add(client);
                   asyncReq(client);
               }
               catch
               {

               } finally
               {
                   if(clients.Contains(client)) clients.Remove(client);
                   client.Close(); // Because asyncReq just sends the response, and then returns, so might as well close the socket?
               }
           }*/


       }

Link to comment
Share on other sites

How does the cloning work on this anyway?

Start HyperGTS with "Send Pokemon" not checked, and "Reject Pokemon" and "Send after receive" checked. Then go to the GTS, upload a Pokemon (the game will say you can't send the Pokemon to the GTS but ist is already on your computer), exit the GTS and enter again, you will receive the Pokemon you have uploaded before. You can exit and enter as often as you want, you will receive the Pokemon every time you enter. If you want to clone another Pokemon just upload it and from now on this Pokemon will be sent to you.

And are you able to make it create a .txt log file?

Sure this will be possible but why do you need it? HyperGTS is made for just a single user at once, so I havn't implemented a logfile.

Link to comment
Share on other sites

I wish this let us bypass the Classic/Premier Ribbon limit.

And this is the first time I find a program with an Help function that actually helps.

Link to comment
Share on other sites

No GTS server can do that, as it is checked by the game before sending the Pokémon.

I wonder if the official server also checks it server-side though, in case the check were disabled on the client side. I'm sure it would be quite possible to disable with a code or ROM hack.

Link to comment
Share on other sites

Yeah, I think it would be possible, but I'm not good enough with all this ASM stuff.

The server can reject the Pokémon by responding 0x000C to post.asp and exchange.asp requests, but I don't know what it rejects actually.

Maybe Pokémon that are obviously hacked, and maybe some events too.

Link to comment
Share on other sites

HyperGTS 1.01

is a GTS-Server with included DNS written in C#. You will need a PC with Windows and the Microsoft .net-Framework to run the application.

[ATTACH]4472[/ATTACH]

Features:

  • A graphical user interface :biggrin:
  • Included DNS-Server, so no additional Software needed
  • Send a .pkm to a game
  • send all pkm from a folder to a game
  • receive pokemon from a game and save it as .pkm
  • send the PKMN that has been received (nice for cloning ;) )
  • Sourcecode included - feel free to read and use it - but be warned: it is a little bit messy

Thanks to all users that have posted their results and sourcecodes in this thread. You are great!

PS: Wouldn't it be better to create a thread where all GTS-Applications can be posted so it is easier to find the download?

WOW Thankyou SOOOO Much. This app is like WOW. Its Awesome. now i can start a new game AND keep all my old pokemon. Thanks soo much for this. all we need is a guide on how to set all of this up from scratch so my friends can use it.

Link to comment
Share on other sites

Is it possible to block certain IPs from connecting?

If you are talking about HyperGTS: It would be possible but it is made for a single user so why do you want that?

all we need is a guide on how to set all of this up from scratch so my friends can use it.

What exactly do you need to know?

Link to comment
Share on other sites

If you are talking about HyperGTS: It would be possible but it is made for a single user so why do you want that?

What exactly do you need to know?

Like I know how to set your the Python gts thing and port forward 80 (and 53?). Is this the same thing except download and use this?

Link to comment
Share on other sites

I have been using sendpkm (LordLandon's one) should I 'upgrade' to HyperGTS?

I didn't use LordLandon's sendpkm, but I will say that since madaruwode's HyperGTS builds on sendpkm and others, it is a very worthwhile install. I love it. Greatly simplifies so many things!

(In my experience, it didn't play well with Skype until I told Skype to stop hogging port 80).

Not sure if madaruwode is taking suggestions, but the ability to configure the port and to set the "working directory" or some such would be handy.

And kudos to everyone who contributed, absolutely love it!

Link to comment
Share on other sites

Not sure if madaruwode is taking suggestions, but the ability to configure the port and to set the "working directory" or some such would be handy.

Sure I do :)

Which port do you want to configure? If the GTS isn't running on port 80 it won't work because the Game only connects to port 80.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...