Jump to content

Hakahay

Members
  • Posts

    81
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Hakahay

  1.   - Id: 2005
        Name: RK_WINDCUTTER
        Description: Wind Cutter
        MaxLevel: 5
        Type: Weapon
        TargetType: Self
        DamageFlags:
          Splash: true
        Hit: Single
        HitCount: 1
        Element: Weapon
        SplashArea:
          - Level: 1
            Area: 1
          - Level: 2
            Area: 1
          - Level: 3
            Area: 2
          - Level: 4
            Area: 2
          - Level: 5
            Area: 3
        CopyFlags:
          Skill:
            Reproduce: true
        AfterCastActDelay: 1000
        Cooldown:
          - Level: 1
            Time: 800
          - Level: 2
            Time: 650
          - Level: 3
            Time: 500
          - Level: 4
            Time: 350
          - Level: 5
            Time: 200
        Requires:
          SpCost:
            - Level: 1
              Amount: 34
            - Level: 2
              Amount: 38
            - Level: 3
              Amount: 42
            - Level: 4
              Amount: 46
            - Level: 5
              Amount: 50
          Weapon:
            Dagger: true
            1hSword: true
            2hSword: true
            1hSpear: true
            2hSpear: true

    Correction

  2. When the instance starts, the characters are forced to log out.

     

    Spoiler
    // http://herc.ws/board/topic/15913-annieruru-emp-bg/
    
    /* db\re\instance_db.txt
    34,BG_EMP,86400,86400,bat_a02,100,95
    */
    
    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,150,185,5	script	bg_emp	1_F_MARIA,{
    	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;
    	.@name$ = strcharinfo(0);
    	.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;
    	announce "["+ .@name$ +"] has register the battleground. ["+ .size +"/"+( .minplayer2start *2 )+"]", bc_npc | bc_area;
    	if ( .size < .minplayer2start *2 )
    		end;
    	if ( instance_create( "BG_EMP", IM_NONE ) < 0 ) {
    		announce "Fail to create instanced battleground.", bc_all;
    		end;
    	}
    	else {
    		deletearray .aid, .minplayer2start *2;
    		.size -= .minplayer2start *2;
    	}
    	end;
    OnPCLoginEvent:
    	if ( bug_showdigit == true )
    		showdigit 0, 3;
    	end;
    OnInit:
    	.minplayer2start = 1; // minimum player to start. If 2vs2, set to 2
    	.eventlasting = 20*60; // abort the system if there's no progress, 20 mins * seconds
    	.winningscore = 2; // how many rounds needed for the team to win the game
    	setarray .rewardwin, 501, 10, 502, 5, 503, 3; // reward to the winning team
    	setarray .rewardlose, 501, 3, 502, 2, 503, 1; // reward to the losing team. Note: in case of draw/timeout, both teams gets lose item
    	.reward_by_mail = false; // if 'false', the reward is sent by *getitem, if 'true' the reward is sent by *mail
    
    	//	display a clock at the top middle of the screen
    	// 0 - OFF
    	// 1 - the clock shows the time progress for each round
    	// 2 - the clock shows the time progress from the beginning of the battleground match
    	.showdigit = 1;
    
    	.rewardwinsize = getarraysize( .rewardwin );
    	.rewardlosesize = getarraysize( .rewardlose );
    	end;
    }
    
    bat_a02,0,0,0	script	bg_emp#ins	-1,{
    OnInstanceInit:
    	'main$ = "bg_emp"; // this name must match the register npc name
    	'map$ = strnpcinfo(4);
    	'red = bg_create( 'map$, 157,347, instance_npcname( strnpcinfo(0) )+"::OnRedQuit", instance_npcname( strnpcinfo(0) )+"::OnRedDead" );
    	'blue = bg_create( 'map$, 142,51, instance_npcname( strnpcinfo(0) )+"::OnBlueQuit", instance_npcname( strnpcinfo(0) )+"::OnBlueDead" );
    	.@size = getvariableofnpc( .minplayer2start, 'main$ ) *2;
    	callfunc "F_ShuffleNumbers", 0, .@size -1, .@r;
    	for ( .@i = 0; .@i < .@size; ++.@i ) {
    		attachrid getvariableofnpc( getd( ".aid["+ .@r[.@i] +"]" ), 'main$ );
    		bg_join ( .@i % 2 )? 'red : 'blue;
    	}
    	if ( getvariableofnpc( .showdigit, 'main$ ) == 2 ) {
    		'time = gettimetick(2);
    		callsub L_ShowdigitAll, 0, 1;
    	}
    	detachrid;
    	bg_warp 'red, 'map$, 171,346;
    	bg_warp 'blue, 'map$, 162,50;
    	setwall 'map$, 164,347, 6, 4, 0, "bg_emp_red"+ 'red;
    	setwall 'map$, 154,51, 6, 4, 0, "bg_emp_blue"+ 'blue;
    	if ( !'skip ) sleep 6000;
    	instance_announce 0, "The rules are simple. The first team to break the opponent's Emperium wins!", bc_map;
    	if ( !'skip ) sleep 3000;
    	bg_updatescore 'map$, 'score[ 'red ], 'score[ 'blue ];
    	while ( true ) {
    		for ( .@i = 5; .@i > 0; --.@i ) {
    			instance_announce 0, "["+ .@i +"]", bc_map;
    			if ( !'skip ) sleep 1000;
    		}
    		if ( 'score[ 'red ] == getvariableofnpc( .winningscore, 'main$ ) -1 && 'score[ 'blue ] == getvariableofnpc( .winningscore, 'main$ ) -1 )
    			instance_announce 0, "Final Round start!", bc_map;
    		else
    			instance_announce 0, "Round "+ ++.round +" start!", bc_map;
    		if ( getvariableofnpc( .showdigit, 'main$ ) == 1 ) {
    			'time = gettimetick(2);
    			callsub L_ShowdigitAll, 0, 1;
    		}
    		.@red_crystal = bg_monster( 'red, 'map$, 171,346, "--ja--",1915, instance_npcname( strnpcinfo(0) )+"::OnRedDown" );
    //		setunitdata [email protected]_crystal, UMOB_HP, 5;
    		.@blue_crystal = bg_monster( 'blue, 'map$, 162,50, "--ja--",1914, instance_npcname( strnpcinfo(0) )+"::OnBlueDown" );
    //		setunitdata [email protected]_crystal, UMOB_HP, 5;
    		delwall "bg_emp_red"+ 'red;
    		delwall "bg_emp_blue"+ 'blue;
    		if ( !'skip ) sleep getvariableofnpc( .eventlasting, 'main$ ) * 1000;
    		bg_updatescore 'map$, 'score[ 'red ], 'score[ 'blue ];
    		if ( getvariableofnpc( .showdigit, 'main$ ) == 1 )
    			callsub L_ShowdigitAll, gettimetick(2) - 'time, 0;
    		if ( 'score[ 'red ] == getvariableofnpc( .winningscore, 'main$ ) || 'score[ 'blue ] == getvariableofnpc( .winningscore, 'main$ ) || !'winside ) break;
    		killmonster 'map$, instance_npcname( strnpcinfo(0) )+"::OnRedDown";
    		killmonster 'map$, instance_npcname( strnpcinfo(0) )+"::OnBlueDown";
    		if ( !'skip ) sleep 5000;
    		bg_warp 'red, 'map$, 171,346;
    		bg_warp 'blue, 'map$, 162,50;
    		bg_updatescore 'map$, 'score[ 'red ], 'score[ 'blue ];
    		setwall 'map$, 164,347, 6, 4, 0, "bg_emp_red"+ 'red;
    		setwall 'map$, 154,51, 6, 4, 0, "bg_emp_blue"+ 'blue;
    		if ( !'skip ) sleep 1000;
    		'winside = 0;
    	}
    	if ( 'winside == 'red ) {
    		instance_announce 0, "- Red Team is victorious! -", bc_map;
    		callsub L_Reward, 'red, getvariableofnpc( .rewardwin, 'main$ ), getvariableofnpc( .rewardwinsize, 'main$ );
    		callsub L_Reward, 'blue, getvariableofnpc( .rewardlose, 'main$ ), getvariableofnpc( .rewardlosesize, 'main$ );
    	}
    	else if ( 'winside == 'blue ) {
    		instance_announce 0, "- Blue Team is victorious! -", bc_map;
    		callsub L_Reward, 'blue, getvariableofnpc( .rewardwin, 'main$ ), getvariableofnpc( .rewardwinsize, 'main$ );
    		callsub L_Reward, 'red, getvariableofnpc( .rewardlose, 'main$ ), getvariableofnpc( .rewardlosesize, 'main$ );
    	}
    	else {
    		instance_announce 0, "- The match has ended in a draw! -", bc_map;
    		callsub L_Reward, 'red, getvariableofnpc( .rewardlose, 'main$ ), getvariableofnpc( .rewardlosesize, 'main$ );
    		callsub L_Reward, 'blue, getvariableofnpc( .rewardlose, 'main$ ), getvariableofnpc( .rewardlosesize, 'main$ );
    	}
    	if ( getvariableofnpc( .showdigit, 'main$ ) )
    		callsub L_ShowdigitAll, gettimetick(2) - 'time, 0;
    	sleep 6000;
    	bg_warp 'red, "prontera", 155,182;
    	bg_warp 'blue, "prontera", 158,182;
    	bg_destroy 'red;
    	bg_destroy 'blue;
    	instance_destroy;
    	end;
    L_ShowdigitAll:
    	bg_get_data 'red, 1;
    	for ( .@i = 0; .@i < [email protected]; ++.@i ) {
    		attachrid [email protected][.@i];
    		showdigit getarg(0), getarg(1);
    	}
    	bg_get_data 'blue, 1;
    	for ( .@i = 0; .@i < [email protected]; ++.@i ) {
    		attachrid [email protected][.@i];
    		showdigit getarg(0), getarg(1);
    	}
    	detachrid;
    	return;
    L_Reward:
    	bg_get_data getarg(0), 1;
    	if ( getvariableofnpc( .reward_by_mail, 'main$ ) ) {
    		deletearray .@itemid;
    		deletearray .@itemamount;
    		for ( .@i = 0; .@i < getarg(2) /2; ++.@i ) {
    			.@itemid[.@i] = getelementofarray( getarg(1), .@i *2 );
    			.@itemamount[.@i] =  getelementofarray( getarg(1), ( .@i *2 ) +1 );
    		}
    		for ( .@i = 0; .@i < [email protected]; ++.@i ) {
    			attachrid [email protected][.@i];
    			mail getcharid(0),
    				"XXXRO auto-reward", // mail sender name
    				"Battleground Emperium", // mail title
    				"Congratulations ~ This is your reward for participating.", // mail body
    				0, // mail attached Zeny
    				.@itemid, .@itemamount;
    		}
    		detachrid;
    	}
    	else {
    		for ( .@i = 0; .@i < [email protected]; ++.@i )
    			for ( .@j = 0; .@j < getarg(2); .@j += 2 )
    				getitem getelementofarray( getarg(1), .@j ), getelementofarray( getarg(1), .@j +1 ), [email protected][.@i];
    	}
    	return;
    OnRedDown:  callsub L_EmpDown, "Red", 'blue;
    OnBlueDown: callsub L_EmpDown, "Blue", 'red;
    L_EmpDown:
    	instance_announce 0, strcharinfo(0) +" has destroyed "+ getarg(0) +" Team's Emperium.", bc_map;
    	'winside = getarg(1);
    	++'score[ getarg(1) ];
    	awake instance_npcname( strnpcinfo(0) );
    	end;
    OnRedDead:
    OnBlueDead:
    	sleep2 1250;
    	percentheal 100,100;
    	end;
    OnRedQuit:  callsub L_Quit, 'red, "Red", 'blue;
    OnBlueQuit: callsub L_Quit, 'blue, "Blue", 'red;
    L_Quit:
    	bg_leave;
    	percentheal 100, 100;
    	showdigit 0, 3;
    	bug_showdigit = true;
    	if ( !bg_get_data( getarg(0), 0 ) ) {
    		instance_announce 0, "All "+ getarg(1) +" team members have quit!", bc_map, 0xff3333;
    		'winside = getarg(2);
    		'skip = true;
    		awake instance_npcname( strnpcinfo(0) );
    	}
    	end;
    }
    
    bat_a02	mapflag	battleground	2
    bat_a02	mapflag	nosave	SavePoint
    bat_a02	mapflag	nowarp
    bat_a02	mapflag	nowarpto
    bat_a02	mapflag	noteleport
    bat_a02	mapflag	nomemo
    bat_a02	mapflag	nopenalty
    bat_a02	mapflag	nobranch
    bat_a02	mapflag	noicewall

     

     

  3. Hi guys!

    Everyone knows how the successful Among US game works recently.
    So if someone can do this event according to what I am going to quote or if you have a much better idea, feel free to accept this challenge.

    How to make:

    • Players sign up for NPC
    • After 1 minute, a dispbottom informs who is an Innocent and who is an Impostor.
    • Players will be teleported randomly on a large map.
    • The game only starts if there are at least 5 participants.
    • Only the PK to the imposter will be enabled.
    • Every minute, a window appears to the player to vote for a person, the highest vote eliminates a player.
    • If the imposter remains and one more innocent, the game ends with the imposter winning.
    • If they eliminate the impostor, the innocent will win.

    Impostor Ideas:

    • He has access to Plate NPCs from the map to summon random monsters on the map as sabotage.
    • The TF_HIDING (51) ability can be granted through a temporary item.

    Ideas for the Innocent:

    • Summon multiple monsters on the map, if all monsters are killed, the innocent win.

    To those who donate some of their time to do so, Thank you very much!

    Sorry for the bad English.

     

    • MVP 1
    • Like 1
  4. I was following these tutorial:

    and

    https://herc.ws/board/topic/9273-guide-how-to-add-custom-jobs/

     

    But these files are not present at the current data:

    1. data\luafiles514\lua files\admin\PCIds.lub

    3. data\luafiles514\lua files\admin\PCPaths.lub

    4. data\luafiles514\lua files\admin\PCHands.lub

    5. data\luafiles514\lua files\admin\PCPals.lub

     

    And the addition of Sprites in the paste

    I use the latest version of rAthena

    image.png.371099d4f55565903a9e11c8bb0fced6.png

    Could someone teach me how to add?

     

     

  5. There is some script that can do the following: at a certain time it selects 2 random players from the server and puts them to fight each other, who wins receives a reward.

  6. 7 minutes ago, KeyMaster said:

    @Hakahay não gera não... quando vc fez sua GRF e gerou a cps.dll vc salvou a grfkey?

    Se salvou vc vai usar ela... seguindo os passos que informei... Abra o GRF Editor, Enviei seus arquivos, dai criptografe os arquivos carregando a grfkey feito isso agora é so salvar como GPF e enviar para o thor baixar.

    Acho que errei em salvar, voltei a salvar em .thor (que burrice), vou tentar novamente e se der certo ou não eu volto pra dizer.

  7. 7 hours ago, KeyMaster said:

    não vai poder usar o gerador .thor
    com o GRF editor vc vai criar uma GPF coloque seus arquivos lá e encripte com a mesma da sua GRF. depois de salvar; exemplo 2019-05-06_Teste.gpf adicione-o na lista para atualizar

    O problema é que pra cada encriptação ele gera um novo arquivo cps.dll que é necessário para abrir o client, tentei e não foi.

     

    3 hours ago, Gladius said:

    Cara, eu atualizo a GRF e envio ela inteira para o thor. Assim eu mantenho ela atualizada e criptografada.
    O problema é o tamanho da GRF, como eu uso várias para coisas diferentes consigo manter elas limpas e leves para a atualização.

    Recomendo que você faça o mesmo, pois até onde eu sei é a unica maneira de atualizar o thor e manter a criptografação.

    Não é viável, vai que o servidor tenha uma data de 700mb, ai vai adicionar mais arquivos e vai pra casa dos 750mb, ai pensa nas pessoas que terão que fazer o redownload de toda a data grf, quem tem internet limitada vai sofrer muito.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.