Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Własny launcher Minecraft - logowanie premium


Rekomendowane odpowiedzi

Opublikowano

Witajcie,

 

Chcę zrobić własny launcher Minecrafta z logowaniem dla premium i no-premium. Tutaj podaje kod, który w tej chwili mam:

 

 

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim launch As String

launch = "start javaw -Xmx" & TextBox3.Text & "m -Djava.library.path=%APPDATA%/.minecraft/bin/natives -cp %APPDATA%/.minecraft/bin/minecraft.jar;%APPDATA%/.minecraft/bin/jinput.jar;%APPDATA%/.minecraft/bin/lwjgl.jar;%APPDATA%/.minecraft/bin/lwjgl_util.jar net.minecraft.client.Minecraft "


Shell("cmd.exe /c" & launch & TextBox1.Text)
Me.Close()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click



Dim Cermin989 As String = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), ".minecraft\bin\minecraft.jar")



If My.Computer.FileSystem.FileExists(Cermin989) Then
My.Computer.FileSystem.DeleteFile(Cermin989)
My.Computer.Network.DownloadFile("http://s3.amazonaws.com/MinecraftDownload/minecraft.jar", Cermin989)
Else
My.Computer.Network.DownloadFile("http://s3.amazonaws.com/MinecraftDownload/minecraft.jar", Cermin989)
End If

End Sub
End Class

 

 

No-premium już mam dodane, ale jaki kod jeszcze dodać do logowania premium? Robię w Visual Basic 2010.

  • 1 miesiąc temu...
Opublikowano

To co masz to zwykły gotowiec, jeśli chodzi o logowanie premium użyj WebRequest, przykład C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
//Additional includes
using System.IO;
using System.Net;
using System.Diagnostics;
using System.Windows.Forms;
 
namespace MCLoginLib
{
    public class Login
    {
        /// <summary>
        /// Used to generate a session with login.minecraft.net for online use only
        /// </summary>
        /// <param name="username">The player's username</param>
        /// <param name="password">The player's password</param>
        /// <param name="clientVer">The client version (look here http://wiki.vg/Session)</param>
        /// <returns>Returns 5 values split by ":" Current Version : Download Ticket : Username : Session ID : UID</returns>
        public static string generateSession(string username, string password, int clientVer)
        {
            string netResponse = httpGET("https://login.minecraft.net?user=" + username + "&password=" + password + "&version=" + clientVer);
            return netResponse;
        }
 
        public static string httpGET(string URI)
        {
            WebRequest req = WebRequest.Create(URI);
            WebResponse resp = req.GetResponse();
            StreamReader sr = new StreamReader(resp.GetResponseStream());
            return sr.ReadToEnd().Trim();
        }
 
        /// <summary>
        /// Used to start minecraft with certain arguments
        /// </summary>
        /// <param name="mode">True for online and false for offline</param>
        /// <param name="ramMin">Equivalent to the -Xms argument</param>
        /// <param name="ramMax">Equivalent to the -Xmx argument</param>
        /// <param name="username">The player's username</param>
        /// <param name="sessionID">The session id generated from login.minecraft.net</param>
        /// <param name="debug">True for console boot and false for no console</param>
        public static void startMinecraft(bool mode, int ramMin, int ramMax, string username, string sessionID, bool debug)
        {
            string appPath = Path.GetDirectoryName(Application.ExecutablePath) + @"\";
            string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\";
            Process proc = new Process();
            if (debug == true)
            {
                proc.StartInfo.FileName = "java";
            }
            else
            {
                proc.StartInfo.FileName = "javaw";
            }
 
            //Online and offline modes
            if (mode == true)
            {
                proc.StartInfo.Arguments = "-Xms" + ramMin + "M -Xmx" + ramMax + "M -Djava.library.path=" + appData + ".minecraft/bin/natives -cp " + appData + ".minecraft/bin/minecraft.jar;" + appData + ".minecraft/bin/jinput.jar;" + appData + ".minecraft/bin/lwjgl.jar;" + appData + ".minecraft/bin/lwjgl_util.jar net.minecraft.client.Minecraft " + username + " " + sessionID;
            }
            else
            {
                proc.StartInfo.Arguments = "-Xms" + ramMin + "M -Xmx" + ramMax + "M -Djava.library.path=" + appData + ".minecraft/bin/natives -cp " + appData + ".minecraft/bin/minecraft.jar;" + appData + ".minecraft/bin/jinput.jar;" + appData + ".minecraft/bin/lwjgl.jar;" + appData + ".minecraft/bin/lwjgl_util.jar net.minecraft.client.Minecraft " + username;
            }
            proc.Start();
        }
    }
}

 

No i właściwe logowanie (do buttona):

 

Console.Title = "Logujemy się...";
Console.WriteLine("Login:");
string user = Console.ReadLine();
Console.WriteLine("Hasło:");
string pass = Console.ReadLine();
string response = MCLoginLib.Login.generateSession(user, pass, 13);
string[] split = response.Split(':');
string sessionID = split[3];
MCLoginLib.Login.startMinecraft(true, 256, 1024, user, sessionID, false);
Console.ReadKey();

pamiętaj też że niektórzy się logują emailem, zatem trzeba będzie pobrać nick gracza, użyj tego:

 

string sessInfo = MCLoginLib.generateSession(username, password)
string[] info = sessInfo.Split(':');
string username = info[2];

 

 

Całość możesz przerzucić na VB.NET używając tego:

 

 

 

Może gotowiec to to nie jest, ale wzoruj się na tym, wszystko działa prawidłowo. Pamiętaj aby dodać komunikaty typu "Bad Login".

apple.png

Opublikowano

Chodzi po prostu o uzyskanie sesji login.minecraft.net, a potem podanie tego w argumencie do klienta.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...