Jump to content
  • 1

Battleground multiplayer whith @evilclone


Happy2018

Question


  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  5
  • Reputation:   1
  • Joined:  12/30/17
  • Last Seen:  

Hi, I would like to play battleground and Woe in rathena/offline/local host, renewal 3RD jobs with my brother and whith evilclones.

For example : we both joined in battleground, each in a different team  with 10 or more evil clones each team.

if any kind soul can give a light,  we would be grateful. Thanks.

 

 

 

 

Edited by Happy2018
  • Love 1
Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  38
  • Topics Per Day:  0.02
  • Content Count:  83
  • Reputation:   3
  • Joined:  10/22/17
  • Last Seen:  

Hi

I'm not an expert but I found this very helpful for local server

If you follow the steps carefully you'll your local rAthena working :) 

Also, to create an evil clone you simply need to search for the command in /doc/atcommands.txt

@evilclone player/ID

WoE and Battleground scripts,etc come along with rAthena 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  5
  • Reputation:   1
  • Joined:  12/30/17
  • Last Seen:  

On 30/12/2017 at 8:16 PM, Rolf said:

Hi

I'm not an expert but I found this very helpful for local server

If you follow the steps carefully you'll your local rAthena working :) 

Also, to create an evil clone you simply need to search for the command in /doc/atcommands.txt


@evilclone player/ID

WoE and Battleground scripts,etc come along with rAthena 

Thanks for answering.  I already have this Client installed and working fine.  

When I invoke @evilclone he only attacks and does not use skills.

I wanted to play Battleground and Woe like as a Counter Strike mod offline/bots. When they die they come back automatically and healed, as if it were a player.

Edited by Happy2018
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

now THIS is a good idea for a battleground script

bg_pvp_point_clone.txt <-- sketch only

the 1st thing I notice is the battleground monsters follows you around if its your team, and it seems like official feature
and the clones, well can always use mob_avail.txt to get a mob_ID to display their character cloth properly
I just using lighthalzen monster out of laziness

EDIT: forgot to add nomobloot mapflag

@Happy2018

EDIT2: maybe I should make another one with setunitdata script command and see how well rathena mob controller system can handle

Edited by AnnieRuru
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  4
  • Topics Per Day:  0.00
  • Content Count:  303
  • Reputation:   117
  • Joined:  12/10/16
  • Last Seen:  

Nice script. Wouldn't you mind a little bit of editing? I don't even know if this will work or not, but I added a few setunitdatas

// https://rathena.org/board/topic/114033-battleground-multiplayer-whith-evilclone/

function	script	F_ShuffleNumbers	{
	deletearray getarg(2);
	.@static = getarg(0);
	.@range = getarg(1) +1 - .@static;
	.@count = getarg(3, .@range);
	if (.@range <= 0 || .@count <= 0)
		return 0;
	if (.@count > .@range)
		.@count = .@range;
	for (.@i = 0; .@i < .@range; ++.@i)
		.@temparray[.@i] = .@i;
	for (.@i = 0; .@i < .@count; ++.@i) {
		.@rand = rand(.@range);
		set getelementofarray( getarg(2), .@i ), .@temparray[.@rand] + .@static;
		.@temparray[.@rand] = .@temparray[--.@range];
	}
	return .@count;
}

