Jump to content

Dolphin86

Members
  • Posts

    709
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by Dolphin86

  1. situation :

    player talk to npc, pick gathering quest or hunting quest

    now player will choose what item will he/she wants to gather with the amount he/she need, (there are list of items which player can select from)
    everytime she/he gather the desire item it will notify on player chatbox, when player have completed gathering all the item that he/she require, an npc chat box will appear in the player screen notifying he/she had completed the gathering.

    same goes with hunting quest..

    edit :

    player can check current gathering / hunting status or cancel it.

     

  2. im not sure if my question had been asked before or not, since i have been googling for past couple hours and i havent found any..

    what i am trying to get is, only 1 castle is open per city/town for woe for 1 hour, the last guild who attack or defend the emperium wins, and only the guild master will get 1 main items and some useable, and the rest of the guild will get some useable items (each city/town/castle item will be diffrent),

    only a guild with his guildmaster online are able to enter the war, 

    winning guild will have a period of 1 week until next guild war..

    or if someone can point me out on how to make current woe fit to my request that would be great..

  3. im using point system to add +1 points for each time a player picks 1 of each activity such as below ( menu )

    Spoiler
    	gathering:
    		if(mastery == 3) goto finish;
    		if(countitem(40008) > 1){
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "You have already picked";
    		mes "GATHERING MASTERY.";
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Now select again..";
    		menu	"Gathering",gathering,
    				"Weapon And Tool Crafting",weapon,
    				"Armor Crafting",armor,
    				"Cooking",cookzz,
    				"Slaughter",slaugh,
    				"Processing",process;
    		}
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Great pick!";
    			getitem 40008, 1;
    			mastery += 1;
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Now select again..";
    			menu	"Gathering",gathering,
    					"Weapon And Tool Crafting",weapon,
    					"Armor Crafting",armor,
    					"Cooking",cookzz,
    					"Slaughter",slaugh,
    					"Processing",process;

     

    now here is the weird part (for me) when i have pick only 1 activity (menu), the script reads my mastery points as more then 3, when it should allow me to pick 2 more, what i am trying to do is player can only pick 3 activity from the menu list, onces player had pick up 3 diffrent type of activity the script should send to this below..

    Spoiler
    	finish:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Great now you have 3 main";
    		mes "MASTERY, remember if you";
    		mes "in lost or need help";
    		mes "ask in discord";
    		close3;

     

    can someone help me with my mess up script..

    full script  (If someone can optimise and clean up my script that would be great help..) :

    Spoiler
    moc_para01,27,35,4	script	FARHANA	532,{
    	
    	soundeffect "menu.wav",0;
    	mes "^ce7e00 === FARHANA === ^000000";
    	mes "Hello, welcome to GUILD HALL,";
    	mes "how may i help you ?";
    	next;
    		switch(select("- Benefit become a member ?:- I wish to register as guild member:- Nothing")){
    			case 1:
    				next;
    				soundeffect "menu.wav",0;
    				mes "^ce7e00 === FARHANA === ^000000";
    				mes "Becoming a member of GUILD HALL";
    				mes "will enable you to boost your";
    				mes "MASTERY, take guild quest, and";
    				mes "many more...";
    				next;
    				switch(select("- MASTERY ?:- Guild Quest ?:- Nothing")){
    					case 1:
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "Yes mastery, such as gathering,";
    						mes "cooking, weapon and armor Crafting";
    						mes "as you progress on doing more of";
    						mes "those activity you will gain";
    						mes "more points to unlock more";
    						mes "higher tier stuff..";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "But sadly.. you can only have";
    						mes "3 main mastery to choose for.";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "as for the rest..";
    						mes "they will remain as tier 1";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "I would highly recomend to have";
    						mes "friends with diffrent mastery";
    						mes "so you can support each others";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "i guess that will that be all,";
    						mes "for now, see you soon..";
    						close3;
    					case 2:
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "Guild Quest is a great help,";
    						mes "each member start from low rank";
    						mes "such a [D Rank] but you can";
    						mes "higher rank as you completed";
    						mes "more quest, higher quest get's";
    						mes "better reward!";
    						close3;
    					case 3:
    						goto cancel;
    				}
    				
    			case 2:
    				next;
    				soundeffect "menu.wav",0;
    				mes "^ce7e00 === FARHANA === ^000000";
    				mes "Ahh.. you wish to register,";
    				mes "sure i can do that, but i will";
    				mes "need 1 Durengo Coin";
    				next;
    				switch(select("- I have it:- I need time")){
    					case 1:
    						if(countitem(40016) < 1 ) {
    							next;
    							soundeffect "menu.wav",0;
    							mes "^ce7e00 === FARHANA === ^000000";
    							mes "I dont think you have";
    							mes "1 Durengo Coin...";
    							next;
    							soundeffect "menu.wav",0;
    							mes "^ce7e00 === FARHANA === ^000000";
    							mes "You can exchange 1000 zeny";
    							mes "for 1 Durengo Coin from";
    							mes "my friend next to me";
    							close3;
    						}
    						delitem 40016, 1;
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "I will take your Durengo Coin now";
    						mes "oh yeah even if you cancel at any";
    						mes "part of these process, you will not";
    						mes "getting back that Durengo Coin";
    						mes "as it is require for precess fee";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "Great, now remember you can";
    						mes "only select 3 Mastery";
    						mes "and only those Mastery will be able";
    						mes "to level up, and as for the rest";
    						mes "it will remain as Tier 1..";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "Now before you pick a Mastery";
    						mes "if you are new to the server";
    						mes "i would highly sugguest to pick";
    						mes "GATHERING, PROCESSING and 1 of";
    						mes "your own pick.";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "But.. if you know what you are doing";
    						mes "then go for it..";
    						next;
    						soundeffect "menu.wav",0;
    						mes "^ce7e00 === FARHANA === ^000000";
    						mes "Now please select your";
    						mes "1st MASTERY";
    						mes "desire Mastery";
    						switch(select("- Gathering:- Weapon And Tool Crafting:- Armor Crafting:- Cooking:- Slaughter:- Processing:- I need time")){
    							case 1:
    								goto gathering_01;
    							case 2:
    								goto weapon_01;
    							case 3:
    								goto armor_01;
    							case 4:
    								goto cookzz_01;
    							case 5:
    								goto slaugh_01;
    							case 6:
    								goto process_01;
    							case 7:
    								goto cancel;
    						}
    						
    					case 2:
    						goto cancel;
    				}
    			case 3:
    				goto cancel;
    		}
    		
    	cancel:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "I shall see you soon..";
    		mes "Good Bye..";
    		close3;
    	
    	gathering_01:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "GATHERING....";
    		mes "nice choice, are you sure";
    		mes "you want to get";
    		mes "GATHERING MASTERY ?";
    		switch(select("- YES:- NO")){
    			case 1:
    				goto gathering;
    			case 2:
    				goto cancel;
    									
    		}
    	
    	gathering:
    		if(mastery == 3) goto finish;
    		if(countitem(40008) > 1){
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "You have already picked";
    		mes "GATHERING MASTERY.";
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Now select again..";
    		menu	"Gathering",gathering,
    				"Weapon And Tool Crafting",weapon,
    				"Armor Crafting",armor,
    				"Cooking",cookzz,
    				"Slaughter",slaugh,
    				"Processing",process;
    		}
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Great pick!";
    			getitem 40008, 1;
    			mastery += 1;
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Now select again..";
    			menu	"Gathering",gathering,
    					"Weapon And Tool Crafting",weapon,
    					"Armor Crafting",armor,
    					"Cooking",cookzz,
    					"Slaughter",slaugh,
    					"Processing",process;
    		
    	weapon:
    		if(mastery == 3) goto finish;
    		if(countitem(40039) > 1){
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "You have already picked";
    		mes "WEAPON AND TOOL MASTERY.";
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Now select again..";
    		menu	"Gathering",gathering,
    				"Weapon And Tool Crafting",weapon,
    				"Armor Crafting",armor,
    				"Cooking",cookzz,
    				"Slaughter",slaugh,
    				"Processing",process;
    		}
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Great pick!";
    			getitem 40039, 1;
    			mastery += 1;
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Now select again..";
    			menu	"Gathering",gathering,
    					"Weapon And Tool Crafting",weapon,
    					"Armor Crafting",armor,
    					"Cooking",cookzz,
    					"Slaughter",slaugh,
    					"Processing",process;
    		
    	weapon_01:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "WEAPON AND TOOL CRAFTING....";
    		mes "nice choice, are you sure";
    		mes "you want to get ";
    		mes "WEAPON AND TOOL CRAFTING MASTERY ?";
    		switch(select("- YES:- NO")){
    			case 1:
    				goto weapon;
    			case 2:
    				goto cancel;
    									
    		}
    		
    	armor:
    		if(mastery == 3) goto finish;
    		if(countitem(40040) > 1){
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "You have already picked";
    		mes "ARMOR CRAFTING MASTERY.";
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Now select again..";
    		menu	"Gathering",gathering,
    				"Weapon And Tool Crafting",weapon,
    				"Armor Crafting",armor,
    				"Cooking",cookzz,
    				"Slaughter",slaugh,
    				"Processing",process;
    		}
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Great pick!";
    			getitem 40040, 1;
    			mastery += 1;
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Now select again..";
    			menu	"Gathering",gathering,
    					"Weapon And Tool Crafting",weapon,
    					"Armor Crafting",armor,
    					"Cooking",cookzz,
    					"Slaughter",slaugh,
    					"Processing",process;
    		
    	armor_01:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "ARMOR CRAFTING....";
    		mes "nice choice, are you sure";
    		mes "you want to get ";
    		mes "ARMOR CRAFTING MASTERY ?";
    		switch(select("- YES:- NO")){
    			case 1:
    				goto armor;
    			case 2:
    				goto cancel;
    		}
    	
    	cookzz:
    		if(mastery == 3) goto finish;
    		if(countitem(40038) > 1){
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "You have already picked";
    		mes "COOKING MASTERY.";
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Now select again..";
    		menu	"Gathering",gathering,
    				"Weapon And Tool Crafting",weapon,
    				"Armor Crafting",armor,
    				"Cooking",cookzz,
    				"Slaughter",slaugh,
    				"Processing",process;
    		}
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Great pick!";
    			getitem 40038, 1;
    			mastery += 1;
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Now select again..";
    			menu	"Gathering",gathering,
    					"Weapon And Tool Crafting",weapon,
    					"Armor Crafting",armor,
    					"Cooking",cookzz,
    					"Slaughter",slaugh,
    					"Processing",process;
    	
    	cookzz_01:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "COOKING....";
    		mes "nice choice, are you sure";
    		mes "you want to get ";
    		mes "COOKING MASTERY ?";
    		switch(select("- YES:- NO")){
    			case 1:
    				goto cookzz;
    			case 2:
    				goto cancel;
    		}
    	
    	slaugh:
    		if(mastery == 3) goto finish;
    		if(countitem(40041) > 1){
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "You have already picked";
    		mes "SLAUGHTER MASTERY.";
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Now select again..";
    		menu	"Gathering",gathering,
    				"Weapon And Tool Crafting",weapon,
    				"Armor Crafting",armor,
    				"Cooking",cookzz,
    				"Slaughter",slaugh,
    				"Processing",process;
    		}
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Great pick!";
    			getitem 40041, 1;
    			mastery += 1;
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Now select again..";
    			menu	"Gathering",gathering,
    					"Weapon And Tool Crafting",weapon,
    					"Armor Crafting",armor,
    					"Cooking",cookzz,
    					"Slaughter",slaugh,
    					"Processing",process;
    	
    	slaugh_01:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "SLAUGHTER....";
    		mes "nice choice, are you sure";
    		mes "you want to get ";
    		mes "SLAUGHTER MASTERY ?";
    		switch(select("- YES:- NO")){
    			case 1:
    				goto slaugh;
    			case 2:
    				goto cancel;
    		}
    	
    	process:
    		if(mastery == 3) goto finish;
    		if(countitem(40007) > 1){
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "You have already picked";
    		mes "PROCESSING MASTERY.";
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Now select again..";
    		menu	"Gathering",gathering,
    				"Weapon And Tool Crafting",weapon,
    				"Armor Crafting",armor,
    				"Cooking",cookzz,
    				"Slaughter",slaugh,
    				"Processing",process;
    		}
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Great pick!";
    			getitem 40007, 1;
    			mastery += 1;
    			next;
    			soundeffect "menu.wav",0;
    			mes "^ce7e00 === FARHANA === ^000000";
    			mes "Now select again..";
    			menu	"Gathering",gathering,
    					"Weapon And Tool Crafting",weapon,
    					"Armor Crafting",armor,
    					"Cooking",cookzz,
    					"Slaughter",slaugh,
    					"Processing",process;
    		
    	process_01:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "PROCESSING....";
    		mes "nice choice, are you sure";
    		mes "you want to get ";
    		mes "PROCESSING MASTERY ?";
    		switch(select("- YES:- NO")){
    			case 1:
    				goto process;
    			case 2:
    				goto cancel;
    		}
    	finish:
    		next;
    		soundeffect "menu.wav",0;
    		mes "^ce7e00 === FARHANA === ^000000";
    		mes "Great now you have 3 main";
    		mes "MASTERY, remember if you";
    		mes "in lost or need help";
    		mes "ask in discord";
    		close3;
    		
    }

     

  4. Error as shown above, request help how should it be ?

    Script:

    Spoiler
    
    function	script	craft	{
    
    	soundeffect "menu.wav",0;
    	mes "Select categories";
    	next;
    	switch(select("- Weapons And Tools:- Armor:- Cancel")){
    	
    		case 1:
    			next;
    			soundeffect "menu.wav",0;
    			switch(select("- Stone Knife:- Make Shift Axe: - Cancel")){
    				case 1:
    					soundeffect "menu.wav",0;
    					if(countitem(40000) < 4 ) {
    						mes "^ff0000 Require 4 Stone Pebbles ^000000";
    						close3;
    						}
    						else {
    							soundeffect "menu.wav",0;
    							mes "^8fce00 Require 4 Stone Pebbles ^000000";
    							next;
    							switch(select("- Start Crafting: - Cancel")){
    								case 1:
    									mes "Crafting";
    									soundeffect "gathering.wav",0;
    									addtimer 11,strnpcinfo(0)+"::OnTest";
    									progressbar "0xFFFFFF",11;
    									next;
    									soundeffect "menu.wav",0;
    									delitem 40000, 4;
    									getitem 40004, 1;
    									wep_points += 1;
    									dispbottom "Gain +1 Weapon Crafting Points";
    									close3;
    									
    								case 2:
    									goto cancel;
    							}
    						}
    				case 2:
    					soundeffect "menu.wav",0;
    					if(countitem(40024) < 1 && countitem(40031) < 1 && countitem(40023) < 1){
    						mes "^ff0000 Require";
    						mes "1 Big Boulder";
    						mes "1 Green Stalk";
    						mes "1 Green Tree Branch ^000000";
    						close3;
    						}
    						
    							soundeffect "menu.wav",0;
    							mes "^8fce00 Require";
    							mes "1 Big Boulder";
    							mes "1 Green Stalk";
    							mes "1 Green Tree Branch ^000000";
    							next;
    							switch(select("- Start Crafting: - Cancel")){
    								case 1:
    									mes "Crafting";
    									soundeffect "gathering.wav",0;
    									addtimer 11,strnpcinfo(0)+"::OnTest";
    									progressbar "0x00ff00",11;
    									next;
    									soundeffect "menu.wav",0;
    									delitem 40024, 1;
    									delitem 40031, 1;
    									delitem 40023, 1;
    									getitem 40030, 1;
    									wep_points += 1;
    									dispbottom "Gain +1 Weapon Crafting Points";
    									close3;
    									
    								case 2:
    									goto cancel;
    							}
    						
    				case 3:
    					goto cancel;
    			}
    		case 2:
    			next;
    			soundeffect "menu.wav",0;
    			switch(select("- Rough Skin Armor: - Cancel")){
    				
    				case 1:
    					if(countitem(40010) < 10 ) {
    						mes "^ff0000 Require";
    						mes "10 Monster Skin ^000000";
    						close3;
    						}
    						else {
    							soundeffect "menu.wav",0;
    							mes "^8fce00 Require 10 Monster Skin ^000000";
    							next;
    							switch(select("- Start Crafting: - Cancel")){
    								case 1:
    									mes "Crafting";
    									soundeffect "gathering.wav",0;
    									addtimer 11,strnpcinfo(0)+"::OnTest";
    									progressbar "0x00ff00",11;
    									soundeffect "menu.wav",0;
    									delitem 40010, 10;
    									getitem 40018, 1;
    									armor_points += 1;
    									dispbottom "Gain +1 Armor Crafting Points";
    									close3;
    								case 2:
    									goto cancel;
    							}
    						}
    				case 2:
    					goto cancel;
    			}
    		case 3:
    			goto cancel;
    	}
    	
    cancel:
    	soundeffect "menu.wav",0;
    	mes "craft cancel";
    	close3;
    
    OnTest:
    	end;
    }

     

    Thank You..

  5. as title, i have all 3 items in my inventory but somehow the script did not detect my item and keep saying i dont have enough..?

    Spoiler
    if(countitem(40024) < 1 | countitem(40031) < 1 | countitem(40027) < 1){
    	mes "^ff0000 Require";
    	mes "1 Big Boulder";
    	mes "1 Green Stalk";
    	mes "1 Green Tree Branch ^000000";
    	close3;
    }
    	soundeffect "menu.wav",0;
    	mes "^8fce00 Require";
    	mes "1 Big Boulder";
    	mes "1 Green Stalk";
    	mes "1 Green Tree Branch ^000000";
    	next;
    		switch(select("- Start Crafting: - Cancel")){
    			case 1:
    				mes "Crafting";
    				soundeffect "gathering.wav",0;
    				addtimer 11,strnpcinfo(0)+"::OnTest";
    				progressbar "0x00ff00",11;
    				next;
    					soundeffect "menu.wav",0;
    					delitem 40024, 1;
    					delitem 40031, 1;
    					delitem 40027, 1;
    				    getitem 40030, 1;
    					wep_points += 1;
    					dispbottom "Gain +1 Weapon Crafting Points";
    					close3;
    									
    			case 2:
    				goto cancel;
    		}

     

     

  6. The idea was when player talk to this npc it will have option to create an item, and it will require player to wait until the process is complete, that part works fine without an error, but the problem start when server reboot, restart or stop, if player was waiting the item to complete and server reboot or restart during that period, player will get stuck as the count time kinda stuck and it keep saying player to wait until the progress is done, can someone help me fix this script ?

    Spoiler
    -	script	Public Butcher Table	FAKE_NPC,{
    	.@wrkb_id = atoi(strnpcinfo(2));
    
    	if($wrkb_crafting_state[.@wrkb_id] == 1) {
    		soundeffect "menu.wav",0;
    		mes "Please wait until the process is finished. ";
    		close;
    	}
    
    	if($wrkb_crafting_state[.@wrkb_id] == 2) {
    		soundeffect "menu.wav",0;
    		mes "Here are your butcher items.";
    		for(.@i = 0; .@i < getarraysize(getd("$wrkb_" + .@wrkb_id + "_products")); .@i += 2)
    			getitem(getd("$wrkb_" + .@wrkb_id + "_products[" + .@i + "]"), getd("$wrkb_" + .@wrkb_id + "_products[" + (.@i + 1) + "]"));
    
    		delwaitingroom;
    		$wrkb_crafting_state[.@wrkb_id] = 0;
    		close;
    	}
    	
    	soundeffect "menu.wav",0;
    	mes "==============================";
    	mes "^ff0000 Any item created unattended by using the Public Butcher Table can be stolen by other players !! ^000000";
    	mes "==============================";
    	next;
    	soundeffect "menu.wav",0;
    	mes "Select";
    	soundeffect "menu.wav",0;
    	next;
    	switch(select("- Take Out Meat:- Take Out Bone:- Take Out Skin:- Cancel")) {
    		case 1:
    			switch(select("- Take Out 1 Meat:- Take Out 10 Meat:- Take Out 100 Meat:- Cancel")) {
    				case 1:
    					if(countitem(40006) < 1 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 1 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 1 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							case 1:
    								delitem(40006, 1);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 1, 40011, 1);
    								butcher_points += 1;
    								dispbottom "Gain +1 Butchering Points";
    								goto OnCraftingStart;
    							case 2:
    								goto cancel;
    						}
    				case 2:
    					if(countitem(40006) < 10 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 10 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 10 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							case 1:
    								delitem(40006, 10);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 10, 40011, 10);
    								butcher_points += 10;
    								dispbottom "Gain +10 Butchering Points";
    								goto OnCraftingStart;
    							case 2:
    								goto cancel;
    						}
    				case 3:
    					if(countitem(40006) < 100 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 1 Monster Loot";
    						mes "- 100 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 1 Monster Loot";
    						mes "- 100 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							case 1:
    								delitem(40006, 100);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 100, 40011, 100);
    								butcher_points += 100;
    								dispbottom "Gain +100 Butchering Points";
    								goto OnCraftingStart;
    							case 2:
    								goto cancel;
    						}
    				case 4:
    					goto cancel;
    			}
    			
    				
    		case 2:
    			switch(select("- Take Out 1 Bone:- Take Out 10 Bone:- Take Out 100 Bone:- Cancel")) {
    				case 1:
    					if(countitem(40006) < 1 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 1 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 1 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							case 1:
    								delitem(40006, 1);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 1, 40009, 1);
    								butcher_points += 1;
    								dispbottom "Gain +1 Butchering Points";
    								goto OnCraftingStart;
    						
    							case 2:
    								goto cancel;
    						}
    				case 2:
    					if(countitem(40006) < 10 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 10 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 10 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							case 1:
    								delitem(40006, 10);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 10, 40009, 10);
    								butcher_points += 10;
    								dispbottom "Gain +10 Butchering Points";
    								goto OnCraftingStart;
    						
    							case 2:
    								goto cancel;
    						}
    				case 3:
    					if(countitem(40006) < 100 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 100 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 100 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							case 1:
    								delitem(40006, 100);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 100, 40009, 100);
    								butcher_points += 100;
    								dispbottom "Gain +100 Butchering Points";
    								goto OnCraftingStart;
    						
    							case 2:
    								goto cancel;
    						}
    			}
    			
    		case 3:
    			switch(select("- Take Out 1 Skin:- Take Out 10 Skin:- Take Out 100 Skin:- Cancel")) {
    				case 1:
    					if(countitem(40006) < 1 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 1 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 1 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							
    							case 1:
    								delitem(40006, 1);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 1, 40010, 1);
    								butcher_points += 1;
    								dispbottom "Gain +1 Butchering Points";
    								goto OnCraftingStart;
    								
    							case 2:
    								goto cancel;
    						}
    				case 2:
    					if(countitem(40006) < 10 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 10 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 10 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							
    							case 1:
    								delitem(40006, 10);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 10, 40010, 10);
    								butcher_points += 10;
    								dispbottom "Gain +10 Butchering Points";
    								goto OnCraftingStart;
    								
    							case 2:
    								goto cancel;
    						}
    				case 3:
    					if(countitem(40006) < 100 || rentalcountitem(40005) < 1){
    						soundeffect "menu.wav",0;
    						mes "^ff0000 Require";
    						mes "- 100 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						close;
    					}
    						soundeffect "menu.wav",0;
    						mes "^8fce00 Require";
    						mes "- 100 Monster Loot";
    						mes "- 1 Stone Knife ^000000";
    						next;
    						soundeffect "menu.wav",0;
    						switch(select("- Start:- Cancel")) {
    							
    							case 1:
    								delitem(40006, 100);
    								setarray(getd("$wrkb_" + .@wrkb_id + "_products"), 40012, 100, 40010, 100);
    								butcher_points += 100;
    								dispbottom "Gain +100 Butchering Points";
    								goto OnCraftingStart;
    								
    							case 2:
    								goto cancel;
    						}
    				case 4:
    					goto cancel;
    			}
    			
    		case 4:
    			goto cancel;
    	}
    	end;
    
    	cancel:
    		soundeffect "menu.wav",0;
    		mes "Process Cancel";
    		close;
    
    	OnCraftingStart:
    		$wrkb_crafting_state[.@wrkb_id] = 1;
    		waitingroom("PROCESSING...", 0);
    		initnpctimer;
    		end;
    
    	OnTimer60000:
    		$wrkb_crafting_state[atoi(strnpcinfo(2))] = 2;
    		delwaitingroom;
    		waitingroom("COMPLETED!", 0);
    		end;
    
    	OnInit:
    		.@wrkb_id = atoi(strnpcinfo(2));
    		if(.@wrkb_id < 1) end;
    
    		if($wrkb_crafting_state[.@wrkb_id] == 1) goto OnCraftingStart;
    }
    //Duplicate
    //=====================================================
    new_1-3,99,128,6	duplicate(Public Butcher Table)	Public Butcher Table#1	11004
    new_1-3,95,128,6	duplicate(Public Butcher Table)	Public Butcher Table#2	11004
    new_1-3,91,128,6	duplicate(Public Butcher Table)	Public Butcher Table#3	11004
    new_1-3,99,134,6	duplicate(Public Butcher Table)	Public Butcher Table#4	11004
    new_1-3,95,134,6	duplicate(Public Butcher Table)	Public Butcher Table#5	11004
    new_1-3,91,134,6	duplicate(Public Butcher Table)	Public Butcher Table#6	11004

     

    thanks..

  7. i been staring at this script and i cant find what was missing.. can someone help me find what was wrong?

    script :

    Spoiler
    new_1-3,90,53,5	script	Dudu	474,{
    	
    	if(Cooking == 1) goto Cooking1; // Line 402 is here //
    	if(Cooking == 2) goto Cooking2; 
    	if(Cooking == 3) goto Cooking3;
    
    	soundeffect "menu.wav",0;
    	mes "Oh !, hello there child";
    	mes "how can i help you ?";
    	next;
    	soundeffect "menu.wav",0;
    	switch(select("- What are you doing ?:- Nothing")){
    		case 1:
    			soundeffect "menu.wav",0;
    			mes "Well i am cooking Satey";
    			mes "it's good recover your";
    			mes "health..";
    			next;
    			switch(select("- Can you teach me ?:- Good Bye")){
    				case 1:
    					soundeffect "menu.wav",0;
    					mes "Oh !, sure it's easy";
    					mes "bring me 10 branch";
    					mes "and 10 Monster loot";
    					mes "and i teach you how";
    					next;
    					soundeffect "menu.wav",0;
    					mes "Want to give it a try?";
    					switch(select("- Yes !:- Good Bye")){
    						case 1:
    							soundeffect "menu.wav",0;
    							mes "Great, now gather";
    							mes "10 Branch and";
    							mes "10 Monster Loot";
    							next;
    							soundeffect "menu.wav",0;
    							mes "come back when you have it";
    							set Cooking,1;
    							close3;
    						case 2:
    							soundeffect "menu.wav",0;
    							mes "Well, com back if you want to learn it";
    							close3;
    					}
    				case 2:
    					soundeffect "menu.wav",0;
    					mes "Good bye child";
    					close3;
    					
    			}
    			
    		case 2:
    			soundeffect "menu.wav",0;
    			mes "Good bye child..";
    			close3;
    			
    	}
    Cooking1:
    	if(countitem(40006) < 10 || countitem(40023) < 10){
    		soundeffect "menu.wav",0;
    		mes "^ff0000 My child, you dont have";
    		mes "10 Monster Loot and";
    		mes "10 Branch.. ^000000";
    		next;
    		soundeffect "menu.wav",0;
    		mes "Come back when you have";
    		mes "10 Branch and 10 Monster Loot";
    		close3;
    	}
    	soundeffect "menu.wav",0;
    	mes "Great work child";
    	mes "now on this Bon Fire";
    	mes "select Grill Meat Satey";
    	next;
    	soundeffect "menu.wav",0;
    	mes "Once you have Meat Satey";
    	mes "talk to me again";
    	set Cooking,2;
    	close3;
    	
    Cooking2:
    	if(countitem(40036) < 1){
    		soundeffect "menu.wav",0;
    		mes "Where are the Meat Satey?";
    		mes "On the BonFire Select";
    		mes "Grill Meat Satey";
    		close3;
    	}
    	soundeffect "menu.wav",0;
    	mes "That was easy right?";
    	mes "the more you cook";
    	mes "more dish you can make";
    	mes "as long you have all";
    	mes "ingredients.";
    	atcommand "@jlvl 1";
    	atcommand "@blvl 1";
    	set Cooking,3;
    	close3;
    	
    Cooking3:
    	soundeffect "menu.wav",0;
    	mes "Hello child, i hope everything is good eh?";
    	close3;
    }

     

     

  8. 7 minutes ago, Chaos92 said:

    adding custom robe doesnt affect this files. that extern settings isnt affected by robe related files, also with the twitter part which is also externalsettings part.

    So if it works correctly before, go check your old externalsetting parts, or get it from chris english translation project.

    i did, hell i even make a new client, and disable the last modd i did, that did not even work..

  9. 1.png.4ca19cc0eab8bc6da9ffaeedbe6dfec7.png2.png.acb5134d06f6584f56b4c7e663b8565a.png

     

    i had no idea how to solve this problem, but chris did mention on how to solve it, but i guess i am too dumb to understand how should i do it,

    i had copy a fresh new of  This and repatch it to my GRF, that is all i did but there are some more but i had no idea how, can someone guide me?

    copy the whole folder and rename it "service_usa"
    and ExternalSettings, same, instead of ExternalSettings_kr -->  ExternalSettings_usa
    Also modify twitter configuration

     

    That's only needed if:
    Langtype in s/clientinfo.xml is 1
    Always load kRO ExternalSettings patch is not available

     

    One of the changes I did ages ago thanks to secret, was to implement both ways for compatiblity.
    So no matter what client you are using, especially 2020-03-04+ clients when it started, they work as well.
    More on that matter:

    https://llchrisll.github.io/ROTPDocs/guides/webservice/

    if you copied the file, you shouldn't get that error anymore anyway, the rest is just the functionality about it.

     

    soo can someone tell me step by step how can i fix this?

    my server was running smoothly without an error, and then i thought maybe i should try 

    Product version : 1.2.1.9
    Assembly version : 1.0.3.419
    Author : Tokeiburu

    right after im done editing ( Adding custom robe ) i save it, and repatch the server with all the update files, next thing i get was those error, please help i had no idea how to fix this even when had a solution in my face but i dont understand how to do it..

  10. @Skorm well what i plan to do was player will do some activity example, crafting weapon, once player had succesfully craft the desire weapon, he will get crafting points, now if player wish to view his current point he will use an infinate item that will recall an npc / script which will show all of his current points, ( weapon craft, armor craft, etc)

    and player can also spend his current points to unlock new stuff, example 100 weapon crafting can be spend to unlock bonus +10 dmg (i am using an etc item as indicator of player which will detect on the crafting sytem npc that will open a feature where player can craft +10 dmg weapons, but if i understand this point system i would just use the points instend of items, but i am worry if the points would be reset, when server reboot, restart or stop...)

  11. 9 hours ago, Racaae said:

    Hello. Useable Item function example:

      - Id: 12000000
        AegisName: Task_Book
        Name: Task Book
        Type: DelayConsume
        Script: |
          callfunc "F_custom_points_item";

     

    function	script	F_custom_points_item	{
    	mes "You have ^0055FF" + @custom_points + "^000000 Points.";
    	close;
    }

     

    //===== rAthena Script =======================================
    //= Hunting Missions
    //===== By: ==================================================
    //= Euphy
    //===== Current Version: =====================================
    //= 1.4
    //===== Compatible With: ===================================== 
    //= rAthena Project
    //===== Description: =========================================
    //= Random hunting missions.
    //= Rewards are based on quest difficulty.
    //= 
    //= NOTE: Requires SQL mob database.
    //===== Additional Comments: =================================
    //= 1.0 Initial script.
    //= 1.1 Small improvements and fixes.
    //= 1.2 Added party support and replaced blacklists with an
    //=     SQL query, both thanks to AnnieRuru.
    //= 1.3 Re-added a blacklist adapted for the SQL query.
    //= 1.3a Added mission reset options.
    //= 1.3b Function updates.
    //= 1.4 Check for deleted characters, thanks to AnnieRuru.
    //=     Syntax updates and style cleaning.
    //============================================================
    
    yuno,160,85,3	script	Hunting Tasks	4_F_EDEN_MASTER,{
    function Chk;
    	cutin "arquien_n_atnad01", 2;
    	mes "[Hunting Tasks]";
    	mes "Hello, " + strcharinfo(0) + "!";
    	if (!#Task_Delay) {
    		next;
    		mes "[Hunting Tasks]";
    		mes "I can't find any records...";
    		mes "You must be new here!";
    		emotion ET_HUK;
    		next;
    		callsub Task_Info;
    		emotion ET_GO;
    		#Task_Delay = 1;
    		close3;
    	}
    	mes F_Rand("Working hard, as always...", "Not slacking, I hope...");
    	mes "Is there anything I can help";
    	mes "you with?";
    	mes " ";
    	mes "^777777~ You've completed " + F_InsertPlural(Task_Total,"task",0,"^0055FF%d^777777 %s") + ". ~^000000";
    	next;
    	switch(select(
    		((!Task0) ? " ~ New Task::" : ": ~ Task Status: ~ Abandon Task") +
    		": ~ Information: ~ Task Shop: ~ View Top Hunters: ~ ^777777Cancel^000000"
    	)) {
    	case 1:
    		mes "[Hunting Tasks]";
    		if (#Task_Count) {
    			mes "You've started a task";
    			mes "on another character.";
    			if (!@hm_char_del_check) {  // check for deleted character
    				query_sql("SELECT 1 FROM `char_reg_num` WHERE `key` = 'Task0' AND `char_id` IN(SELECT `char_id` FROM `char` WHERE `account_id` = " + getcharid(3) + ")", .@i);
    				if (!.@i) {
    					next;
    					mes "[Hunting Tasks]";
    					mes "I can't seem to find any records";
    					mes "for that character, though...";
    					mes "One moment, please.";
    					emotion ET_SCRATCH;
    					#Task_Count = 0;
    				}
    				@hm_char_del_check = true;
    			}
    			close3;
    		}
    		if (#Task_Delay > gettimetick(2) && .Delay) {
    			mes "I'm afraid you'll have to wait " + Time2Str(#Task_Delay) + " before taking another task.";
    			close3;
    		}
    		mes "You must hunt:";
    		if (.no_sql) {
    			for (.@i = 0; .@i < .Quests; .@i++) {
    				do {
    					.@id = getrandmobid(MOBG_BRANCH_OF_DEAD_TREE, RMF_ALL, BaseLevel+15);
    				} while (countinarray(.@mob, .@id) || (BaseLevel<=99 && strmobinfo(3,.@id) < BaseLevel-20) || (BaseLevel>99 && strmobinfo(3,.@id) < 90));
    				setarray .@mob[.@i],.@id;
    			}
    		}
    		else
    			query_sql("SELECT ID FROM `" + .mob_db$ + "` WHERE left(name_aegis, 4) != 'meta' AND left(name_aegis, 2) != 'E_' AND base_exp > 0 AND job_exp > 0 AND (class != 'boss' OR class is null) AND (drop3_item like '%_card' OR drop4_item like '%_card' OR drop5_item like '%_card' OR drop6_item like '%_card' OR drop7_item like '%_card' OR drop8_item like '%_card' OR drop9_item like '%_card' OR drop10_item like '%_card') AND ID < 2000 AND instr('"+.Blacklist$+"',ID) = 0 ORDER BY rand() LIMIT " + .Quests, .@mob);
    		for (.@i = 0; .@i < .Quests; .@i++) {
    			setd "Task" + .@i, .@mob[.@i];
    			setd "Task" + .@i +"_", 0;
    		}
    		#Task_Count = rand(.Count[0], .Count[1]);
    		callsub Task_Status;
    		next;
    		mes "[Hunting Tasks]";
    		mes "Report back when";
    		mes "you've finished.";
    		mes "Good luck!";
    		close3;
    	case 2:
    		mes "[Hunting Tasks]";
    		mes "Task status:";
    		callsub Task_Status;
    		close3;
    	case 3:
    		mes "[Hunting Tasks]";
    		mes "Do you really want to";
    		mes "abandon your task?";
    		if (.Reset < 0 && .Delay)
    			mes "Your delay time will not be reset.";
    		else if (.Reset > 0)
    			mes "It will cost " + F_InsertComma(.Reset) + " Zeny.";
    		next;
    		switch(select(" ~ Abandon...: ~ ^777777Cancel^000000")) {
    		case 1:
    			if (.Reset > 0) {
    				if (Zeny < .Reset) {
    					mes "[Hunting Tasks]";
    					mes "You don't have enough";
    					mes "Zeny to drop this task.";
    					emotion ET_SORRY;
    					close3;
    				}
    				Zeny -= .Reset;
    				emotion ET_MONEY;
    			}
    			mes "[Hunting Tasks]";
    			mes "Alright, I've dropped";
    			mes "your current task.";
    			specialeffect2 EF_STORMKICK4;
    			for (.@i = 0; .@i < .Quests; .@i++) {
    				setd "Task"+.@i, 0;
    				setd "Task"+.@i+"_", 0;
    			}
    			#Task_Count = 0;
    			if (.Reset < 0 && .Delay)
    				#Task_Delay = gettimetick(2) + (.Delay * 3600);
    			close3;
    		case 2:
    			mes "[Hunting Tasks]";
    			mes "I knew you were kidding!";
    			mes "Keep up the good work.";
    			emotion ET_SMILE;
    			close3;
    		}
    	case 4:
    		callsub Task_Info;
    		close3;
    	case 5:
    		mes "[Hunting Tasks]";
    		mes "You have ^0055FF" + @custom_points + "^000000 Task Points.";
    		mes "Use them well!";
    		callshop "task_shop",1;
    		npcshopattach "task_shop";
    		end;
    	case 6:
    		mes "[Hunting Tasks]";
    		mes "The top hunters are:";
    		query_sql("SELECT char_id AS id, (SELECT `name` FROM `char` WHERE char_id = id),`value` FROM `char_reg_num` WHERE `key` = 'Task_Total' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 5", .@id, .@name$, .@val);
    		for (.@i = 0; .@i < 5; .@i++)
    			mes "  [Rank " + (.@i+1) + "]  " + ((.@name$[.@i] == "") ? "^777777none" : "^0055FF" + .@name$[.@i]+"^000000 : ^FF0000" + .@val[.@i] + " pt.") + "^000000";
    		close3;
    	case 7:
    		mes "[Hunting Tasks]";
    		mes "Nothing? Okay...";
    		emotion ET_SCRATCH;
    		close3;
    	}
    	end;
    
    Task_Status:
    	@f = false;
    	deletearray .@j[0], getarraysize(.@j);
    	for (.@i = 0; .@i < .Quests; .@i++) {
    		.@j[.@i] = getd("Task" + .@i);
    		.@j[.Quests] = .@j[.Quests] + strmobinfo(3,.@j[.@i]);
    		.@j[.Quests+1] = .@j[.Quests+1] + (strmobinfo(6,.@j[.@i]) / (getbattleflag("base_exp_rate") / 100) * .Modifier[0]);
    		.@j[.Quests+2] = .@j[.Quests+2] + (strmobinfo(7,.@j[.@i]) / (getbattleflag("job_exp_rate") / 100) * .Modifier[1]);
    		mes " > "+Chk(getd("Task"+.@i+"_"),#Task_Count) + strmobinfo(1,.@j[.@i]) + " (" + getd("Task"+.@i+"_") + "/" + #Task_Count + ")^000000";
    	}
    
    	// Reward formulas:
    	.@Task_Points = 3 + (.@j[.Quests] / .Quests / 6);
    	.@Base_Exp = #Task_Count * .@j[.Quests+1] / 5;
    	.@Job_Exp = #Task_Count * .@j[.Quests+2] / 5;
    	.@Zeny = #Task_Count * .Quests * .@j[.@i] * .Modifier[2];
    
    	next;
    	mes "[Hunting Tasks]";
    	mes "Task rewards:";
    	mes " > Task Points: ^0055FF" + .@Task_Points + "^000000";
    	if (.Modifier[0])
    		mes " > Base Experience: ^0055FF" + F_InsertComma(.@Base_Exp) + "^000000";
    	if (.Modifier[1])
    		mes " > Job Experience: ^0055FF" + F_InsertComma(.@Job_Exp) + "^000000";
    	if (.Modifier[2])
    		mes " > Zeny: ^0055FF" + F_InsertComma(.@Zeny) + "^000000";
    	if (@f) {
    		@f = false;
    		return;
    	}
    	next;
    	mes "[Hunting Tasks]";
    	mes "Oh, you're done!";
    	mes "Good work.";
    	mes "Here's your reward.";
    	emotion ET_BEST;
    	specialeffect2 EF_ANGEL;
    	specialeffect2 EF_TRUESIGHT;
    	@custom_points += .@Task_Points;
    	BaseExp += .@Base_Exp;
    	JobExp += .@Job_Exp;
    	Zeny += .@Zeny;
    	for (.@i = 0; .@i < .Quests; .@i++) {
    		setd "Task" + .@i, 0;
    		setd "Task" + .@i+"_", 0;
    	}
    	#Task_Count = 0;
    	if (.Delay)
    		#Task_Delay = gettimetick(2) + (.Delay * 3600);
    	Task_Total++;
    	if (Task_Total == 1)
    		query_sql("INSERT INTO `char_reg_num` (`char_id`,`key`,`index`,`value`) VALUES (" + getcharid(0) + ",'Task_Total','0',1)");
    	else
    		query_sql("UPDATE `char_reg_num` SET `value` = " + Task_Total + " WHERE `char_id` = " + getcharid(0) + " AND `key` = 'Task_Total'");
    	close3;
    
    Task_Info:
    	mes "[Hunting Tasks]";
    	mes "If you so choose, I can assign";
    	mes "you a random hunting quest.";
    	mes "Some are easier than others, but";
    	mes "the rewards increase with difficulty.";
    	next;
    	mes "[Hunting Tasks]";
    	mes "Tasks points are shared";
    	mes "amongst all your characters.";
    	if (.Delay)
    		mes "Delay time is, too.";
    	mes "You can't take tasks on";
    	mes "multiple characters at once.";
    	next;
    	mes "[Hunting Tasks]";
    	mes "You can start a quest";
    	mes (.Delay ? "every " + ((.Delay == 1) ? "hour." : .Delay + " hours.") : "whenever you want.");
    	mes "That's everything~";
    	return;
    
    function Chk {
    	if (getarg(0) < getarg(1)) {
    		@f = true;
    		return "^FF0000";
    	} else
    		return "^00FF00";
    }
    
    OnBuyItem:
    	.@size = getarraysize(@bought_nameid);
    	for (.@i = 0; .@i < .@size; .@i++) {
    		.@j = inarray(.Shop, @bought_nameid[.@i]);
    		.@cost += (.Shop[.@j+1] * @bought_quantity[.@i]);
    	}
    	mes "[Hunting Tasks]";
    	if (.@cost > @custom_points)
    		mes "You don't have enough Task Points.";
    	else {
    		for (.@i = 0; .@i < .@size; .@i++) {
    			getitem @bought_nameid[.@i], @bought_quantity[.@i];
    			dispbottom "Purchased " + @bought_quantity[.@i] + "x " + getitemname(@bought_nameid[.@i]) + ".";
    		}
    		@custom_points -= .@cost;
    		mes "Deal completed.";
    		emotion ET_MONEY;
    	}
    	deletearray @bought_nameid[0], .@size;
    	deletearray @bought_quantity[0], .@size;
    	close3;
    
    OnNPCKillEvent:
    	if (!getcharid(1) || !.Party) {
    		if (!#Task_Count || !Task0) end;
    		for (.@i = 0; .@i < .Quests; .@i++) {
    			if (strmobinfo(1,killedrid) == strmobinfo(1,getd("Task" + .@i))) {
    				if (getd("Task" + .@i + "_") < #Task_Count) {
    					dispbottom "[Hunting Task] Killed " + (set(getd("Task" + .@i + "_"),getd("Task" + .@i + "_") + 1)) +
    					           " of " + #Task_Count + " " + strmobinfo(1,killedrid) + ".";
    					end;
    				}
    			}
    		}
    	} else if (.Party) {
    		.@mob = killedrid;
    		getmapxy(.@map1$,.@x1,.@y1);
    		getpartymember getcharid(1),1;
    		getpartymember getcharid(1),2;
    		for (.@i = 0; .@i < $@partymembercount; .@i++) {
    			if (isloggedin($@partymemberaid[.@i], $@partymembercid[.@i])) {
    				set .@Task_Count, getvar(#Task_Count, $@partymembercid[.@i]);
    				set .@Task0, getvar(Task0, $@partymembercid[.@i]);
    				set .@HP, readparam(HP, $@partymembercid[.@i]);
    
    				if (.@Task_Count && .@Task0 && .@HP > 0) {
    					getmapxy(.@map2$,.@x2,.@y2,BL_PC,rid2name($@partymemberaid[.@i]));
    					if ((.@map1$ == .@map2$ || .Party == 1) && (distance(.@x1,.@y1,.@x2,.@y2) <= 30 || .Party < 3)) {
    						for (.@j = 0; .@j < .Quests; .@j++) {
    							.@my_mob_id = getvar( getd("Task"+.@j),$@partymembercid[.@i] );
    							.@my_count = getvar( getd("Task"+.@j+"_"), $@partymembercid[.@i] );
    							if (strmobinfo(1,.@mob) == strmobinfo(1,.@my_mob_id)) {
    								if (.@my_count < .@Task_Count) {
    									setd "Task"+.@j+"_", (.@my_count+1), $@partymembercid[.@i];
    									dispbottom "[Hunting Task] Killed " + (.@my_count+1) + " of " + .@Task_Count + " " + strmobinfo(1,.@mob) + ".", 0x777777, $@partymembercid[.@i];
    									break;
    								}
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    	end;
    
    OnInit:
    	.Delay = 1;            // Quest delay, in hours (0 to disable).
    	.Quests = 3;            // Number of subquests per task (increases rewards).
    	.Party = 3;             // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only)
    	.Reset = 0;            // Reset options: -1 (abandoning task sets delay time), 0 (no delay time), [Zeny] (cost to abandon task, no delay time)
    	setarray .Count[0],     // Min and max monsters per subquest (increases rewards).
    		20,50;
    	setarray .Modifier[0],  // Multipliers for Base Exp, Job Exp, and Zeny rewards.
    		0,0,0;
    	.mob_db$ =              // Table name of SQL mob database
    		(checkre(0))?"mob_db_re":"mob_db";
    	setarray .Shop[0],      // Reward items: <ID>,<point cost> (about 10~20 points per hunt).
    		512,1,513,1,514,1,538,5,539,5,558,10,561,10;
    	.Blacklist$ =           // Blacklisted mob IDs.
    		"1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+
    		"1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+
    		"1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+
    		"1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+
    		"1975,1976,1977,1978,1979";
    	.no_sql = 1; 		// Ignore sql mob database
    
    	          
    
    

     

    the last script is kinda complicated for my level of knowladge, can you make a simpler version such as, in this situasion :

    mes "Click me to gain points";
    next;
    	switch(select("- Get Points:- Cancel")){
    		case 1:
    			mes "(script get points) +1 custom points";
    			close;
    		
    		case 2:
    			mes "Cancel";
    			close;
    
    }

    and how to spend the points?

  12. situation :

    1. Player talks to NPC A and do task, when complete player get @custom_points
    2. Player can view his current @custom_points by using a useable item (call function i have this cover but not on showing the current total @custom_points)
    3. Player can spend the @custom_points from statement above 

     

  13. hye i need a sample simple use of progress bar, 

    situasion :

    player click to npc, npc will ask start or cancel,
    
    if player pick start it will start progress bar for 1 minute,
    
    if player move during 1 minute progress bar will cancel all process are cancel
    
    if player complete that 1 mins progress bar, player recive item

    i just need a sample or an example to make this type of script...

  14. well that would work too but its kinda over work, since i had to manually add 1 by 1 every time i need to add a new custom npc, would be much easy if there is a numbers of id gap that is free to use, rather then manually add each npc 1 by 1 to server and client..

  15. hye i need to add a few serval custom npc sprites, i was told there are serval files on src, and client file which is needed to be edited, but i had no idea what file and how should i edit it properly, wish someone could show me the rope, thanks.

  16. im not sure what happen, i was all good and smooth a few hours ago, all i did was editing my server website and ading gepard, few hours later i was trying to login my server and i keep rejected to login, upon checking i got these error,

    Quote

    checking...

    Check complete.

    Looks like a good, nice rAthena!

    Logging is disabled

    Cannot start 'login-server', because it is already running p1318

    Cannot start 'char-server', because it is already running p1320

    Cannot start 'map-server', because it is already running p1322

    Cannot start 'web-server', because it is already running p1324

    rAthena was started.

    i have try reboot and stop my vps, still had the same issue... im lost here.

    please help.

  17. On 1/7/2024 at 10:24 AM, GM Winter said:

    if its the same as your back up file you will not get errors but try to put it inside the data folder not in the grf file 

    problem solved, i was stupid, my grf was encrypted i forgot that..

  18. hi, recently i acidently deleted my client files, lucky i had my backup files, but when i start the backup files, i fot this error, does anyone had any idea what the problem and how to fix it? 

    thanks

    Capture.PNG.e086e2fbf8dfa0f3c766523ad9e6879c.PNG

    1.PNG.384b5aca522b05f92b67a7bfeb0af862.PNG

×
×
  • Create New...