Jump to content

Mabuhay

Members
  • Posts

    446
  • Joined

  • Last visited

  • Days Won

    34

Posts posted by Mabuhay

  1. Automated GvG Event v2


    Version 1.0 = stop support

    Spoiler

     

    
    // Automated GvG Event 1.0
    // Event runs every hour via OnMinute timer.
    // Feel free to edit as you wish
    // By : Mabuhay
    // Free release
    // Dont remove credit
    // Response to : https://rathena.org/board/topic/121522-7v7-or-guild-vs-guild-automated-event-script/

    NPC Header

    
    -	script	gvg_event	-1,{
    OnInit:
    	// How many guild members are required?
    	.membercount = 1; 
    	
    	// registration timer in mins.
    	.timer = 3; 
    	
    	// how much points to win? Points is earned per kill
    	.win_points = 2; 
    	
    	// item reward
    	// <item_id>, <amount>
    	setarray .item,
    		501, 10,
    		502, 5;
    	
    	// how much cash points earned
    	// set to 0 to disable
    	.cash = 100; 
    	
    	.size = getarraysize(.item);
    	bindatcmd "gvgeventstart", strnpcinfo(0)+"::OnStartEvent",60,60;
    	bindatcmd "gvgeventend", strnpcinfo(0)+"::OnEndEvent",60,60;
    	bindatcmd "gvgeventjoin", strnpcinfo(0)+"::OnJoinEvent";
    	end;

     

    This request is done as per the original post here: 

    For modifications, you can freely adjust by yourself. I may or may not upgrade this script.

    Compatibility is your responsibility. 

    Tested and Working on latest rathena as of 11 -  06 - 2019.

     

    UPDATED to 2.0

    // Automated GvG Event 2.0 Beta version
    // Event runs every hour via OnMinute timer.
    // Feel free to edit as you wish
    // By : Mabuhay
    // Free release
    // Dont remove credit
    // Updated to v 2.0
    /*
    	- Added gepard support and check to every members
    	- More flexible options
    	- Can set cash, members, timer, and winpoints if gm starts the command.
    	
    	New mechanics.
    	
    	- When using @gvgeventjoin, all your members must be around you by 5x5 cell.
    	
    	NOTE:
    		item rewards are only to be set here in script because adding them
    		in the GM option would be quite troublesome for me :D
    */
    //

     

    Tested and working except for Gepard function. ( But it must be working without any problem )

    Compatibility is your responsibily.

    Backward compatibility is not supported. Update your trunk to latest for this to work.

    Enjoy


     

    • Upvote 3
    • Love 1
  2. search for "@name$" replace to ".@name$"

    of course without the  " ".

     

    EDIT: 

    PS: I didnt read the whole script because i am quite tired right now.. Maybe it will need to use a temp global var so you might need to change the .@name$ to $@name$.

    this is just an assumption. just give me feed back on the result.

  3. Check :

    Add(3,30168,1,1000000,200,32054,10,12016,100,5033,1,5062,1,1,4001,30,7019,300,7295,30,7620,10,7619,10);
    
    change to
    
    Add(3,30168,1,1000000,200,32054,10,12016,100,5033,1,5062,1,4001,30,7019,300,7295,30,7620,10,7619,10);

    and

    	Add(3,32015,1,1000000,200,32054,10,12016,100,5033,1,5062,1,30,7156,300,7290,30,7620,10,7619,10);
    	Add(3,30069,1,1000000,200,32054,10,12016,100,5033,1,5062,1,30,7155,300,7294,30,7620,10,7619,10);
    
    change to 
    
    	Add(3,32015,1,1000000,200,32054,10,12016,100,5033,1,5062,1,7156,300,7290,30,7620,10,7619,10);
    	Add(3,30069,1,1000000,200,32054,10,12016,100,5033,1,5062,1,7155,300,7294,30,7620,10,7619,10);

     

  4. @itemrain command


    I know it exists somewhere in the forum but for the sake of lazy people searching in forum, here is @itemrain command

    as what the command name says, it will make / drop items around the one who used the command on 14 cells wide ( about the size of the screen )

     

    @item <item_id> <amount>

     

    Items created by this command is limited to 100 only just to put a little bit of cap into it.

     

    use at your own risk. 

    Compatibility is your responsibility.


    • Submitter
    • Submitted
      11/04/2019
    • Category
    • Video
    • Content Author
      Mabuhay

     

    • Love 1
  5. Fixed the variable problem with the script. It should work now when script is gonna be approved. Thanks to @sader1992 for pointing it out. 

    Edit: you can also use `.itemid_var` instead of global temp var `$@itemid_var` that i used in the script (same goes to amount var) . Lol, i just realised it now. But no biggy.. 

  6. prontera,150,180,0	script	asjdnakjn	123,{
    	switch(Class) {
    	case Job_Sniper:
    		getitem 607, 1;
    		getitem 608, 1;
    		break;
    	case Job_Professor:
    		getitem 609, 1;
    		getitem 610, 1;
    		break;
    	......
    	}
    }

    You get the idea.. Just add a char or acc variable checker to make sure players dont abuse this system.

  7. OnNPCKillEvent:
    	if ( killedrid == 1002 ) {
    		getmapxy (.@map$, .@x, .@y, BL_PC);
    		getpartymember getcharid(1), 1;
    		getpartymember getcharid(1), 2;
    		for ( .@i = 0; .@i < $@partymembercount; ++.@i ) 
    		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    			attachrid ( $@partymemberaid[.@i]);
    			getmapxy ( @map$, @x, @y, BL_PC );
    			if ( distance(.@x, .@y, @x, @y) < 15 && @map$ == .@map$ ) { // reduced the distance to 15 cells
    				.@partymemberaid[.@c] = $@partymemberaid[.@i];
    				.@c++;
    			}
    		}
    		sleep 1;
    		getitem 607, 1, .@partymemberaid[rand(.@c)]; 
    	}
    	end;

    @Rizz still untested

    • Upvote 1
  8. If you want to use multiple mobs, just put them in array and run a loop. 

    As for probability, do as you wish. 

    I am only on mobile and i dont have any test server. So it is quite impossible for me to test if the code i wrote would work as per only party members around or within the screen will be rewarded. 

    Afaik, there is no way in default rathena to retrieve if the player is currently dead. So it still might trigger if the party member who's dead would get the items long as he is within the mvp killer range (20 cells) 

    • Upvote 1
  9. OnNPCKillEvent:
    	if ( killedrid == 1002 ) {
    		getmapxy (.@map$, .@x, .@y, BL_PC);
    		getpartymember getcharid(1), 1;
    		getpartymember getcharid(1), 2;
    		for ( .@i = 0; .@i < $@partymembercount; ++.@i ) 
    		if ( isloggedin( $@partymemberaid[.@i], $@partymembercid[.@i] ) ) {
    			attachrid ( $@partymemberaid[.@i]);
    			getmapxy ( @map$, @x, @y, BL_PC );
    			if ( distance(.@x, .@y, @x, @y) > 20 && @map$ != .@map$ ) continue;
    			else  {
    				.@partymemberaid[.@c] = $@partymemberaid[.@i];
    				.@c++;
    			}
    		}
    		sleep 1;
    		getitem 607, 1, .@partymemberaid[rand(.@c)]; 
    	}
    	end;

    Untested

  10. Last Man Standing - Yet another version


    UPDATE:

    version 1 = I removed all my modifications on this script
    version 2 = Has timers and will most likely be in-conflict with other event scripts i made.

     

    Here is my take on a LMS Event.

    Just a simple one.

    Runs hourly or Manually run by a GM

    Reward can be set 

    Spoiler

     

    Enjoy.

    UPDATE 2.0:

    Changed to a new version that works like my other script events. ? 

    Still runs hourly and manually run by a gm.

     


     

    • Upvote 1
  11. If pet reaches to certain level, it will change to another pet basically like pokemon.


    if baphomet jr pet reaches to level 50 > it will change to Baphomet pet Lv50 as well if possible with same intimacy as the baphomet jr before it evolved.


  12. -	script	hourlypoints	-1,{
    
    OnPCLoginEvent:
    	if(#limit == 1) { 
    			dispbottom "You have already reached the maximum points per day.";
    			dispbottom "Wait until the next day for the timer to start."; 
    			}
    	else { dispbottom "Hourly Points has been initiated in this account.";}
    	set #Clock,#minute;
    	set .@i, (gettime(7) * 365 * 24) + (gettime(8) * 24) + gettime(3);// this will set time of origional loging
    		if(.@i >= (#LastClock + .ResetHours)){
    			set #LastClock,.@i;
    			set #Clock,0;
    		} else { set #minute,#Clock; }
    	attachnpctimer();
    	startnpctimer();
    	end;
    
    
    OnTimer60000:
    	if(#limit == 1) { stopnpctimer(); }
    	else {
    	setarray .@h_maps$[0],"vend_zone","vip_lounge";
    		for (set .@a, 0; .@a < getarraysize(.@h_maps$); set .@a, .@a + 1) {
    			if(strcharinfo(3) == .@h_maps$[.@a]) {
    						dispbottom "Hourly points is restricted in this map.";
    						dispbottom "Please change map and relog if you wish to continue Hourly points.";
    						stopnpctimer();
    						end;
    			}
    		}
    	set #minute, #minute + 1;
    	if(#minute == 60){
    				set .point_amt, 1;
    				set #KAFRAPOINTS, #KAFRAPOINTS + .point_amt;
    				dispbottom "You received "+.point_amt+" Free Donation points for staying in-game for 1 hour";
    				dispbottom "Current Balance = "+#KAFRAPOINTS+" Free Donation Points";
    				}
    	if(#minute == 120){
    				set .point_amt, 2;
    				set #KAFRAPOINTS, #KAFRAPOINTS + .point_amt;
    				dispbottom "You received "+.point_amt+" Free Donation points for staying in-game for 2 hours";
    				dispbottom "Current Balance = "+#KAFRAPOINTS+" Free Donation Points";
    				}
    	if(#minute == 240){
    				set .point_amt, 4;
    				set #KAFRAPOINTS, #KAFRAPOINTS + .point_amt;
    				dispbottom "You received "+.point_amt+" Free Donation points for staying in-game for 4 hours";
    				dispbottom "Current Balance = "+#KAFRAPOINTS+" Free Donation Points";
    				}
    	if(#minute == 480){
    				set #minute,0;
    				set #limit,1;
    				set .point_amt, 13;
    				set #KAFRAPOINTS, #KAFRAPOINTS + .point_amt;
    				dispbottom "You received "+.point_amt+" Free Donation points for staying in-game for 8 hours";
    				dispbottom "Current Balance = "+#KAFRAPOINTS+" Free Donation Points";
    				sleep2 2000;
    				dispbottom "You have already reached the maximum points per day.";
    				dispbottom "Wait until 12:01 for the timer to start.";
    				}
    			stopnpctimer();
    			initnpctimer();
    	}
    	end;
    
    OnInit:
    	set .ResetHours,24;
    	
    
    OnClock0001:
    	set #minute,0;
    	set #limit,0;
    	sleep2 1000;
    	stopnpctimer();
    	initnpctimer();
    	dispbottom "Timer has been restarted.";
    	end;
    }
    

    So here is my hourly script. Based on multiple hourly points i have seen, however, i have this problem. I want to reset #minute and #limit to 0 when the server ticks to the next day. This script does that but only if the player is online. if he/she is not online, it wont be reset-ed.

×
×
  • Create New...