prontera,155,185,5	script	bg_pvp_clone	1_F_MARIA,{
	.minplayer2start = 1; // 1vs1
	mes "bg_pvp_clone";
	if ( .start == true ) {
		mes "bg_pvp_clone is on-going";
		close;
	}
	while ( .aid[.@i] != getcharid(3) && .@i < .size ) ++.@i;
	if ( .@i < .size ) {
		mes "You already join the queue.";
		close;
	}
	select "join";
	mes "you have to stick to this map";
	close2;
	.aid[ .size++ ] = getcharid(3);
	for ( .@i = 0; .@i < .size; ++.@i ) {
		if ( !isloggedin( .aid[.@i] ) ) {
			deletearray .aid[.@i], 1;
			--.@i;
			--.size;
		}
		else {
			attachrid .aid[.@i];
			if ( strcharinfo(3) != strnpcinfo(4) ) {
				deletearray .aid[.@i], 1;
				--.@i;
				--.size;
			}
		}
	}
	detachrid;
	if ( .size < .minplayer2start *2 ) {
		announce .size +" players join", bc_npc | bc_area;
		end;
	}
	.start = true;
	.red = bg_create( "bat_c01",53,128, strnpcinfo(0)+"::OnRedQuit", strnpcinfo(0)+"::OnRedDead" );
	.blue = bg_create( "bat_c01",146,56, strnpcinfo(0)+"::OnBlueQuit", strnpcinfo(0)+"::OnBlueDead" );
	callfunc "F_ShuffleNumbers", 0, .size -1, .@r;
	for ( .@i = 0; .@i < .size; ++.@i ) {
		attachrid .aid[ .@r[.@i] ];
		bg_join ( .@i % 2 )? .red : .blue;
	}
	detachrid;
	deletearray .aid;
	.size = 0;
	bg_warp .red, "bat_c03", 53,128;
	bg_warp .blue, "bat_c03", 146,56;
	for ( .@i = 0; .@i < 20; ++.@i ) {
		if (.@i % 10 == 0)
			.@size = bg_get_data( ((.@i < 10) ? .red : .blue), 1 );
		.@player = $@arenamembers[rand(.@size)];
		.@mob = bg_monster( ((.@i < 10) ? .red : .blue), "bat_c03", 0,0, "--ja--", rand(1799,1804), strnpcinfo(0)+"::On"+((.@i < 10) ? "Red" : "Blue")+"CloneKill" );
		setunitdata .@mob,UMOB_SEX,readparam( Sex, .@player);
		setunitdata .@mob,UMOB_CLASS,readparam( Class, .@player);
		setunitdata .@mob,UMOB_HAIRSTYLE,getlook( LOOK_HAIR, .@player);
		setunitdata .@mob,UMOB_HAIRCOLOR,getlook( LOOK_HAIR_COLOR, .@player);
		setunitdata .@mob,UMOB_HEADBOTTOM,getlook( LOOK_HEAD_BOTTOM, .@player);
		setunitdata .@mob,UMOB_HEADMIDDLE,getlook( LOOK_HEAD_MID, .@player);
		setunitdata .@mob,UMOB_HEADTOP,getlook( LOOK_HEAD_TOP, .@player);
		setunitdata .@mob,UMOB_CLOTHCOLOR,getlook( LOOK_CLOTHES_COLOR, .@player);
		setunitdata .@mob,UMOB_SHIELD,getlook( LOOK_SHIELD, .@player);
		setunitdata .@mob,UMOB_WEAPON,getlook( LOOK_WEAPON, .@player);
	}
	sleep 10000; // Match Duration
	if ( .winside == .red || .redscore > .bluescore ) {
		mapannounce "bat_c03", "- Red side Won the match !", bc_map;
		callsub L_reward, .red;
	}
	else if ( .winside == .blue || .bluescore > .redscore ) {
		mapannounce "bat_c03", "- Blue side Won the match !", bc_map;
		callsub L_reward, .blue;
	}
	else
		mapannounce "bat_c03", "Battle end as a draw", bc_map;
	bg_destroy .red;
	bg_destroy .blue;
	mapwarp "bat_c03", "prontera",150,185;
	.redscore = .bluescore = .start = false;
	bg_updatescore "bat_c03", 0, 0;
	end;
L_reward:
	bg_get_data getarg(0), 1;
	for ( .@i = 0; .@i < $@arenamemberscount; ++.@i )
		getitem 501,1, $@arenamembers[.@i];
	return;
OnRedCloneKill: callsub L_CloneKill, .red, .blue, .bluescore, rand(1799,1804), "::OnRedCloneKill";
OnBlueCloneKill: callsub L_CloneKill, .blue, .red, .redscore, rand(1659,1663), "::OnBlueCloneKill";
L_CloneKill:
	.@mob = bg_monster( getarg(0), "bat_c03", 0,0, "--ja--", getarg(3), strnpcinfo(0) + getarg(4) );
	.@size = bg_get_data( getarg(0), 1 );
	.@player = $@arenamembers[rand(.@size)];
	setunitdata .@mob,UMOB_SEX,readparam( Sex, .@player);
	setunitdata .@mob,UMOB_CLASS,readparam( Class, .@player);
	setunitdata .@mob,UMOB_HAIRSTYLE,getlook( LOOK_HAIR, .@player);
	setunitdata .@mob,UMOB_HAIRCOLOR,getlook( LOOK_HAIR_COLOR, .@player);
	setunitdata .@mob,UMOB_HEADBOTTOM,getlook( LOOK_HEAD_BOTTOM, .@player);
	setunitdata .@mob,UMOB_HEADMIDDLE,getlook( LOOK_HEAD_MID, .@player);
	setunitdata .@mob,UMOB_HEADTOP,getlook( LOOK_HEAD_TOP, .@player);
	setunitdata .@mob,UMOB_CLOTHCOLOR,getlook( LOOK_CLOTHES_COLOR, .@player);
	setunitdata .@mob,UMOB_SHIELD,getlook( LOOK_SHIELD, .@player);
	setunitdata .@mob,UMOB_WEAPON,getlook( LOOK_WEAPON, .@player);
	set getarg(2), getarg(2) +1; // killing clones add 1 point
	if ( .redscore < 100 && .bluescore < 100 )
		bg_updatescore "bat_c03", .redscore, .bluescore;
	if ( getarg(2) == 100 ) {
		.winside = getarg(1);
		awake strnpcinfo(0);
	}
	end;
OnRedQuit: callsub L_Quit, .red, .blue, "Red";
OnBlueQuit: callsub L_Quit, .blue, .red, "Blue";
L_Quit:
	if ( bg_get_data( getarg(0), 0 ) ) end;
	mapannounce "bat_c03", "All "+ getarg(2) +" team members has Quit!", bc_map;
	.winside = getarg(1);
	awake strnpcinfo(0);
	end;
OnRedDead: callsub L_Dead, .red, .blue, .bluescore;
OnBlueDead: callsub L_Dead, .blue, .red, .redscore;
L_Dead:
	set getarg(2), getarg(2) +3; // killing players add 3 points
	if ( .redscore < 100 && .bluescore < 100 )
		bg_updatescore "bat_c03", .redscore, .bluescore;
	if ( getarg(2) == 100 ) {
		.winside = getarg(1);
		awake strnpcinfo(0);
	}
	sleep2 1250;
	percentheal 100,100;
	end;
}

bat_c03	mapflag	battleground	2
bat_c03	mapflag	nosave	SavePoint
bat_c03	mapflag	nowarp
bat_c03	mapflag	nowarpto
bat_c03	mapflag	noteleport
bat_c03	mapflag	nomemo
bat_c03	mapflag	nopenalty
bat_c03	mapflag	nobranch
bat_c03	mapflag	noicewall

EDIT: Ups, I didn't see that edit.

Edited by n0tttt
  • Love 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

WAHAHAHA scrap my previous script edi ~
been so long having someone comment on my scripts ~ hahaha no more feeling lonely

bg_pvp_point_clone_0.3r.txt <-- PS: no 0.2 version because scrap due to @n0tttt gives better template ?

not sure about cloth color, arch bishop dye 0 gives blue color, dye 2 red color
wanderer dye 0 red color, dye 2 blue color ... didn't follow a pattern
maybe another callsub

nah, wait someone gives feedback then only continue this

 

Edited by AnnieRuru
  • Love 1
Link to comment
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
Answer this question...

×   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.

×
×
  • Create New...