Jump to content

GmOcean

Members
  • Posts

    666
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by GmOcean

  1. I'm pretty sure " bindatcmd " is unique to rAthena, unless someone made a re-release for eA svns. Unfortunately I don't think they did. However, ToastOfDoom, made a similar command for eA a few years back, not sure if its still working or not but it's worth taking a look at.
  2. Not using script commands. This would require a src edit as far as I know. This is because, you want to make a player unable to kill/attack a player wearing the same headgear (similar to faction system).
  3. Well, I'm not sure how to go about this. If your looking for a SRC edit ( which i would recommend for custom commands like this ) then you should go to the src request section. However, it is possible to make something similar using script commands in combination with bindatcmd.
  4. Quite simple really, first off, just create an NPC that i triggered when a person walks within range of it. <map name>,<x>,<y>,<facing>%TAB%script%TAB%<NPC Name>%TAB%<sprite id>,<triggerX>,<triggerY>,{<code>} Then we edit the code to filter out when to activate. Whether it be when someone clicks on it or comes in range. In this case I'll do both, so that clicking an NPC will result in a different dialogue then when within range. <map name>,<x>,<y>,<facing>%TAB%script%TAB%<NPC Name>%TAB%<sprite id>,<triggerX>,<triggerY>,{ mes "NPC Name"; mes "This is what will appear when someone clicks on me."; close; OnTouch: //This is triggered when a player walks in the trigger range of the NPC. if ( countitem(<item id>) ) //This will check to see if the player has the item in his/her inventory. {end;} // If they do, it will end the script resulting in nothing happening. Otherwise it will continue down the script and trigger the dialogue. mes "NPC Name"; mes "This is what will appear when someone walks within range of me, and does not have the item: "+ getitemname(<item id>) +" in their inventory."; close;} And that is all that needs to be done. Hope this solves your problem.
  5. You would need to add this yourself. A good start, would be to add a variable in the begining of the Endless Tower script, that is activated when a party enters the dungeon for the FIRST time during their cooldown. Then, when they finish the tower, you would just add the data the variable has into a sql query (Since this is the easiest way to make a ladder IMO). setd "$@ET_Time"+ getcharid(2) +"", gettimetick(2); AT END OF TOWER setd "$@ET_Time"+ getcharid(2) +"", gettimetick(2) - getd( "$@ET_Time"+ getcharid(2) +""); query_sql "INSERT INTO 'time' FROM 'endless_time' VALUE ' "+ getd( "$@ET_Time"+ getcharid(2) +"") +" ' "; end; Or Atleast, something like that. Sorry, i've been absent from the RO scripting scene for a bit, kinda rusty on the actual sql syntax =p
  6. What she did if you look closely is, she told you to add her other text to your resnametable.txt so you can add the map, which is basically a duplicate of guild_vs2. The only difference is it has the capabilities of being turned into an instance, since instance maps must be named 1@xxx so to speak.
  7. That's because devil square was already an easy script to make, and then all you did was simplify it and add an instance system.
  8. Well, I'd have to agree as well, but I vote for the customization, as it would be useful in the future after it's been through the needed "upgrades".
  9. What!? I missed the showdown T.T; I hate work xD
  10. Hmm, your not TOO far off in the way your script is written, however there are some, ' wasteful & obvious ' errors. Firstly, lets start off with the top of your script: new_1-4,130,178,6 script GuildBaseWarper 777,{ set .@name$,"[GuildBase Warper]"; mes .@name$; mes "Hi "+strcharinfo(0)+","; mes "Do you want to go in your Guild Base?"; next; menu "Blueprint's Base",P_insert,"Yakuza's Base",P_insert1,"No",-; close; Here, your just asking them if they want to go to the Guild Base, but we don't even know if they are in a guild yet, so lets add a check. new_1-4,130,178,6 script GuildBaseWarper 777,{ set .@name$,"[GuildBase Warper]"; mes .@name$; if( !getcharid(2) ){ mes "You must be in a guild to use this NPC"; close;} mes "Hi "+strcharinfo(0)+","; mes "Do you want to go in your Guild Base?"; next; menu "Blueprint's Base",P_insert,"Yakuza's Base",P_insert1,"No",-; close; Next, theres the matter of your menu..But, i'm not going to get into that atm, since it'd require that I rewrite your script almost completely. So lets get to the main problems here. P_insert: sc_start sc_berserk, 1000000000, 1; mes "[GuildBase warper]"; mes "Please enter your guild password"; next; input #insertgpw$; if (blueprint == blueprint) goto P_pass; mes "[GuildBase warper]"; mes "Invalid password. Try again."; next; Here you have them inputting the password, thats fine, BUT yoru storing it into a #variable, it's not TOO bad, but definately not nessecary. So lets use this: input .@insertgpw$; Next, you were preforming a check to see if the password is right, however, you were using perm-char variables, this means, that if A = A true, and lets face it, A will always = A. So, lets fix that up. P_insert: sc_start sc_berserk, 1000000000, 1; mes "[GuildBase warper]"; mes "Please enter your guild password"; next; input .@insertgpw$; if (.@insertgpw$ == $blueprint$) goto P_pass; mes "[GuildBase warper]"; mes "Invalid password. Try again."; close; As you can see, I added the change for the insert portion, as well as a check to see if it's the right password, You'll notice i used: $blueprint$ this is because we need to call this for ALL guild memebers, so a perm-global pass will do great, since it wont erase if server shuts down. Lastly, I added a close; Because, there is no need, to have them continuously retry. They can just click the NPC again. If they fail, they should suffer And that's it really. But, it is obvious this isn't the whole script, and if it IS the whole script, you need to add a way for them to save the password (guild master does this). I'd explain more elaborately, but i have to get back to work (lunch break's over) so good luck.
  11. I also agree, been wondering why I failed at breaking guilds lol.
  12. It's not? In that case, try switching these lines around setd line WITH at command line. If that doesn't work then, there's something else I'm just not seeing atm lol. It is pretty late @.@;
  13. It doesn't need bindatcmd, but it'd be cleaner to use it. mapname,x,y,z script at_ecall 123,{ OnECall: if( getguildmasterid( getcharid(2) ) != getcharid(0) ) {dispbottom "This can only be used by a guild leader."; end;} if( gettimetick(2) < getd( ".guild"+ getcharid(2) +"" ) ) {dispbottom "You can use this command in: "+ ( (getd(".guild"+ getcharid(2) +"") - gettimetick(2) ) / 1000 ) +" more seconds."; end;} if( select("Recall now :A moment please") == 2 ){close;} atcommand("@guildrecall"); setd ".guild"+ getcharid(2) +"", gettimetick(2) + 300000; close; OnInit: bindatcmd("guildrecall","at_ecall::OnECall"); end; }
  14. Opps lol my bad, i updated my post.
  15. Okay, I was pretty much in the middle of writing a script when, i noticed that: // Level range for sharing within a party party_share_level: 30 is apart of inter_athena.conf and not apart of party.conf. I found this really, weird actually, when all other options to configure the party are in rAthena/conf/battle/party.conf (aside from max_party_size <- why hasn't this been made into a conf setting yet lol) So, is there really a set-in-stone reason why this partiular conf setting is in inter_athena.conf instead of party.conf? If there isn't could we move it to party.conf since, it'd only make sense. If on the other hand, it is pretty much set-in-stone, then I'm sorry to have wasted time @.@;
  16. mapname,x,y,z script at_ecall 123,{ goto OnEcall; end; OnInit: bindatcmd("@ec","at_ecall::OnEcall"); bindatcmd("@ecall","at_ecall::OnEcall"); end; OnEcall: if( !getcharid(2) ){dispbottom "You are not apart of a guild."; end;} if( getguildmasterid( getcharid(2) ) != getcharid(0) ){dispbottom "Can only be used by guild leader."; end;} if( gettimetick(2) < getd(".guild"+ getcharid(2) +"") ){dispbottom "Command Failed. Still on cooldown."; end;} progressbar "0x00FF00",5; //5 seconds is how the skill acts. getmapxy(.@m$,.@x,.@y,0); warpguild .@m$,.@x,.@y,getcharid(2); setd ".guild"+ getcharid(2) +"", gettimetick(2) + 300000; end; } Edit: You know i just realized that there is an exiting command like this in rAthena, @guildrecall ... so this script is really, just a waste of space if you have the existing command in your svn.
  17. Yea, that'll do the trick, additionally, this can also be done with using the same method i mentioned before using exp.txt. You' just set lvl 100 exp to 0. So they can never reach 100 unless via a command, then for 101-150 add exp as normal.
  18. That's how I intended the script to be from the begining... At the time I wrote the script, players were very, how should I say, into events. This can easily be changed by adding a sleeper time, so the event will end after X amount of minutes, or tries. However, I don't see the importance really... Is it so bad that an NPC changes into a monster every 10-15 seconds lol xD
  19. Umm, it responds to when you kill that monster, not when you talk to the NPC.
  20. Truly, there is no need to do it from src. But, also, your script is wrong, in this case. Additionally, why did you make a new topic, if the solution you were looking for was in another topic, you posted in? Simply open your exp.txt file, and change all exp values of level 100-255 to 0. They won't be able to gain a level via killing anything, only by a script which gives them a level. However, if you want you could go the src route. It's just you'll have to recompile each time you make changes to it.
  21. prontera,158,180,4 script GM Changer 123,{ if( agitcheck() || agitcheck2() ){ mes "You cannot change guild masters during WoE"; close; } mes "Hey "+ strcharinfo(0) +"!"; if( !getcharid(2) ){mes "You need to be in a guild first o.O"; close;} if( strcharinfo(0) != getguildmaster(getcharid(2)) ) {mes "You need to be the Guild Master of the Guild you want to transfer ownership of."; close;} mes "So you wanna change ownership huh?! This can be arranged."; next; mes "All I need you to do is type in the name of the character you want to be the new Guild Master."; input .@newgm$; if( !getcharid(0,.@newgm$) ) {mes "That character doesn't exist. Make sure you'vvev typed their name correctly!"; close;} mes "Ah, so you want " + .@newgm$ +" to be the new Guild Master of "+ getguildname(getcharid(2) +"?"; next; if( select( "-Yes, do it! : - I'll need to think about it..") == 2 ) {mes "Come back when you've made up your mind!"; close;} if( zeny < 1000000 ){ mes "You need: 1,000,000 zeny to change guild masters."; close;} if( !guildchangegm( getcharid(2), .@newgm$ ) ) {mes "Something went wrong, and I don't know why D:!"; close;} set zeny,zeny - 1000000; mes "Awesome, you're no longer in-charge!"; close; } To fix your issue without my script: if(guildchangegm(@GID,@newgm$)) == 1){ //If command returned a success value (1) INTO if(guildchangegm(@GID,@newgm$) == 1){ //If command returned a success value (1) ALSO mes "Ah, so you want "+@newgm+" to be the new Guild Master of "+GetGuildName(@GID)+"?"; //Fetch the name of the guild using the Guild ID and getguildname(). INTO mes "Ah, so you want "+@newgm$+" to be the new Guild Master of "+GetGuildName(@GID)+"?"; //Fetch the name of the guild using the Guild ID and getguildname().
  22. Refer to Post #5. The script way that your doing only makes it so if they gain exp from a monster at X level, to erase that exp. Which is ineffective since you could potentially level up off of one kill, in that case, it would be useless. So again, refer to post #5.
  23. @TS - Yes, the one provided in the svn: rAthena/trunk/npc/custom/events/disguise.txt is an automated version, that starts every 2 hours. Are you sure your using this script, because I find it hard to believe your using the one in rAthena's svn, and are having this issue when no one else seems to be in the same situation.
×
×
  • Create New...