• Content count

  • Joined

  • Last visited

  • Days Won


ToiletMaster last won the day on July 9 2013

ToiletMaster had the most liked content!

1 Follower

About ToiletMaster

  • Rank
    Advanced Member
  1. 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:
  2. 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;}
  3. 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.
  4. 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.
  5. 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!
  6. Thanks! i've just added you onto skype! will be waiting for your confirmation.
  7. 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
  8. 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.
  9. awww thanks anyway for the option though! i'll keep it in mind thanks!
  10. 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
  11. 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
  12. This one works great! Thanks for the help!
  13. 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.
  14. 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";
  15. 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?