ToiletMaster
Members-
Content Count
146 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Staff Applications
Calendar
Everything posted by ToiletMaster
-
Dynamic Switch Statement with choices
ToiletMaster replied to ToiletMaster's question in Script Support
Thanks for the help! this time it works perfectly! thank you very much! i do have one more question though, as i was understanding your script, i tried to create an npc that deletes the quest using your method of accessing arrays, previously i did the manually method of deleting each quest by specifying each quest. But i can't seem to make it work, i tried various options such as copying the arrays over, and such and comparing with your script. the main difference i can see is that all your arrays during the for method is using .@ instead . would that make an impact here? i tried copying the arrays and setting it as .@ as well but it did not work. basically the main method would be checking if you've accepted any quest and upon any of the mentioned arrays were conditioned as 1, it would then erase that ID. Once again thank you for your help! [/s][s] for ( .@i = 0; .@i < .number_quest; .@i++ ){ if (questprogress (.quest_id[.@i] == 1)) erasequest .quest_id[.@i]; } mes "Quest Deleted"; close; OnInit: setarray .quest_id, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009; .number_quest = getarraysize(.quest_id); }[/s][s] edit: i understand i can set .@i = 20000 and <= 20009 and thus doing the change from there. however, my only concern would be what happens if we have jumping numbers from 20000,30000,40000 and such in this manner. edit: i managed to fixed it ! After referring once again to the script you posted, i managed to find out the problem! here's the one that's working for ( .@i = 0; .@i <= .number_quest ; .@i++ ){ if (questprogress (.quest_id[.@i]) == 1) erasequest .quest_id[.@i]; } mes "Quest Deleted"; close; OnInit: setarray .quest_id, 20001, 20002, 20003, 20004, 20005, 20006, 20007, 20008, 20009; .number_quest = getarraysize(.quest_id); } Thank you so much for the following script @@Emistry! It works brilliantly now! :thx: -
Dynamic Switch Statement with choices
ToiletMaster replied to ToiletMaster's question in Script Support
Hi emistry, thank you once again for your reply. I've just tested this the moment i got back but unfortunately i can't seem to get it working. i did not change the core part of the scripts aside from minor additions aside from that. i can't seem to select any of the choices i want for quest ID i've specified. I notice it could be this line if ( .@avail_quest_count >= .@quest_size ) i've checked the variable to see what were the cases and it's either 0,0; 3,3; 3;3 which states that my quest is completed thus disallowing me to continue, i've tried hard to crack this down and even created a script to delete all my quest entries related to the script to ensure that those quests aren't accepted at all. Would highly appreciate if you take a look to advise where i went wrong. Thank you once again. new_1-2,90,111,5 script Sample#quest 4_F_KAFRA2,{ mes ""+.@npcname$+""; mes "Please select category below"; .@category = select ( "Option 1", "Option 2", "Option 3" ) - 1; .@quest_size = getd( ".quest_id_"+.@category+"_size" ); copyarray .@quest,getd( ".quest_id_"+.@category ),.@quest_size; for ( .@i = 0; .@i < .@quest_size; .@i++ ) { if ( questprogress( .@quest_id[.@i] ) != 2 ) { .@menu$ = .@menu$ + "Level - "+.@quest_id[.@i]; .@avail_quest_count++; } .@menu$ = .@menu$ + ":"; } if ( .@avail_quest_count >= .@quest_size ) { mes ""+.@npcname$+""; mes "All quest finished."; mes "avail: "+.@avail_quest_count+"quest size: "+.@quest_size+""; close; } .@i = select( .@menu$ ) - 1; mes ""+.@npcname$+""; mes "Selected Quest Category "+( .@category+1 )+" - Level "+( .@i+1 )+" - "+.@quest_id[.@i]; if ( .@i > 0 ) { if ( questprogress( .@quest_id[.@i-1] ) != 2 ) { mes ""+.@npcname$+""; mes "You cant take this quest because you haven't finish the previous quests."; close; } } if ( questprogress( .@quest_id[.@i] ) == 1 ) { mes ""+.@npcname$+""; mes "You've already taken this quest but not yet complete."; close; } else //Quest Requirements started { if (.@quest_id[@i] == 20000) { mes ""+.@npcname$+""; mes "You have select quest 20000 as your current quest. "; setquest .@quest_id[.@i]; close; } } mes "Quest Accepted"; setquest .@quest_id[.@i]; close;OnInit: .@npcname$ = "[^FF0000 Sample ^000000]"; setarray .quest_id_1, 20001, 20002, 20003; .quest_id_1_size = getarraysize( .quest_id_1 ); setarray .quest_id_2, 20004, 20005, 20006; .quest_id_2_size = getarraysize( .quest_id_2 ); setarray .quest_id_3, 20007, 20008, 20009; .quest_id_3_size = getarraysize( .quest_id_3 ); end;} -
Dynamic Switch Statement with choices
ToiletMaster replied to ToiletMaster's question in Script Support
Hi Emistry, First and foremost, thank you for your reply. The sample that you've provided definitely worked in this case. However, my apologies as i guess i missed out one part of the explanation. Currently i've drawn a graph on how the dynamic switch was supposed to be like divided by Level 1, 2, 3. Followed by groups of A B C. For example, within level 1, you can see A B C groupings there, however if the person finished the A group level 1, he can see A group level 2 quests. However, not B group's Level 2 quest unless he has finished the Level 1 for B Group. I hope this explanation is not confusing, once again thank you for your time and i appreciate your help! edit image below for further reference. -
Hi there! Would like to know if this is possible? for example, i have these quest ID, let's say 1000,2000,3000 as my quest ID. Firstly, upon talking to the NPC, the npc would provide the choices for him to go through switch(select("accept quest 1000:cancel")){ case 1:setquest 1000;break; case 2:mes "ok";close;} however, upon finishing the quest for 1000, the option of 2000 instead would appear now. switch(select("accept quest 1000:accept quest 2000:cancel)){ case 1:setquest 1000;break; case 2:setquest 2000;break case 3:mes "ok";close;} Would like to know if this is possible? I understand there is a alternative where i can set if(questprogress(1000) == 2 && questprogress(2000) == 2)) to appear and make this happen, however, this would if it's sequenced, the scenario would now be if what happens if he finished 1000, and 3000 instead. thus this logic may not be applicable anymore unless it's manually coded for another 1000 && 3000 checking. Would like to know if there are any methods that can be done to check which quest he has done and the case would go accordingly to what he has done. Would appreciate if anyone could provide their advice on this. Thank you.
-
Hi there! Would like to confirm if anyone is using browedit 586 on windows 8.1? I've used 620 without any problems at all, however i do have the issue of having the dark spots which i believe could be solved by using 586, unfortunately it crashes upon configuring the same way i did on 620. things that i changed are only the directory and GRF files there. nothing else. Anyone have any idea or any revisions i could use to remove those dark spots atm? I've tried using compatibility view as well and it did not work. my OS is currently windows 8.1 professional, 64 bit. I'm not sure if hardware specs are required but i'll list it down as well i7 4790 8gb RAM GTX 760 Thank you. edit 2: it seems that it was my negligence that caused this. The issue i had was that i configured the rodesktop in the data folder. And the config file was reading ro.xml instead of rodesktop.xml therefore causing a mismatch in the program. for anyone who has this problem i hope it helps!
-
Thanks! i've just added you onto skype! will be waiting for your confirmation.
-
Hi there! Would like to know if there are any easy sample instances that are available for hercules? Currently i'm venturing to know more about instancing however, those that in the wiki are either providing too little information plus checking the existing instances are quite complex (at least for me) i do understand the basic logic of accepting quests, gathering quests etc etc, however seeing that i'm quite interested in doing more instancing, would there be any guide / samples that i could scan through? Thank you in advance! Regards, TM just to edit on what i've known so far, adding the 1@maps on the client side attaching the instance onto the player and perform checks if required create npc on the original map then disabling them, using another command to enable them when in instance. i did notice when i use 1@cata as an example, i find it strange that the monsters automatically appear, would anyone know why they appear upon entering as an instance instead of the map itself? i
-
Hi guys, i've created a custom item, however, is it possible to not allow the user to open the Box unless he has completed one of the quest? here's the item that i have so far. { Id: 20009 AegisName: "Shady_Gift_Box" Name: "Mr.Shady's Gift Box" Type: 0 Buy: 500 Sell: 50 Weight: 10 Script: <" if(questprogress(81000) != 2){ dispbottom "You shall not pass"; end; } else { getitem 20005,5; } ">}, it works on how i actually wish, the only problem is that the item goes missing instead, being able to reuse again.
-
awww thanks anyway for the option though! i'll keep it in mind thanks!
-
Hi this is definitely perfect in terms of limiting the character's attack, but how do i invoke the command to make him be able to attack again? it seems that currently using option 0 or resetting it doesn't work
-
Hi guys, I do have a request is that whether is it possible to have a script that does the following? Disguise the player for a set amount of time. Render the player to be ignored by all monsters Render the player to be unable to attack / use skill on any monsters. so far, i'm able to disguise the player using the disguise command, followed by ignored by all monsters using the @monsterignore from atcommand. But how can i mix and match all these 3 requirements? would be delighted if someone could help xD
-
Alternative method to use goto option
ToiletMaster replied to ToiletMaster's question in Script Support
This one works great! Thanks for the help! -
Hi there, imagine i have a script such as this mes "message 1";next;mes "message 2";next;mes "message 3";next;setquest 80000switch(select("case 1","case 2","case 3";)){case 1:mes "case 1";close;case 2:mes "case 2";close;case 3:mes "case 3";close; } if i want to do a check such as if(questprogress(80000) == 1){ and go back to message 2 onwards with the exact same conversation, it can be performed via a goto label, but i'd like to know if there's any alternative besides using the goto method as many has deemed this function to be quite dangerous and prefer to avoid this command.
-
Hi there GmOcean, Thank you for replying this thread! Initially i made another script similar to what you've placed but yours definitely seems much better and more easier to configure. mes "Quest 80003 Progress is "+questprogress(80003); mes "Quest 80004 Progress is "+questprogress(80004); mes "Quest 80005 Progress is "+questprogress(80005); mes "Quest 80006 Progress is "+questprogress(80006); close; However, currently it shows the active ID whether it's 0,1,2. I noticed you placed the text for inactive active and completed there, could there be a bug in the script perhaps? edit ---- i tried playing around with the script you gave, since we only have 3 states now which is 0 1 2 for the quests, quoting the one in the lastest doc folder *questprogress(<ID>{,PLAYTIME|HUNTING})If no additional argument supplied, return the state of the quest: 0 = Quest not started (not in quest log) 1 = Quest has been given 2 = Quest completedIf parameter 'PLAYTIME' is supplied: 0 = Quest not started (not in quest log) 1 = The time limit has not yet been reached 2 = The time limit has been reachedIf parameter 'HUNTING' is supplied: 0 = Quest not started (not in quest log) 1 = Player hasn't killed all of the target monsters 2 = Player has killed all of the target monsters therefore i would only need active and inactive since you've helped me out in playing 0 = has not started quest. in this case, mes "Quest [^0000FF"+ .@i +"^000000] is currently: "+((questprogress(.@i) == 2)?"^0000FFCompleted":(questprogress(.@i) == 1))+"^0000FFActive"; i've tried this statement above in contrary to the one you've provided, but it seems that it's not working , it works in the game but it doesn't the way i want it to, it's either shows (if state = 2) CompletedActive or if state 1 = 1Active. instead of just Completed / Active Just fixed the CompletedActive part, but i'm left with 1Active only. here's my current statement not sure how to remove that particular 1 there lol mes "Quest [^0000FF"+ .@i +"^000000] is currently: "+((questprogress(.@i) == 2)?"^0000FFCompleted":(questprogress(.@i) == 1)+"^0000FFActive")+"^000000";
-
Hi there! I'm trying to add a script into the item that loses 5% max hp every 3 seconds. i seem to have trouble on the script part. I guess it doesn't work the same way as scripts? I've tried itemheal, percentheal, heal to decrease the hp but it doesn't work. here's how i did it. script: <" OnInit:OnTimer1000:percentheal -5,0;end; "> am i missing something here?
-
Hi Guys, I got a pretty simple script down here, currently my main quest ID is 80003 and the problem now is, the quest status doesn't show the right one. it works for the matthias#tutorial script though. Example once im done with the quest with 80003 == 2, the 2nd npc doesn't show complete but shows inactive still. Currently my end goal is to show which quest is active and which is not for easier troubleshooting from my own end. Would be great if someone could guide me through on what i went wrong currently the one below shows the 1 quest that i'm looking at one quest, but in the future i plan to put more and more quests in. splendide_n,139,178,3 script Matthias#Tutorial 507,{ if(checkquest(80003) == 2){ mes ""+.npc_name$+""; mes ".......huh? You talkin' to me?"; } mes ""+.npc_name$+""; mes "Hello!"; setquest 80003; completequest 80003; close; OnInit: // Configuration for names. .npc_name$ = "[^993300 Tester 1 ^000000]"; //NPC Name .npc_name2$ = "[^003333 Tester 2^000000]"; //NPC2 Name end; } //ending bracket splendide_n,144,178,3 script quest#status 507,{ mes "I display your quest status"; next; if(checkquest(80003 == 0)){ mes "Quest 80003: ^FF4848Inactive^000000";} else if(checkquest(80003 == 1)){ mes "Quest 80003: ^5757FFActive^000000";} else if(checkquest(80003 == 2)){ mes "Quest 80003: ^01F33ECompleted^000000"; } close; } //ending bracket my end goal would be like 80003 = Completed 80004 = In progress 80005 = Completed 80006 = Inactive
-
It could very well be, I'll come back with further results, I'll try compiling my server and set the mmo.h to 2012-04-10 and see if that works. I did forget to mention this very important fact. it was working when i compiled my server from november 2013 i believe, but upon updating to the current GIT revision, it did not work after that. It was due to the bugs with the old compilation that I had for november's GIT, that cause me to upgrade to the latest one. and upon updating I got these errors i guess, the client we used is the same 2013-12-23.
-
@mhalicot, I tried having him the same RO folder I was using. I even went to his house to gave to him just to confirm. @jabote, I've tried both and it doesn't work, but possibly the client issue at the moment ?
-
First off, sorry for the late reply, din't went back home yesterday so i couldn't remember all the settings. I believe it might be similar, here's the files, i only used the import files, the main files i've did not touch. Character.conf userid: xxxpasswd: xxxserver_name: RagnarokRiseslogin_ip: 192.168.0.101login_port: 6900char_ip: public IPchar_port: 6121start_zeny: 5000pincode_enabled: 0 login.conf group_id_to_connect: -1 map.conf userid: xxxpasswd: xxxchar_ip: 192.168.0.101char_port: 6121map_ip: public ipmap_port: 5121 just wanted to add that those local ip, i did set to public IP as well for all of them, but sadly the same error message appeared. Would appreciate if someone could guide me how to solve this. Thanks! Edit 2: My friend used a 2012-04-10 RagexeRE version and he was able to bypass the login page, but of course he couldn't go into the server due to the mmo.h difference, but I believe it's the client this time that's causing the problem. Is there anything specific I should be looking for when diffing 2013-12-23 for other people to connect in? It's strange the client that I'm using which I gave to him, had problems, but connecting locally seems to work perfectly.
-
Hi guys, i've hosted an online server quite a number of times, but I just can't seem figure this one out. Here's the main issue, my friend can't seem to connect to the server. Please note that I'm able to connect the server without any issues at all. However for my friend apparently, it shows the error which you can see at the attachment. I've yet to see this error before frankly speaking ._. Anyway here's some details from my side that I hope could help solve this strange issue. Current Version. 2013-12-23 Ragexe [info]: Git revision (src): '946eaeb1d265de01aa3e0ca6769331c8342ffbf3' (Applied the character creation problem patch by myself before it was uploaded to the main git to fix it) [info]: Git revision (scripts): '946eaeb1d265de01aa3e0ca6769331c8342ffbf3' Port forwarded all 3 ports, 5121,6121,6900. Even www.canyouseeme.org stated that my ports were opened. Set Static IP to ensure that my ports were being forwarded. Setting clientinfo.xml to no-ip address as well as manually typing in my IP doesn't work. I pinged my no-ip address to ensured that the IP was correct too and i was able to get my IP and response as well. no SRC Edits at all, aside from commenting everything to make it pre-re. ensured mmo file was using 20131223 Here's the funny part. Upon entering locally, my 3 consoles, (map, character,login, does not prompt any error at all. I'm able to go in without any problems at all) When my friend tries to come in, the 2 errors shows below (logging in the first time shows the first error, and next were the other error), funny thing was nothing came out in 3 consoles also. I've even made sure he was using the right clientinfo.xml as he downloaded it from me which I personally see to it was rightly placed. Any help would be greatly appreciated. Thank you!
-
Can't seem to find all items in inventory
ToiletMaster replied to ToiletMaster's question in Script Support
Thanks for the advice! I'll keep it in mind next time -
Can't seem to find all items in inventory
ToiletMaster replied to ToiletMaster's question in Script Support
hey guys, this has been solve. i did 2 things wrong on this part. 1stly, the placement of the script i place within the while part, which causes it not to trigger, next i changed my statement to this. Cheers! Hopefully this helps someone } if(.@novice == 0){ set .@amountRP,countitem(713); //must place set in order to count the item! mes "You currently have "+.@amountRP+" Empty Bottle in hand. Is that correct?"; close; } -
Hi guys, currently i have this script mes ""+.npc_name$+""; mes "Hi There! How's it going? You got any extra items you'd like to exchange?"; next; mes ""+.npc_name$+""; mes "If you'd like to trade all your items, please type in 0 when prompted!"; next; switch(select("Empty Bottles for Novice Potion:Jellopy for Novice Potion")){ case 1: mes ""+.npc_name$+""; mes "So you got extra bottles eh? For each empty bottle you provide, I'll give you 1 Novice Potion."; next; mes ""+.npc_name$+""; mes "So how many Novice Potions will you be needing today?"; next; while(input(.@novice,0)){ // minimum 0, max how many also can, unless specified mes ""+.npc_name$+""; mes "Please re-think about your choice. It's not making any sense!"; close; } mes ""+.npc_name$+""; mes "So.. you'll be exchanging a total amount of ^FF0000"+.@novice+"^000000 Empty bottles right?"; next; if(countitem(713) >= .@novice){ mes ""+.npc_name$+""; mes "Here you go!"; delitem 713,.@novice; getitem 569,.@novice; next; mes ""+.npc_name$+""; mes "Come back if you have more!"; close; } mes ""+.npc_name$+""; mes "Please check your inventory, you don't have the requirements to do the exchange!"; close; case 2: mes ""+.npc_name$+""; mes "So you got extra Jellopies eh? For every two Jellopy you provide, I'll give you 1 Novice Potion."; next; mes ""+.npc_name$+""; mes "So how many Novice Potions will you be needing today?"; next; while(input(.@potion,1)) { mes ""+.npc_name$+""; mes "Please re-think about your choice. It's not making any sense!"; close; } mes ""+.npc_name$+""; mes "So.. you'll be exchanging a total amount of ^FF0000"+.@potion+"^000000 Novice Potions right?"; next; if(countitem(909) >= .@potion*2){ mes ""+.npc_name$+""; mes "Here you go!"; delitem 909,.@potion*2; getitem 569,.@potion; next; mes ""+.npc_name$+""; mes "Come back if you have more!"; close; } mes ""+.npc_name$+""; mes "Please check your inventory, you don't have the requirements to do the exchange!"; close; } This is currently working great, but I do have one problem, I wanna make that upon putting in the number 0, the script would find all the items inside, example all empty bottles and tells them that they have 23 (or whatever amount they have) and whether they want to change all of it or not. I did something like this. right after the input, if(.@novice == 0){ countitem(713) == .@novice; mes "You currently have "+.@novice+" in hand. Is that correct?"; close; } but it doesn't seem to even go to this point. I would appreciate if someone could help me out here as it always skip this part even though i inputted 0.
-
Help with Quest NPC (Using Quest Log System)
ToiletMaster replied to Landoriel's question in Script Support
not sure if you mean this way but here we go, if(checkquest(ID) == 2) { //once finished with quest. mes "you've completed the quest already. Stop talking to me or I'll flush ya!";close; }if(checkquest(ID) == 1 && countitem(909) >=1){ //checks for whether the quest is //active AND they have the item specified mes "Great job! you got the jellopy i required!";completequest ID;close;}else //if no items this happens{mes "You don't have the items I wanted.";close;} mes "Hey you! Get me 1 jellopy!";setquest ID; // provides the quest close; -
yeah, i did that already, thanks. but i noticed one more problem though, not sure whether is this related or not, upon using openstorage; i can't join any public channels, after i talked to the storage npc, type @join #main gives me this error message, You Cannot Use this item while storage is open.