Jump to content

Emistry

Forum Moderator
  • Posts

    10015
  • Joined

  • Days Won

    405

Posts posted by Emistry

  1. *gettimetick(<tick type>)
    
    This function will return a tick depending on <tick type>:
     0: The server's tick, a measurement in milliseconds used by the server's timer
        system. This tick is an unsigned int which loops every ~50 days.
     1: The time, in seconds, since the start of the current day.
     2: The system time in UNIX epoch time, or the number of seconds elapsed since
        January 1st, 1970. Useful for reliably measuring time intervals.

    it return your server time tick, not your npc time

  2. use these script command instead.

    
    *plagiarizeskill <skill_id>,<level>;
    
    Enable the player to plagiarize specific skills that are copyable.
    Return 1 on success, 0 otherwise.
    
    Note:
     - Plagiarism only able to copy skill while SC_PRESERVE is not active and skill is copyable by Plagiarism.
     - Reproduce can copy skill if SC__REPRODUCE is active and the skill is copyable by Reproduce.
    
    ---------------------------------------
    
    *plagiarizeskillreset <flag>;
    
    Remove a plagiarized skill from the player.
    Return 1 on success, 0 otherwise.
    
    Flag constants:
    	1 - Use for Plagiarism Skill
    	2 - Use for Reproduce Skill

     

  3. you may try something like this

    
    OnHour00:
    OnHour03:
    OnHour06:
    OnHour09:
    OnHour12:
    OnHour15:
    OnHour18:
    OnHour21:
    	.rotd_start_time = gettimetick(2);
    	.today_rotd = rand( .rotd_size );
    	.rotd_exp_bonus = rand( 10,100 );
    	announce "[Race of the Day] : "+.rotd$[.today_rotd]+" +"+.rotd_exp_bonus+"% exp",bc_all;
    	delwaitingroom;
    	waitingroom .rotd$[.today_rotd]+" +"+.rotd_exp_bonus+"% exp",0;
    	end;
    
    OnPCLoginEvent:
    	if (!.rotd_start_time) end;
    	.@time_passed = gettimetick(2) - .rotd_start_time;
    	fakeIcon(getcharid(0), .rotdicon[.today_rotd], (.timer - (.@time_passed * 1000)), 1);
    	end;

     

  4. -	script	buff_cmd	-1,{
    	
    OnInit:
    	bindatcmd "buffs", strnpcinfo(0)+"::OnCommand",0,99;
    	end;
    
    OnCommand:
    	if(getgroupid() <= 4) {
    		message strcharinfo(0),"No, VIP.";
    		end;
    	}
    	.@stone_time = getstatus(SC_STONE, 5);
    	.@curse_time = getstatus(SC_CURSE, 5);
    	skilleffect 34,0; sc_start SC_BLESSING,360000,10;
    	skilleffect 29,0; sc_start SC_INCREASEAGI,360000,10;
    	sc_start SC_ASPDPOTION2,360000,0;
    	sc_start SC_STRFood,360000,10;
    	sc_start SC_AGIFood,360000,10;
    	sc_start SC_VITFood,360000,10;
    	sc_start SC_INTFood,360000,10;
    	sc_start SC_DEXFood,360000,10;
    	sc_start SC_LUKFood,360000,10;
    	sc_start SC_HitFood,1200000,30;
    	sc_start SC_FleeFood,1200000,30;
    	sc_start SC_BATKFood,1200000,10;
    	sc_start SC_MATKFood,120000,10;
    	
    	if (.@stone_time > 0)
    		sc_start SC_STONE, .@stone_time, 0;
    	if (.@curse_time > 0)
    		sc_start SC_CURSE, .@curse_time, 0;
    	end;	
    }

    or you could also try tricks like this to reapply the debuffs

    • MVP 1
  5. On 1/9/2022 at 6:29 PM, rayhanalka said:

    hi @Emistry

    thank you for your great work, could you make it support 4th job version for this script?

    currently supported, may use version 4.0

     

    On 8/25/2019 at 6:17 AM, Emistry said:

    use bindatcmd ....

    On 8/14/2019 at 10:06 AM, PsyOps said:

    Is it possible to add an atcommand for this? I've tried to add one but i can't seem to make it work? Any thoughts on this?

    version 4.0 support bindatcmd

    • Love 1
  6. monitor it from your map-server console would be the most ideal way.

    checking it from online tool aren't ideal because the version of source code from the online tool and your current source code may not match, and warn you with unnecessary errors or warnings.

    Hercules script checker only work up to certain extend, both emulator have a lot of different of script commands nowadays.

     

    if you just need some syntax highlight validation that help you in scripting, you can try those IDE that allow you to implement the syntax highlight or syntax validation, like notepad++, or visual studio code.

  7. acc_reg_num

    its stored in this table.

    however to reset it, its a bit tricky

    • if there are no player online, you can safely execute the sql script to remove it from database
    • if there are player currently online, you have to manually select each user to reset their points (of course this can be done is numerous ways)
      then run SQL script to remove points from those who aren't online.

     

  8. you can also try

    if (!isequippedcnt(32071,...,32128)) {
    	mes "Lastima que no tienes ningunas Alas Quest...";
    	close;
    }

     

    or

    another trick that you could try

    -	script	sample	-1,{
    	OnInit:
    		for (.@i = 32071; .@i <= 32128; .@i++) {
    			setitemscript .@i, "{ @eq_32071_32128++; }", 1;
    			setitemscript .@i, "{ @eq_32071_32128--; }", 2;
    		}
    		end;
    }

    everytime when you equipped one of these items, it will increase a counter, when unequipped it will decrease the counter.

    when you want to check if a user equipped it, then do this

    if (!@eq_32071_32128) {
    	mes "Lastima que no tienes ningunas Alas Quest...";
    	close;
    }

     

    • Love 1
  9. On 6/22/2023 at 7:39 PM, GarudaRO123 said:

    i cant use the conf because my drop card is 0,5 %

    u can just configure it announce if its 0.50% drop rate.  if you afraid other etc items will be announced, then set the minimum drop rate of other item type to 0.51% or above.

    On 6/22/2023 at 7:39 PM, GarudaRO123 said:

    i just want to make it specific to cards only

    u can update the item_db

    Flags:
    	DropAnnounce: true 

     

×
×
  • Create New...