Jump to content

Cappuccino

Seller
  • Posts

    47
  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    0%

Posts posted by Cappuccino

  1. 15 hours ago, Mimic said:

    May i can bring some light in here about Aeldra.io


    First of all [SA]Lee is gone since 3 weeks. He would have been mainly responsible for advertising and marketing (Spambots, hire streamer etc.)
    Same goes for the hungarian DEV, also gone since several weeks (his telegram account is deleted). 
    In terms which files they have/had, its actually hard to tell. They claim to have the data from around June 2023. 
    I could see a few things regarding this claim. But the big problem is that they were only ever fragments. These people don't have complete data sets to bring Aeldra back online in the near future.

    Now we come to [SA]Raphael himself or better known as [SA]CryTek (he had some newschool server, which were always online for a few months). 
    I don't see any leadership quality from him to be able to run a server permanently. There was a trello list, but on the whole everything was just totally disorganised and generally very unprofessional.
    In contrast, the website was actually already completely finished and made a good impression.

    Trello: https://metin2.download/picture/agxP5qVPSAUXqCqqCXnOLMH0Xbe8CkNR/.png
    Website: https://metin2.download/picture/P8h71daczvT4KbHz9Un6Z9qxpuuER6i9/.jpg

    Current state: DEV gone, one of the SA gone, website offline since 3 weeks, no news at all wether via Discord or Telegram. I am pretty sure that the project is dead.

    Have a good one. 

    Thank you, I made the website for them and worked a lot around the clock to finish it quickly and add all the requested features. It is an heavily modified version of my CMS (https://metin2.dev/marketplace/m2-lonvel-cms-v2-automatic-payments-itemshop-single-page-app-r109/).

    [SA]CryTek wanted it to be 100% identical to the old Aeldra website with some improvements. In the back office there is a lof of stuff to administrate the server for Game Admin and Game Masters.

    Unfortunately, he told me he had some problem and disappeared. Last time I heard him was before xmas. He still owes me money for some features I delivered and haven't been paid yet. At this point I don't know if they will be ever paid, but I will consider carefully what to do with Aeldra website.

    I'm am very patient and I am sure [SA]CryTek has a valid reason for disappearing. He told me he had some personal problem but I would have liked to receive even a message on Discord about what is happening.

     

  2. 22 hours ago, Fregion said:

    @TMP4

    @Braxy

    I am aware of the legal issues and refund cases, I am currently working on another donation platform contacting several providers in order to reach a good solution. At the moment I can't give much information but as soon as I have enough information the project will be announced. All with the intention of being able to help communities with this online transaction problem they are currently facing.

     

  3. On 3/7/2021 at 10:21 PM, boloca said:

    Would anyone know if it is possible to fix this:

    When a player opens an NPC or makes a trade and then teleports to a map where he asks for a passport to enter, the player is not teleported but the item is consumed.

     

    If you know how to fix it could you help me?

     

    when 9003.chat."Warp me" begin
    
    	if not pc.can_warp() then
      		say("Please wait 10 seconds before teleporting")
      		return
      	end
    
    	say("You need this item...")
    	rest of your quest here...
    end

     

    You need to use the function pc.can_warp()

  4. 12 hours ago, Coutter said:

    Hi, here is my question: How set a notice when a game flag is changed?

    E.g: 

     

    quest test1 begin
        state start begin
            when 8027.kill with game.get_event_flag("event_test1_drop") == 1

     

    when that "event_test1_drop" == 1 some notice pop up on global chat, like: "Event Test1 is now enabled..." 

     

     

    You can use the lua function notice_all

     

    notice_all("message")

     

     

     

     

    • Love 1
  5. 17 hours ago, Jimmermania said:

    Hello community.

    I have a problem with absorb on acce system.

    If you see this image below, they player gets only the first bonus of the sash item (on the image is Defense) . It doesnt read the rest 3 bonuses.

    Any ideas?

    https://metin2.download/picture/65iv3HLNYB02k6M2AeyKfpoF97AN636t/.png

    Are you using martysama files?

     

    Here is the fix: 

     

    • Think 1
    • Love 1
  6. On 2/28/2021 at 11:25 PM, PACI said:

    Hello.

     

    I reckon important to always log datetimes of actions. The table you provide there could use an account ID field (so you can basically track the account that was HWID banned) and a datetime row (for verification purposes if ever needed). Maybe then limit the rows of that query to 1, since one single result is plenty enough for this verification to do its job.

    This is considering you have a game management platform (adminpage) where you (or your teammates) can trigger these type of actions.

     

    It's also important, the moment of the ban to update the state of the affected account to 'BLOCK' instead of simply adding its hwid into a table, or you might just end up having this player use other methods to enter the game under this (supposedly) locked account.

     

    For the rest, you should probably only update the player's HWID once it reaches the handshake phase, because there is just no need to do so beforehand, especially when (during server launches or restarts) a lot of people tend to connect all at once.

     

    These are only friendly advises that in my opinion are important to consider for this particular addition. But the content OP proposed is definitely a start!

     

    Good share!

     

    I know that it can be improved. I didn't put much effort in it and C++ isn't my cup of tea.

    Everyone is free to take this code as a working base and improve it according to his needs :)

    • Metin2 Dev 1
  7. This hwid ban works in a quite simple way and I'm pretty sure that this isn't the best way to get HWID from a computer, but nonetheless it works :)

    It was released a long time ago by someone on this forum, but that solution was awful. So I reimplemented it only in c++ without the need of an external exe and to add python code.

     

    Client

     

    File: packet.h

    Find

    typedef struct command_login3
    {
        BYTE	header;
        char	name[ID_MAX_NUM + 1];
        char	pwd[PASS_MAX_NUM + 1];
        DWORD	adwClientKey[4];
    } TPacketCGLogin3;

     

    Replace with

    typedef struct command_login3
    {
        BYTE	header;
        char	name[ID_MAX_NUM + 1];
        char	pwd[PASS_MAX_NUM + 1];
        DWORD	adwClientKey[4];
    	char	hwid[255]; // <-----
    } TPacketCGLogin3;

     

    File: AccountConnector.cpp

    Find

    TPacketCGLogin3 LoginPacket;
    LoginPacket.header = HEADER_CG_LOGIN3;
    
    strncpy(LoginPacket.name, m_strID.c_str(), ID_MAX_NUM);
    strncpy(LoginPacket.pwd, m_strPassword.c_str(), PASS_MAX_NUM);
    LoginPacket.name[ID_MAX_NUM] = '\0';
    LoginPacket.pwd[PASS_MAX_NUM] = '\0';

    Add under

    HW_PROFILE_INFO hwProfileInfo;
    GetCurrentHwProfile(&hwProfileInfo);
    Tracef("hwid %s\n", hwProfileInfo.szHwProfileGuid);
    strncpy(LoginPacket.hwid, hwProfileInfo.szHwProfileGuid, 254);

     

     

    Server

     

     File: packet.h

    Find

    typedef struct command_login3
    {
    	BYTE	header;
    	char	login[LOGIN_MAX_LEN + 1];
    	char	passwd[PASSWD_MAX_LEN + 1];
    	DWORD	adwClientKey[4];
    } TPacketCGLogin3;

     

    Replace with

    typedef struct command_login3
    {
    	BYTE	header;
    	char	login[LOGIN_MAX_LEN + 1];
    	char	passwd[PASSWD_MAX_LEN + 1];
    	DWORD	adwClientKey[4];
    	char	hwid[255];
    } TPacketCGLogin3;

     

    File: input_auth.cpp

    Find

     

    	char login[LOGIN_MAX_LEN + 1];
    	trim_and_lower(pinfo->login, login, sizeof(login));
    
    	char passwd[PASSWD_MAX_LEN + 1];
    	strlcpy(passwd, pinfo->passwd, sizeof(passwd));

     

    add under 

    	char hwid[255];
    	strlcpy(hwid, pinfo->hwid, sizeof(hwid));

     

    Find

    	char szPasswd[PASSWD_MAX_LEN * 2 + 1];
    	DBManager::instance().EscapeString(szPasswd, sizeof(szPasswd), passwd, strlen(passwd));
    
    	char szLogin[LOGIN_MAX_LEN * 2 + 1];
    	DBManager::instance().EscapeString(szLogin, sizeof(szLogin), login, strlen(login));

    Add under

    	char szHWID[255];
    	DBManager::instance().EscapeString(szHWID, sizeof(szHWID), hwid, strlen(hwid));
    
    // ENABLE_HWID_BAN
    	// update client hwid
    	// DBManager::instance().DirectQuery("UPDATE account.account SET hwid = '%s' WHERE login = '%s'", szHWID, szLogin);
    	std::auto_ptr<SQLMsg> pUpdateMsg("UPDATE account.account SET hwid = '%s' WHERE login = '%s'", szHWID, szLogin);
    
    	// check if client hwid is banned
    	std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT * FROM account.hwid_ban WHERE hwid = '%s'", szHWID));
    
    	if (pMsg->Get()->uiNumRows > 0)
    	{
    		LoginFailure(d, "BLOCK");
    		printf("Account %s HWID ban - tried to login\n", szLogin);
    		sys_log(0, "Account %s HWID ban - tried to login\n", szLogin);
    		return;
    	}
    // end HWID BAN

     

     

    Database

    Add a new column called "hwid" (varchar 255) to table account.

    Create a new table in the database "account" and call it hwid_ban. Inside this table put a column called "hwid".

     

     

    • Metin2 Dev 2
    • Think 1
    • Good 3
    • Love 4
  8. 2 minutes ago, martysama0134 said:

    There's an even simpler solution if the cores crash: a telegram bot (probably a discord one is fine as well)

    I did something like this with a single-line c++ telegram bot:

    ENaUbU5.png

    The code for the game to handle the abort signal is just:

    
    
    void emergency_sig(int32_t sig)
    {
    	if (sig == SIGSEGV)
    	{
    		tgfeed::CrashRpt();
    		abort();
    	}
    }
    // somewhere at the top inside int start(int argc, char **argv)
    signal(SIGSEGV, emergency_sig);

    in game/src/main.cpp

     

    From HentrixTools you can also get information about memory usage, cpu  usage, network usage etc... and log them (but you have to configure a php deamon for freebsd, however instructions are on hentrixtools website :P )

     

    So you can also monitor server resources usage which is nice :)

     

    280257Immagine-2021-02-28-130243.jpg

    • Metin2 Dev 1
  9. This is a pretty simple tutorial in which I'll show you how to get notified via email (or sms, but this feature is not free) when your server goes offline or is not reachable for some reason.

     

    I personally suggest and use HetrixTools, which will be also used in this tutorial.

     

    Step 1)

    First of all, you want to create an account on HetrixTools website.

     

    Step 2)

    After you have logged in, from the main menu click on Tools -> Uptime montitors.

    spacer.png

     

    and then click on Add monitor to add a new server.

    spacer.png

     

    Step 3)

    A window will pop up. As monitor type select "Ping/Service monitor".

    Then fill up the form as follows:

    spacer.png

     

    In the "Monitor from" section you have to select 4 locations. Choose them according to the continent where your server is hosted.

    For example, my server is hosted in France and I picked these four locations:

    285132Immagine-2021-02-28-115128.jpg

     

    Then click on "show advanced settings" and change "Number of tries" to 1 (or 2) and finally click on "Add monitor".

    285331Immagine-2021-02-28-115324.jpg

     

     

     

    Now you will be notified if your server goes offline and you will have your personal server status page with detailed information :)

    • Metin2 Dev 1
    • Good 1
    • Love 1
    • Love 3
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.