Jump to content

Join our Slack

Talk to other users and have a great time
Slack Server

Welcome to our Community

Click here to get your Exiled Bot license
Donation Store
Sign in to follow this  
philatio

User customizable scripting

Recommended Posts

Ok, so you're asking yourself.  What does he mean by scripting? Well, I pretty much grew up with botting games, before they were simple "tick this box" to do something. From actool/skunkworks, to mmbot (and derivatives), also extensively with d2nt/d2bs.

 

What I'd like to see with this project is the ability to write my own bot behavior, instead of the current "one size fits all". For instance, here is a snippet from a d2nt script (with comments to show what its doing)

function NTMain()
{
	Include("libs/common/NTCommon.ntl");
	NTC_IncludeLibs();
	NTC_IncludeConfig("NTBot/char_configs"); // various dependancies to load in this section 

	NT_LoadConfig();
	NTSI_LoadNIPFiles("NTBot/item_configs");

	NTA_Initialize();

	if(!NTTM_CheckAct())
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");  /// This section makes the bot return to town
		return;							    // if it was in the field from a previous script
	}

	NTTMGR_TownManager();  // Do town functions i.e. stashing selling etc

	if(!NTTM_TownMove("waypoint"))
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()"); // move to waypoint
		return;
	}

	if(!NTM_TakeWaypoint(44))
	{
		NTC_SendMsgToScript("NTBotGame.ntj", "NTM_TakeWaypoint()");  // take waypoint 44, this is lost city wp in d2, i believe
		return;
	}

	NTP_DoPrecast(true); // buffs
        
        if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 751)) 
        { 
                NTC_SendMsgToScript("NTBotGame.ntj", "NTM_MoveToPresetUnit()"); // move to a specific unique monster though
                return;                                                         // this is not possible with eb at this point
        }

        if(NTA_KillMonster(GetLocaleString(2886)))  // obvious
	{
		if(NTConfig_ClearPosition)
			NTA_ClearPosition();     /// after killing the intended mob, clear any trash in the immediate area

		NTSI_PickItems();          /// obvious
	}

	NTC_SendMsgToScript("NTBotGame.ntj", "NTA_ClearLevel()"); // Clear the rest of the zone, though this line could be commented to skip that behavior
	
	NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}

So, as you can see, behavior can be fine-tuned to the end users liking. Pretty much everything should be scripted, such as (in this case) NTTMGR_TownManager could be opened up and the in-town behavior changed.

 

I feel this would benefit both the devs and users, as it would allow the devs to only focus on the core and the community could write alot of the other functions themselves.

 

Let me know what ya think.

Phil

Edited by philatio
  • Upvote 1

Share this post


Link to post
Share on other sites

Just thought Id bump this back up.

 

Still think it would make the bot alot more functional and make Alk's job alot easier. I.E. He wouldnt have to fine tune everything to "try" and make it work sufficiently for everyone. People could fix minor issues with a simple edit. Many of the day to day complaints I always see could be handled by the community.

 

Even the ability to write plugins that could essentially pause the bot, yet still have access to core functions, would be amazing. This is one thing that eb's competitors have a leg up on.

 

Anyhow, good luck and may rng be always in your favor.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...