• This is a read only backup of the old Emudevs forum. If you want to have anything removed, please message me on Discord: KittyKaev

[SOLVED] Custom Script OnFirstLogin

Status
Not open for further replies.

Intouch

Respected Member
Hello!

Can someone tell me how I can make script like this:

It should be with OnFirstLogin function. It should check character realmid number and do following:

If character is from realmid 1 then insert his guid id, char name, and number 1

SQL Table example:

Code:
DROP TABLE IF EXISTS `realm_members`;
CREATE TABLE `realm_members` (
  `guid` int(10) unsigned NOT NULL,
  `player_name` longtext NOT NULL,
  `number` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

else if char is from realmid 2 then insert his guid id, char name, but instead of adding number 1 add number 2

then if he's from realmid 3 do same things just add number 3... etc

With respect Intouch.
 

Rochet2

Moderator / Eluna Dev
Quick question .. what do you need this information for?

You are going to want to use PlayerScript with this hook:
https://github.com/TrinityCore/TrinityCore/blob/6.x/src/server/game/Scripting/ScriptMgr.h#L746
and check the firstlogin param.

The global variable realmID holds the realmid, include world.h to get access to it if needed.

You can use normal SQL with printf style formatting http://www.cplusplus.com/reference/cstdio/printf/
You likely want the DB in auth database, so use LoginDatabase.PExecute("SQL here");
 

Intouch

Respected Member
I guess it should be something like this, but still I don't know to setup some checks such as realmid check and INSERT realm_member sql code.

I marked some parts which need to be done with red color, check it out please:

Code:
class realm_members : public PlayerScript
{
public:
    realm_members(): PlayerScript("realm_members") {}
 
	void OnLogin(Player* player, bool firstLogin)
{
        if [COLOR="#FF0000"]HOW TO SETUP REALMID 1 HERE[/COLOR] [COLOR="#008000"]// so it should to work like: if char have realmid 1 then....[/COLOR]
        {

	        LoginDatabase.PExecute("INSERT INTO realm_members [COLOR="#FF0000"]WHAT TO TYPE HERE 1#[/COLOR]" [COLOR="#008000"]// add him into realm_members table[/COLOR]
		}
        else if [COLOR="#FF0000"]HOW TO SETUP REALMID 2 HERE[/COLOR]
        {

	        LoginDatabase.PExecute("INSERT INTO realm_members [COLOR="#FF0000"]WHAT TO TYPE HERE 2#[/COLOR]"
		}
        else if [COLOR="#FF0000"]HOW TO SETUP REALMID 3 HERE[/COLOR]
        {

	        LoginDatabase.PExecute("INSERT INTO realm_members [COLOR="#FF0000"]WHAT TO TYPE HERE 3#[/COLOR]"
		}
}
};
 
void AddSC_realm_members()
{
    new realm_members();
}
 
Last edited:

Rochet2

Moderator / Eluna Dev
Code:
#include "ScriptPCH.h"
#include "World.h"

class realm_members : public PlayerScript
{
public:
    realm_members() : PlayerScript("realm_members") { }

    void OnLogin(Player* player, bool firstLogin) override
    {
        // stop if this is not the first login attempt
        if (!firstLogin)
            return;

        LoginDatabase.PExecute("INSERT INTO realm_members (`guid`, `player_name`, `number`) VALUES (%u, \"%s\", %u)", player->GetGUIDLow(), player->GetName().c_str(), realmID);
    }
};

void AddSC_realm_members()
{
    new realm_members();
}
 
Status
Not open for further replies.
Top