Jump to content

MikZ

Members
  • Content Count

    461
  • Joined

  • Last visited

Posts posted by MikZ


  1. 3 hours ago, 4144 said:

    this mean you have unsupported skill somewhere.

    if you adding new skill by patching server, you must add range for this skill in skill_get_index.

    if you adding new skill by plugin, you must override CUSTOM_SKILL_RANGES in environment variables before compile server.

    If this error from clean hercules, probably some one cheating and want use non existing skill.

     

     

    For 1 and 2 is there a command to locate which specific skill or plugin it came from?

     

    And where can i find CUSTOM_SKILL_RANGES. 

     

    also ichecked the error and found this. Skill Id is not being handled. and cant find such skill. is it safe to assume that some one is using cheat?

    image.png.305220e721bf12978ecb46778835cf46.png


  2. Good day!

    May I request to convert this script to hercules please.

    -	script	GlobalMvP::GlobalMvP	-1,{
    OnNPCKillEvent:
    	if(inarray(getd(".MVP_" + strcharinfo(3)),killedrid) != -1){
    		query_sql "SELECT `name` FROM `mvp` WHERE `char_id`="+getcharid(0)+"",.@name$;
    		if ( .@name$ == "" ) { query_sql "INSERT INTO `mvp` (`char_id`,`name`,`kills`,`points`) VALUES (" + getcharid(0) + ",'" + escape_sql(strcharinfo(0)) + "',1,1)"; end; }
    		query_sql "UPDATE `mvp` SET `kills` = (`kills` + 1), `points` = (`points` +1) WHERE `char_id`=" + getcharid(0);
    	}
    end;
    	function AddMvP {
    		for(.@i=1;.@i<getargcount();.@i++){
    			setd ".MVP_" + getarg(0) + "[" + .@i + "]",getarg(.@i);
    		}
    		return;
    	}
    
    OnInit:
    	query_sql("CREATE TABLE IF NOT EXISTS `mvp` (`char_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL DEFAULT '0', `kills` int(11) unsigned NOT NULL DEFAULT '0',`points` int(11) unsigned NOT NULL DEFAULT '0', `level` int(11) unsigned NOT NULL DEFAULT '0', KEY `char_id` (`char_id`), KEY `kills` (`kills`), KEY `points` (`level`), KEY `level` (`level`)) ENGINE=MyISAM");
    	freeloop(1);
    		//AddMvP(<"MAP_NAME">,<MVP ID>{,<MVP ID>});
    		//you can add as much as you want mvp ids
    		AddMvP("prontera",1002);
    		AddMvP("payon",1002,1003,1004);
    		AddMvP("geffen",1546);
    	freeloop(0);
    end;
    }

     

    Error found:

    [Error]: script error in file '(DIRECT INPUT)' line 3 column 10 
        parse_simpleexpr: unmatched ')' 
         1: { 
         2: OnNPCKillEvent: 
    *    3:         if(inarray(getd(".MVP_" + strcharinfo(3)),killedrid) != -1){ 

     


  3. On 3/27/2019 at 10:18 PM, AnnieRuru said:

    wait wait, I was asking question back before attempting to write out this script,
    and I still haven't made title system script commands plugin yet ...

    I don't understand why you mark that as answer while I was actually asking for more information ...

     

    rephrase again

    1. you have to list out which MVP are easy/normal/hard,
    easy - MVPID 1 , MVPID 2 ...
    normal - MVPID 1 , MVPID 2 ...
    ...

    2. wait until I make title system script commands plugin .... going to write now

    3. rewards give out by weekly or monthly are entire different formula ... you can only pick one ...

    4. MVP points will trigger on MVP maps only  <-- means only trigger like .... inside MVP room only ?

    Hi @AnnieRuru, apologies.

    1. MVP list
    EASY
    Atroce   (ATROCE)   Mob-ID#1785
    Bacsojin / White Lady   (BACSOJIN_)   Mob-ID#1630
    Boitata   (BOITATA)   Mob-ID#2068
    Doppelganger   (DOPPELGANGER)   Mob-ID#1046
    Dracula   (DRACULA)   Mob-ID#1389
    Drake   (DRAKE)   Mob-ID#1112
    Eddga   (EDDGA)   Mob-ID#1115
    Garm / Hatii   (GARM)   Mob-ID#1252
    Gopinich   (GOPINICH)   Mob-ID#1885
    Maya   (MAYA)   Mob-ID#1147
    Mistress   (MISTRESS)   Mob-ID#1059
    Osiris   (OSIRIS)   Mob-ID#1038
    Pharaoh   (PHARAOH)   Mob-ID#1157
    Phreeoni   (PHREEONI)   Mob-ID#1159
    Tao Gunka   (TAO_GUNKA)   Mob-ID#1583
    Turtle General   (TURTLE_GENERAL)   Mob-ID#1312
    Vesper   (APOCALIPS_H)   Mob-ID#1685

    NORMAL
    Amon Ra   (AMON_RA)   Mob-ID#1511
    Baphomet   (BAPHOMET)   Mob-ID#1039
    Dark Lord   (DARK_LORD)   Mob-ID#1272
    Detale / Detardeurus   (DETALE)   Mob-ID#1719
    Evil Snake Lord   (DARK_SNAKE_LORD)   Mob-ID#1418
    Golden Thief Bug   (GOLDEN_BUG)   Mob-ID#1086
    Incantation Samurai / Samurai Specter   (INCANTATION_SAMURAI)   Mob-ID#1492
    Knight of Windstorm / Stormy Knight   (KNIGHT_OF_WINDSTORM)   Mob-ID#1251
    Lady Tanee   (LADY_TANEE)   Mob-ID#1688
    Lord of Death / Lord of the Dead   (LORD_OF_DEATH)   Mob-ID#1373
    Moonlight Flower   (MOONLIGHT)   Mob-ID#1150
    Orc Hero   (ORK_HERO)   Mob-ID#1087
    Orc Lord   (ORC_LORD)   Mob-ID#1190
    RSX 0806 / RSX-0806   (RSX_0806)   Mob-ID#1623
    Wounded Morroc   (MOROCC_)   Mob-ID#1917

    HARD
    Beelzebub   (BEELZEBUB_)   Mob-ID#1874
    Fallen Bishop / Fallen Bishop Hibram   (FALLINGBISHOP)   Mob-ID#1871
    Gloom Under Night   (GLOOMUNDERNIGHT)   Mob-ID#1768
    Ifrit   (IFRIT)   Mob-ID#1832
    Kiel D-01   (KIEL_)   Mob-ID#1734
    Ktullanux   (KTULLANUX)   Mob-ID#1779
    Thanatos / Memory of Thanatos   (THANATOS)   Mob-ID#1708
    Valkyrie Randgris   (RANDGRIS)   Mob-ID#1751

    2. Will wait for it /no1 <--- Can we skip the rank Name and just the killing points only for meantime. if possible

    3. For monthly only

    4. Points trigger on MVP maps only. (branch and bloody branch summons not included)

     

    Thank you so much!


  4. Good day!

    May i request command @mobalive please.

    though was already requested before.

     

     

    @mobalive moonlight

    Dispbottom "MVP moonlight is dead";

    Dispbottom "MVP moonlight is Alive"; etc

    Only trigger if MVP is in MVP Map not in Deadbranch room or any other map.


  5. On 8/12/2014 at 6:26 AM, Ridley said:

    Episode 13.2 Pre-Renewal GRF

    This one is 775 MB (812.914.794 Bytes) and great for all kind of pre-re servers.

    Download gDrive


    All rights and credits belong to Gravity
     
    Note: you can still encrypt your grf with SecureGRF or Tokei's GRF Editor - just use another name than cps.dll for it.

    updated thread 2019-01-13

    Hi pre-re GRF link not found.


  6. Good day!

    May I request script similar to this please.

    https://rathena.org/board/topic/114565-utility-automated-mvp-ladder-reward-system/

    Contacted the maker yet script not available for Hercules.

    Just wanted:

    • MVP points will trigger on MVP maps only
    • 3 Set of MVP
      • Easy = 2 pts (Solo)  / 1pts (party Share)
      • Moderate = 4 pts (Solo) / 2pts (party Share)
      • Hard = 6 pts (Solo) / 3pts (party Share)
    • View Personal Ranking (shows number of MVP killed only not pts.)
      • weekly
        • Easy = # of MVPs
        • Moderate = # of MVPs
        • Hard  = # of MVPs
      • Monthly
        • Easy = # of MVPs
        • Moderate = # of MVPs
        • Hard  = # of MVPs
    • View Top ranking / Rewards to Top 5 (names only)
      • Easy:
        • Name of Players
      • Moderate:
        •  Name of Players
      • Hard :
        • Name of Players
    • Shop
    • Reset points/ Ranking (Manual @command or Autoreset)
    • If possible will have RANK name:
      • Copper = 10
      • Iron = 15
      • Silver = 20
      • Gold = 25
      • Platinum = 30
      • Mythril = 35
      • Orichalcum = 40
      • Adamantite = 50
    • 2 set of points MVP points(for shop purposes) and Hunting points(for Ranking name purposes)
    • Basically Ranking Name points = Hunting points -  Penalty points (Killed by MVP / right minus wrong)
      • Reward will be given per rank monthly

    I'm running out of ideas, if possible only. if not not the MVP points above.

    thanks!


  7. On 2/24/2019 at 5:19 AM, AnnieRuru said:

    Mass update to version 1
    compatible with Hercules 2019-02-24 and client 2018-06-20Re

    screen2019Hercules031.jpg

     

    @AnnieRuru your Quest information is so neat. can that be use for client 20141022 or for 2018 client only?

    Check mine ..

    screenLibRO002.jpg.52d7e635194cd45ba3332a94c60daa29.jpg

    also where to add these?

    */
    mission 1 - acolyte trouble
    49900 - from tavern, talk to acolyte
    49901 - from acolyte, talk to npc in izlude
    49902 - from izlude, talk to acolyte
    49903 - from acolyte, submit to tavern
    
    mission 2 - gemstone stortage
    49904 - from tavern, talk to gem seller
    49905 - from gem seller, collect 10 yellow/blue/red gemstone
    49906 - from gem seller, submit to tavern 
    
    mission 3 - poring problem
    49907 - from tavern, talk to guard
    49908 - from guard, kill 10 poring
    49909 - after kill poring and talked to guard, submit to tavern 
    
    mission 4 - hand over the artifact
    49910 - from tavern, talk to artifact collecter
    49911 - from artifact collecter, talk to assistant within 20 seconds
    49912 - from assistant, talk to artifact collecter
    49913 - from artifact collecter, submit to tavern
    */

     

     

    screenLibRO001.jpg


  8. 19 hours ago, AnnieRuru said:

    problem ? not every server use up to date client version

    are you using client version in year 2018 ?
    I'm using PACKETVER 20180621

    and for your answer, just add *getcalendartime(12,0) something like that on the daily quest log script

    if your server using up to date client version, then I could write this script easily with *getcalendartime script command
    using outdated client version, then have to hijack another script variable

    I'm planning to, meantime I'm using 20141022 . Awaiting from AndRO dev how can I update my client in mobile and if it is free.

    does 20180621 is stable?


  9. 3 hours ago, AnnieRuru said:
      Reveal hidden contents
    
    
    function	script	F_MesItemInfo	{
    	.@item = getarg(0);
    	.@itemname$ = getitemname(.@item);
    	if (.@itemname$ != "null") {
    		.@itemslot = getitemslots(.@item);
    		if (.@itemslot)
    			.@itemname$ = sprintf("%s [%d]", .@itemname$, .@itemslot);
    	}
    	else
    		.@itemname$ = "Unknown Item";
    	if (PACKETVER >= 20150729)
    		return sprintf("<ITEM>%s<INFO>%d</INFO></ITEM>", .@itemname$, .@item);
    	else if (PACKETVER >= 20130130)
    		return sprintf("<ITEMLINK>%s<INFO>%d</INFO></ITEMLINK>", .@itemname$, .@item);
    	else
    		return .@itemname$;
    }
    
    function	script	timeleft__	{
    	.@left = getarg(0);
    	if ( .@left <= 0 )
    		return getarg(0);
    	.@day = .@left / 86400;
    	.@hour = .@left % 86400 / 3600;
    	.@min = .@left % 3600 / 60;
    	.@sec = .@left % 60;
    	if ( .@day )
    		return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
    	else if ( .@hour )
    		return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
    	else if ( .@min )
    		return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
    	else
    		return sprintf( _$( "%d sec" ), .@sec );
    }
    
    prontera,155,185,5	script	kjdsfhskhf	1_F_MARIA,{
    //	#daily_supply = 0;
    	.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
    	if ( #daily_supply == .@today ) {
    		mes "You have already taken today's supply";
    		mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
    	}
    	else if ( checkweight( Knife, 3 ) == false ) {
    		mes "It appears you have overweight";
    	}
    	else {
    		mes "Retrieving today's supply...";
    		for ( .@i = 1; .@i <= 3; ++.@i ) {
    			.@r = rand(.totalchance[.@i]);
    			for ( .@j = 3; ( .@r -= getd(".item"+ .@i +"["+ .@j +"]") ) >= 0; .@j += 2 );
    			getitem getd(".item"+ .@i +"["+( .@j -1 )+"]"), rand( getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]") );
    		}	
    		#daily_supply = .@today;
    	}
    	next;
    //	chinese government enforce the law when giving items based on probability
    	mes "The Chances are:-";
    	for ( .@i = 1; .@i <= 3; ++.@i ) {
    		mes " ";
    		mesf "Set %d :", .@i;
    		mesf "Randomly get any one type of these item, the amount between %d~%d", getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]");
    		for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
    			mesf "%s : %s", F_MesItemInfo( getd(".item"+ .@i +"["+( .@j -1 )+"]") ), getd(".chance_display_item"+ .@i +"$["+ .@j +"]");
    	}
    	close;
    OnInit:
    	setarray .item1,
    		1, 10, // amount : rand(1,10)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Red_Potion,    5,
    		Orange_Potion, 4,
    		Yellow_Potion, 3,
    		White_Potion,  2,
    		Blue_Potion,   1,
    		Green_Potion,  6;
    
    	setarray .item2,
    		5, 15, // amount : rand(5,15)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Red_Herb,    5,
    		Yellow_Herb, 4,
    		White_Herb,  3,
    		Blue_Herb,   2,
    		Green_Herb,  1;
    
    	setarray .item3,
    		10, 20, // amount : rand(10,20)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Apple,        5,
    		Banana,       4,
    		Grape,        3,
    		Carrot,       2,
    		Sweet_Potato, 1,
    		Meat,         99, 
    		Honey,        50,
    		Milk,         100;
    
    	for ( .@i = 1; .@i <= 3; ++.@i ) {
    		setd ".item"+ .@i +"size", getarraysize( getd(".item"+ .@i) );
    		for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
    			.totalchance[.@i] += getd(".item"+ .@i +"["+ .@j +"]");
    		for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 ) {
    			.@chance = getd(".item"+ .@i +"["+ .@j +"]") *10000 / .totalchance[.@i];
    			.@division = .@chance / 100;
    			.@remainder$ = .@chance % 100;
    			while ( getstrlen(.@remainder$) < 2 )
    				.@remainder$ = insertchar(.@remainder$, "0", 0);
    			setd ".chance_display_item"+ .@i +"$["+ .@j +"]", .@division +"."+ .@remainder$ +"%";
    		}
    	}
    	end;
    }

     

    erm ... its getting interestingly ... complexity ...

    @AnnieRuru sorry, what if I add case 2 for 12 hours.

     

    Can i Just add these? but im getting infinity loop.

    Case 2:
    	mes "Retrieving today's half day supplies...";
    		for ( .@i = 1; .@i <= 3; ++.@i ) {
    			.@r = rand(.totalchance[.@i]);
    			for ( .@j = 3; ( .@r -= getd(".twelve"+ .@i +"["+ .@j +"]") ) >= 0; .@j += 2 );
    			getitem getd(".twelve"+ .@i +"["+( .@j -1 )+"]"), rand( getd(".twelve"+ .@i +"[0]"), getd(".twelve"+ .@i +"[1]") );
    		}	
    		#daily_twelvet = gettimetick(2);
    	}
    
    	close;
    }
    
    OnInit:
           setarray .twelve1,
    		1, 10, // amount : rand(1,10)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Red_Potion,    5,
    		Orange_Potion, 4,
    		Yellow_Potion, 3,
    		White_Potion,  2,
    		Blue_Potion,   1,
    		Green_Potion,  6;
    
    	setarray .twelve2,
    		5, 15, // amount : rand(5,15)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Red_Herb,    5,
    		Yellow_Herb, 4,
    		White_Herb,  3,
    		Blue_Herb,   2,
    		Green_Herb,  1;
    
    	setarray .twelve3,
    		10, 20, // amount : rand(10,20)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Apple,        5,
    		Banana,       4,
    		Grape,        3,
    		Carrot,       2,
    		Sweet_Potato, 1,
    		Meat,         99, 
    		Honey,        50,
    		Milk,         100;
    
    
    	for ( .@i = 1; .@i <= 3; ++.@i ) {
    		setd ".twelve"+ .@i +"size", getarraysize( getd(".twelve"+ .@i) );
    		for ( .@j = 3; .@j < getd(".twelve"+ .@i +"size"); .@j += 2 )
    			.totalchance[.@i] += getd(".twelve"+ .@i +"["+ .@j +"]");
    		for ( .@j = 3; .@j < getd(".twelve"+ .@i +"size"); .@j += 2 ) {
    			.@chance = getd(".twelve"+ .@i +"["+ .@j +"]") *10000 / .totalchance[.@i];
    			.@division = .@chance / 100;
    			.@remainder$ = .gchance % 100;
    			while ( getstrlen(.@gremainder$) < 2 )
    				.@remainder$ = insertchar(.@remainder$, "0", 0);
    			setd ".chance_display_item"+ .@i +"$["+ .@j +"]", .@division +"."+ .@remainder$ +"%";
    		}
    	}
    
    	end;
    }

     


  10. 1 hour ago, AnnieRuru said:
      Reveal hidden contents
    
    
    function	script	F_MesItemInfo	{
    	.@item = getarg(0);
    	.@itemname$ = getitemname(.@item);
    	if (.@itemname$ != "null") {
    		.@itemslot = getitemslots(.@item);
    		if (.@itemslot)
    			.@itemname$ = sprintf("%s [%d]", .@itemname$, .@itemslot);
    	}
    	else
    		.@itemname$ = "Unknown Item";
    	if (PACKETVER >= 20150729)
    		return sprintf("<ITEM>%s<INFO>%d</INFO></ITEM>", .@itemname$, .@item);
    	else if (PACKETVER >= 20130130)
    		return sprintf("<ITEMLINK>%s<INFO>%d</INFO></ITEMLINK>", .@itemname$, .@item);
    	else
    		return .@itemname$;
    }
    
    function	script	timeleft__	{
    	.@left = getarg(0);
    	if ( .@left <= 0 )
    		return getarg(0);
    	.@day = .@left / 86400;
    	.@hour = .@left % 86400 / 3600;
    	.@min = .@left % 3600 / 60;
    	.@sec = .@left % 60;
    	if ( .@day )
    		return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
    	else if ( .@hour )
    		return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
    	else if ( .@min )
    		return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
    	else
    		return sprintf( _$( "%d sec" ), .@sec );
    }
    
    prontera,155,185,5	script	kjdsfhskhf	1_F_MARIA,{
    //	#daily_supply = 0;
    	.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
    	if ( #daily_supply == .@today ) {
    		mes "You have already taken today's supply";
    		mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
    	}
    	else if ( checkweight( Knife, 3 ) == false ) {
    		mes "It appears you have overweight";
    	}
    	else {
    		mes "Retrieving today's supply...";
    		for ( .@i = 1; .@i <= 3; ++.@i ) {
    			.@r = rand(.totalchance[.@i]);
    			for ( .@j = 3; ( .@r -= getd(".item"+ .@i +"["+ .@j +"]") ) >= 0; .@j += 2 );
    			getitem getd(".item"+ .@i +"["+( .@j -1 )+"]"), rand( getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]") );
    		}	
    		#daily_supply = .@today;
    	}
    	next;
    //	chinese government enforce the law when giving items based on probability
    	mes "The Chances are:-";
    	for ( .@i = 1; .@i <= 3; ++.@i ) {
    		mes " ";
    		mesf "Set %d :", .@i;
    		mesf "Randomly get any one type of these item, the amount between %d~%d", getd(".item"+ .@i +"[0]"), getd(".item"+ .@i +"[1]");
    		for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
    			mesf "%s : %s", F_MesItemInfo( getd(".item"+ .@i +"["+( .@j -1 )+"]") ), getd(".chance_display_item"+ .@i +"$["+ .@j +"]");
    	}
    	close;
    OnInit:
    	setarray .item1,
    		1, 10, // amount : rand(1,10)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Red_Potion,    5,
    		Orange_Potion, 4,
    		Yellow_Potion, 3,
    		White_Potion,  2,
    		Blue_Potion,   1,
    		Green_Potion,  6;
    
    	setarray .item2,
    		5, 15, // amount : rand(5,15)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Red_Herb,    5,
    		Yellow_Herb, 4,
    		White_Herb,  3,
    		Blue_Herb,   2,
    		Green_Herb,  1;
    
    	setarray .item3,
    		10, 20, // amount : rand(10,20)
    	//	chance of getting the items Set#1
    	//	<Item ID>,<chance>
    		Apple,        5,
    		Banana,       4,
    		Grape,        3,
    		Carrot,       2,
    		Sweet_Potato, 1,
    		Meat,         99, 
    		Honey,        50,
    		Milk,         100;
    
    	for ( .@i = 1; .@i <= 3; ++.@i ) {
    		setd ".item"+ .@i +"size", getarraysize( getd(".item"+ .@i) );
    		for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 )
    			.totalchance[.@i] += getd(".item"+ .@i +"["+ .@j +"]");
    		for ( .@j = 3; .@j < getd(".item"+ .@i +"size"); .@j += 2 ) {
    			.@chance = getd(".item"+ .@i +"["+ .@j +"]") *10000 / .totalchance[.@i];
    			.@division = .@chance / 100;
    			.@remainder$ = .@chance % 100;
    			while ( getstrlen(.@remainder$) < 2 )
    				.@remainder$ = insertchar(.@remainder$, "0", 0);
    			setd ".chance_display_item"+ .@i +"$["+ .@j +"]", .@division +"."+ .@remainder$ +"%";
    		}
    	}
    	end;
    }

     

    erm ... its getting interestingly ... complexity ...

    Perfect!
    Thank you so much @AnnieRuru


  11. 19 minutes ago, AnnieRuru said:

    https://github.com/AnnieRuru/Release/blob/master/Guides/Daily Quest - use gettimetick(2) or gettimestr.md

    
    function	script	timeleft__	{
    	.@left = getarg(0);
    	if ( .@left <= 0 )
    		return getarg(0);
    	.@day = .@left / 86400;
    	.@hour = .@left % 86400 / 3600;
    	.@min = .@left % 3600 / 60;
    	.@sec = .@left % 60;
    	if ( .@day )
    		return sprintf( _$( "%d day %d hour" ), .@day, .@hour );
    	else if ( .@hour )
    		return sprintf( _$( "%d hour %d min" ), .@hour, .@min );
    	else if ( .@min )
    		return sprintf( _$( "%d min %d sec" ), .@min, .@sec );
    	else
    		return sprintf( _$( "%d sec" ), .@sec );
    }
    
    prontera,155,185,5	script	kjdsfhskhf	1_F_MARIA,{
    	.@today = atoi( gettimestr( "%Y%m%d", 9 ) );
    	if ( #daily_supply == .@today ) {
    		mes "You have already taken today's supply";
    		mesf "You have to wait %s countdown to get next supply", timeleft__( getcalendartime(0,0) - gettimetick(2) );
    		close;
    	}
    	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(1,10);
    	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(5,15);
    	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(10,20);
    	#daily_supply = .@today;
    	end;
    }

    That was fast,

    I like to add some twist, can you add like rate for rare one.

    example item 506 is @ 5% and item 14510 is @ 2% success chance to get in set A

    for set b 505 @ 9% and 657 @ 1%

    for Set C 657 @ 10% 14510 @ 1%.
    of course ill be adding more item like bubble gums, Food items, TCGs

    something like that. thanks!


  12. 11 hours ago, utofaery said:
    
    
    prontera,158,167,3	script	Sample	4_M_SIT_NOVICE,{
    
    if (#xTaken + .next_take> gettimetick(2)) {
    	mes "[Random Item Giver]";
    	mes "Please talk to me after 24 hours.";
    	close;
    }
    	else {
    
    	mes "[Random Item Giver]";
    	mes "Have some of these!";
    		.@riRate1 = rand (.@Ai11,.@Ai12);
    		.@riRate2 = rand (.@Ai21,.@Ai22);
    		.@riRate3 = rand (.@Ai31,.@Ai32);
    		.@rItemid1 = .@Aitem1[rand(getarraysize (.@Aitem1))];
    		.@rItemid2 = .@Aitem2[rand(getarraysize (.@Aitem2))];
    		.@rItemid3 = .@Aitem3[rand(getarraysize (.@Aitem3))];
    		getitem ( .@rItemid1, .@riRate1 ) ;
    //		dispbottom ( "rItemid1 :: " + .@rItemid1 + " riRate1 :: " + .@riRate1 + " Name :: " + getitemname ( .@rItemid1 ) ) ; // debug use only !!!
    		getitem ( .@rItemid2, .@riRate2 ) ;
    //		dispbottom ( "rItemid2 :: " + .@rItemid2 + " riRate2 :: " + .@riRate2 + " Name :: " + getitemname ( .@rItemid2 ) ) ; // debug use only !!!
    		getitem ( .@rItemid3, .@riRate3 ) ;
    //		dispbottom ( "rItemid3 :: " + .@rItemid3 + " riRate3 :: " + .@riRate3 + " Name :: " + getitemname ( .@rItemid3 ) ) ; // debug use only !!!
    		#xTaken = gettimetick(2);
    		next;
         	close;
    }
    
    
    OnInit:
    
    	//set cooldown to take item again.
    	.next_take = 24*60*60;
    
    	//set item here
    	setarray .Aitem1[0],501,502,503,504,505,14510; 
    	setarray .Aitem2[0],601,602,603,604,605,14510;
    	setarray .Aitem3[0],701,702,703,704,705,14510;
    	//set rate here
    	.Ai11 = 1;
    	.Ai12 = 10;
    	.Ai21 = 5;
    	.Ai22 = 15;
    	.Ai31 = 10;
    	.Ai32 = 20;
    
    	end;
    }
    

    Refined and fixed up npc variable..

    @utofaery Hello, just what i wanted with success rate for rare ones, can you add countdown timer 

    "you still have 00 hours, minute/s seconds countdown to get next supplies"

    Also, im getting error like and no items were given.

    Buildin_getitem: Nonexistant item 0 requested.

     

    11 hours ago, AnnieRuru said:

    curious, why all 3 sets have same item ID ?
    so it means they can be repeated ?

     

    
    prontera,155,185,5	script	kjdsfhskhf	1_F_MARIA,{	
    	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(1,10);
    	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(5,15);
    	getitem F_Rand( 656, 657, 505, 645, 506, 14510 ), rand(10,20);
    	end;
    }

     

    Hi @AnnieRuru yes can be repeated. can you add rates for the rare ones, like the above. thnx!

     

     


  13. Hi!

    May I request a sample random prize giver.
    What I'm looking for is.

    This npc will give all 3 set  1 type of item from set A,B to C randomly, with random number of pieces too.

    Set A: random (1x,10x) pcs

    random :656 , 657 , 505 , 645 , 506 , 14510 

    Set B: random (5x,15x) pcs

    random :656 , 657 , 505 , 645 , 506 , 14510 

    Set C: random (10x,20x) pcs

    random :656 , 657 , 505 , 645 , 506 , 14510 

    please help me. 

    thanks!

×
×
  • Create New...

Important Information

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