-
Posts
1282 -
Joined
-
Last visited
-
Days Won
41
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by Skorm
-
DIsable mount when u equip weapon @item 12433
Skorm replied to donkeyg's question in Database Support
Does it unequip the mount when you do the item? 18144,Anniversary__Two-Handed_Sword,Anniversary__Two-Handed_Sword,4,20,,10,500,175,,3,0x00004080,7,2,34,4,0,1,3,{ set @oneq,1; while(@oneq) if(checkriding()) setriding(0); sleep2 100; },{},{ set @oneq,0; } -
It's extremely rude to bump a problem that you're already getting help for. =_=* If there is a problem with the script POST the error message... If the script isn't doing what you want then you've haven't given us enough information. READ http://rathena.org/board/forum-30/announcement-9-scripting-support-easy-as-1-2-3/ before posting.
-
Are you getting any map errors... player not attached etc??
-
It would probably be best to just check for a null menu anyways. So between the select and the loop that makes the menu add... if(.@menu$=="") { mes "OMG put some clothes on!"; close; } If you don't understand what I mean or think the the script works differently but don't want to paste it just send me a message with the script. I can't do much with the small snipit you gave me.
-
Alright paste the whole script. I see what you mean now. mes "[ Kafra Employee ]"; mes "This service cost 200,000 zeny."; mes " "; mes " "; mes "Proceed?"; next; menu "Yes",Y_remove,"No",N_remove; Y_remove: while((set(.@i,.@i+1)%11)) { if(getequipisequiped(.@i)) break; if(!(.@i%10)) { mes "[ Kafra Employee ]"; mes "You're not wearing any item."; close; } mes "[ Kafra Employee ]"; mes "Please select the item."; next; setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$,"";
-
mes "[ Kafra Employee ]"; mes "This service cost 200,000 zeny."; mes " "; mes " "; mes "Proceed?"; next; menu "Yes",Y_remove,"No",N_remove; Y_remove: while((set(.@i,.@i+1)%11)) if(getequipisequiped(.@i)) { mes "It looks like you have some protective gear equipped!"; close; } mes "[ Kafra Employee ]"; mes "You're not wearing any item."; close; } else { mes "[ Kafra Employee ]"; mes "Please select the item."; next; setarray .@position$[1], "Head","Body","Left hand","Right hand","Robe","Shoes","Accessory 1","Accessory 2","Head 2","Head 3"; set .@menu$,""; It's hard for me to tell what you want.
-
That's because Killedrid isn't set on custom mob event labels... I submited this as a bug but it guess it was overlooked check your other post for a solution.
-
prontera,100,100,5 script Nudist 100,{ while((set(.@i,.@i+1)%11)) if(getequipisequiped(.@i)) end; emotion e_heh,0; npctalk "You're naked!"; }
-
prontera,100,100,5 script Nudist 100,{ while(.@i++%11) if(getequipisequiped(.@i)) end; emotion e_heh,0; npctalk "You're naked!"; }
-
What I would like is for every single type of command that creates a monster/player/npc/pet/merc anything to return a GID... I would also like an attachgid and a checkgid.... those are most important to me currently.
-
Pretty cool but in some cases it seems like overkill... I hardly ever have to attach the whole server to one script. I do like the idea of attaching the whole guild for messaging and stuff.
-
Which won't work because killedrid isn't set with custom labels... Unless they actually listened to me. http://rathena.org/board/tracker/issue-7817-onmobdeathevents/ Do that modification then find the label inside your endless tower script and paste this after it. getmapxy(@m$,@x,@y,0); if (compare(strcharinfo(3),"1@tower") || compare(strcharinfo(3),"2@tower") || compare(strcharinfo(3),"3@tower") || compare(strcharinfo(3),"4@tower") || compare(strcharinfo(3),"5@tower") || compare(strcharinfo(3),"6@tower")) { if(killedrid == 1002) // Poring { makeitem 969,1,@m$,@x,@y; //Gold if (rand(100) < 20) // 20% chance of activating. makeitem 616,1,@m$,@x,@y; // OCA } }
-
////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////BOT POLICE 2.1//////////////////////////// /////////////////////////////By: Lucas M.///////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // 1. Edit names and location as needed. // 2. Edit second marks as needed. // 3. Edit @adjgmlvl command as needed(for servers with GM LvL 1 players). // 4. @jailfor works differently for different servers. Adjust appropriately. // 5. When testing on your lvl 99 GM, note that @adjgmlvl has been set to 0. Relog to refresh your commands. zhakastia,79,37,6 script ReviseRO Police 884,{ if (getgmlevel() >= 60) goto L_AdminPolice; mes "[EllieRO Police]"; mes "Good day."; close; L_AdminPolice: mes "[EllieRO Police]"; mes "Please input the name of a"; mes "player you would like to"; mes "superimpose a check on."; next; input @NAME$; if(isloggedin(getcharid(3,@NAME$))==0) goto L_Notlogged; mes "[EllieRO Police]"; mes "The player is online. An"; mes "interrogation is underway."; close2; attachrid(getcharid(3,@NAME$)); L_Start: // Targetted Player Pop-Up Message attachnpctimer strcharinfo(0); initnpctimer; atcommand "@adjgmlvl -1 "+strcharinfo(0)+""; // Leave this alone. mes "[Ellie Staff]"; mes "Manditory bot check in progress."; set @botcode,rand (1111,9999); mes "You have ^B4040460 seconds^000000 seconds to"; mes "input the following code:"; mes "[ ^5FB404"+@botcode+"^000000 ]"; input @exitnum; if (@exitnum == @botcode) goto L_Correct; if (@exitnum != @botcode) goto L_Wrong; close; OnTimer10000: //10 second mark. dispbottom "50 seconds to comply or risk being banned."; end; OnTimer20000: //20 second mark. dispbottom "40 seconds to comply or risk being banned."; end; OnTimer30000: //30 second mark. dispbottom "30 seconds to comply or risk being banned."; end; OnTimer40000: //40 second mark. dispbottom "20 seconds to comply or risk being banned."; end; OnTimer50000: //50 second mark. dispbottom "10 seconds to comply or risk being banned."; end; OnTimer55000: //55 second mark. dispbottom "5 seconds to comply."; end; OnTimer56000: //56 second mark. dispbottom "4 seconds to comply."; end; OnTimer57000: //57 second mark. dispbottom "3 seconds to comply."; end; OnTimer58000: //58 second mark. dispbottom "2 seconds to comply."; end; OnTimer59000: //59 second mark. dispbottom "1 second to comply."; end; OnTimer60000: //60 second mark. stopnpctimer; atcommand "@adjgmlvl 0 "+strcharinfo(0)+""; // Sets to GM LvL 0. //-------------------------------------------------------------------// // 3 hours jail time for not responding in 60 seconds. // (mh = month, dy = day, hr = hour, mn = minute) atcommand "@ban 1y "+strcharinfo(0)+""; end; //-------------------------------------------------------------------// L_Notlogged: mes "[ReviseRO Police]"; mes "That person is not logged in."; close; L_Wrong: next; mes "[ReviseRO Staff]"; mes "This is your second attempt."; set @botcode,rand (1111,9999); mes "You have ^B40404less than a minute^000000"; mes "to input the following code:"; mes "[ ^DF7401"+@botcode+"^000000 ]"; input @exitnum; if (@exitnum == @botcode) goto L_Correct; if (@exitnum != @botcode) goto L_WrongLastTry; close; L_WrongLastTry: next; mes "[ReviseRO Staff]"; mes "This is your last chance."; set @botcode,rand (1111,9999); mes "You have ^B40404less than a minute^000000"; mes "to input the following code:"; mes "[ ^DF0101"+@botcode+"^000000 ]"; input @exitnum; if (@exitnum == @botcode) goto L_Correct; close2; mes "[Ellie Staff]"; mes "You have failed the test."; stopnpctimer; sleep2 1000; atcommand "@adjgmlvl 0 "+strcharinfo(0)+""; // Sets to GM LvL 0. sleep2 1000; //-------------------------------------------------------------------// // 3 hours jail time for inputting the incorrect code three times. // (mh = month, dy = day, hr = hour, mn = minute) atcommand "@ban 1y "+strcharinfo(0)+""; end; //-------------------------------------------------------------------// L_Correct: next; stopnpctimer; atcommand "@adjgmlvl 0 "+strcharinfo(0)+""; // Sets to GM LvL 0. percentheal 100,100; sc_start SC_BLESSING,300000,10; sc_start SC_INCREASEAGI,300000,10; specialeffect2 EF_BLESSING; specialeffect2 EF_INCAGILITY; mes "[EllieRO Police]"; mes "You passed. Thank you for your time."; close; OnWhisperGlobal: if(!getgmlevel()) end; if(@whispervar0$=="all"){ while( .@V < $PlayerNumber ){ set .@V,.@V+1; if( isloggedin(getd("$RecordAID"+.@V)) ){ attachrid(getd("$RecordAID"+.@V)); goto L_Start; } } end; } if(@whispervar0$=="map") { while( .@V < $PlayerNumber ){ set .@V,.@V+1; getmapxy(.@N123$,.@B,.@C,0,rid2name(getd("$RecordAID"+.@V))); if( @whispervar1$ != "" && @whispervar1$ == .@N123$ ){ attachrid(getd("$RecordAID"+.@V)); goto L_Start; } } } end; } // Jail Cell 1. sec_pri,57,83,4 script Jail Time#1::Jail Time 738,{ mes "[Jail Time]"; mes "You have been caught botting."; mes "Please wait for your sentence"; mes "to play out or contact a GM."; atcommand "@jailtime "+strcharinfo(0)+""; close; } //Jail Cell 2. sec_pri,32,83,4 duplicate(Jail Time) Jail Time#2 738 - script BlackHoleEvent -1,{ OnPCLoginEvent: setd "$RecordAID"+set($PlayerNumber,$PlayerNumber+1),getcharid(3); end; OnInit: OnTimer5000: initnpctimer; for(set .@i,1;.@i<=$PlayerNumber;set .@i,.@i+1) { if(!isloggedin(getd("$RecordAID"+.@i))) { if(!getd("$RecordAID"+.@i)) { set $PlayerNumber,0; break; } setd "$RecordAID"+.@i,getd("$RecordAID"+(.@i+1)); setd "$RecordAID"+(.@i+1),0; set .@i,.@i-1; } } end; } Added an OnGlobalWhisper thing... I forgot exactly how they work but I think it's like: To check all players. ReviseRO Police : all To check all players on a map. ReviseRO Police : map#prt_maze03 Hope that works I have no way of testing x.x Edit: forgot to include the blackhole event.
-
DIsable mount when u equip weapon @item 12433
Skorm replied to donkeyg's question in Database Support
12433,Drosera_Herb_Salad,Drosera Herb Salad,2,,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ sc_start SC_DROCERA_HERB_STEAMED, 300000, 20; setriding(0); },{},{} -
prontera,99,120,4 script death 78,{ end; OnPCDieEvent: if(strcharinfo(3)=="payon"){ warp "SavePoint",0,0; } warp "prontera",0,0; sleep2 1000; announce "Hey "+strcharinfo(0)+", It seems you have died! Don't worry, you will be resurected in 3 Seconds!",bc_blue|bc_self; announce "3",bc_blue|bc_self; sleep2 1000; announce "2",bc_blue|bc_self; sleep2 1000; announce "1",bc_blue|bc_self; sleep2 1000; announce "Respawning..",bc_blue|bc_self; atcommand "@alive "+strcharinfo(0); sleep2 1000; atcommand "@load "+strcharinfo(0); }
-
Hammer Time for Middle Headgear 2: The Enchantment
Skorm replied to johnbond's question in Script Requests
You're welcome. -
getitem 508,rand(1,10); Edit: holy crap!!! I refreshed and bam! 2 post lawl
-
Is this possible to make? Chat/waitroom with warp
Skorm replied to HristDead's question in Script Requests
prontera,100,100,5 script NPCNPC 100,{ end; OnWarp: if(countitem(.itemid)<.itmamt) { atcommand "@refresh"; mes "I'm sorry but you don't have enough "+getitemname(.itemid)+" to enter this chat."; close; } delitem .itemid,.itmamt; if(getwaitingroomstate(32)) warpwaitingpc "prontera",100,100,getwaitingroomstate(0); end; OnInit: set .itemid, 7539; set .itmamt, 1 ; set .amtppl, 10 ; waitingroom "ChatWarp",(.amtppl+1),"NPCNPC:OnWarp",1; } Untested because my Harddrives dying and half my files are fragmented but yeah hope it work. Because I think the rid might not be passed through a waiting room event... You can also try this script, but it needs to be located away from other npcs and might also get activated by player based chat rooms. Still untested. prontera,100,100,5 script NPCNPC 100,24,24,{ end; OnTouch: while(.@map$==""||sqrt(pow([email protected],2)+pow([email protected],2))<24) { getmapxy(.@map$,.@x,.@y,0); if(checkchatting(strcharinfo(0))) { set .@tmp, countitem(.itemid); if(.@tmp<.itmamt) { atcommand "@refresh"; mes "I'm sorry but you don't have enough "+getitemname(.itemid)+" to enter this chat."; mes "You need "+(.itmamt-.@tmp)+" more."; close; } delitem .itemid,.itmamt; dispbottom "Item deleted: You can continue waiting for the event."; break; } } end; OnWarp: if(getwaitingroomstate(32)) warpwaitingpc "prontera",100,100,getwaitingroomstate(0); end; OnInit: set .itemid, 7539; set .itmamt, 1 ; set .amtppl, 10 ; getmapxy(.map$,.x,.y,1); waitingroom "ChatWarp",(.amtppl+1),"NPCNPC:OnWarp",1; } -
Same -points to sig- Yeah I saw that awhile back. My first reaction was "damn he's going to steal my juice!", but really I've been procrastinating all of my own ideas... It's so much easier to build things other people ask... Probably fits in with the whole idea that we're'll built to please. Now that it's out in the open I'd expect Emistry, Chapuche, Euphy maybe even Brian to post something... As for me I'm actually thinking about taking a hiatus. I need money and this doesn't exactly pay. If it did I'd die happy.
-
Actually I had something like this planned already, but it was based on the concept of player owned npc shops.
-
I imagine there are better ways of doing this but whatever works right. void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int hp, unsigned int sp) { unsigned int tick = gettick(); int warpgodelaycd = 5000; //This is the delay in milliseconds you can set what ever delay you want struct map_session_data *md = (struct map_session_data *)src; if (sp) clif_updatestatus(sd,SP_SP); if (hp) clif_updatestatus(sd,SP_HP); else return; if( !src || src == &sd->bl ) return; if(src->type == BL_PC) { sd->warpgodelay_tick = tick+warpgodelaycd; //This is the timer md->warpgodelay_tick = tick+warpgodelaycd; //This is the timer } if( pc_issit(sd) ) { pc_setstand(sd); skill_sit(sd,0); } if( sd->progressbar.npc_id ) clif_progressbar_abort(sd); if( sd->status.pet_id > 0 && sd->pd && battle_config.pet_damage_support ) pet_target_check(sd,src,1); if( sd->status.ele_id > 0 ) elemental_set_target(sd,src); sd->canlog_tick = gettick(); }
-
prontera,119,162,3 script Hired Help 56,{ //Dialogue if(@hired){ mes .npcn$; mes "It Looks like you two are having fun. Well don't let me stop you- carry on!"; close; } mes .npcn$; mes "Hello, would you be interested in purchasing some of my lovely ladies?"; mes "They buff you, heal you, and even revive you!!"; mes "So what do you say, huh?"; next; if(select("Yes:No")&2) { mes .npcn$; mes "You're missing out!"; close; } mes .npcn$; mes "It's 1z per-second with these beautiful gals."; input(.@time); if(.@time>Zeny||.@time<=0) { mes .npcn$; mes "You don't have enough. That's just too bad. Oh well better luck next time."; close; } close2; //End //Working parts set .@gid,bg_monster(.@bgid,.npcm$,.npcx,.npcy,"[Hired Help] "+.hhnm$[rand(1,getarraysize(.hhnm$))],.mobid,"Hired Help::OnBroken"); set @hired,1; set Zeny,Zeny-.@time; set .@usrid, getcharid(3); set .@map$,strcharinfo(3); while( set(.@i,.@i+1)&&playerattached()&&.@i<=.@time*20 ) { sleep2 1; if(!playerattached()) break; if((.@i%(.btym*20))==1) { while(.buffs[((set(.@i,.@i+2)-2)%(.btym*20))]) { unitskilluseid .@gid,.buffs[((.@i%(.btym*20))-2)],.buffs[(((.@i%(.btym*20))+1)-2)],.@usrid; sleep2 1000; } sc_start 32,240000,10,.@gid; } getmapxy(.@map1$,.@x1,.@y1,0); set .@dis, sqrt(pow(.@x1-.@tmpx,2 )+pow(.@y1-.@tmpy,2 ) ); if(.@dis&&.@dis<.wlkd){ unitwalk .@gid,.@tmpx,.@tmpy; .@lstx=.@tmpx; .@lsty=.@tmpy;} else if(.@dis>=.wlkd) unitwarp .@gid,.@map1$,.@x1,.@y1; else unitwalk .@gid,.@lstx,.@lsty; if(!(.@i%5)){ .@tmpm$=.@map1$;.@tmpx=.@x1;.@tmpy=.@y1; } if(.@map1$!=.@map$) { set .@map$, strcharinfo(3); unitwarp .@gid,.@map1$,.@x1,.@y1; } if(!Hp) unitskilluseid .@gid,54,4,.@usrid; if(Hp*100<MaxHp*.hpat) unitskilluseid .@gid,28,99,.@usrid; } killmonster .@map1$,"Hired Help::OnBroken"; if(playerattached()) set @hired,0; end; //End OnBroken: end; //NPC Variables OnInit: set .hpat, 70; //Heals the player when HP drops below this percent. You want this below 100 at all times. set .mobid,4000; //ID of your custom mob. set .btym, 240; //Rebuff in seconds. set .wlkd, 6; //Character speed before mobs warps to him. set .npcn$,"[^0000FFGreg^000000]"; getmapxy( .npcm$,.npcx,.npcy,1 ); setarray .buffs[1], 29, 10, 34, 10; // Skill_id, Skill_lv, Etc. setarray .hhnm$[1], "Ellsie", "Jenny", "Ashley", "Meghan", "Wenndy", "Anna"; //Hired npc will be randomly named from these values. } The only thing now is that each hired Arch Bishop is an independent monster. Meaning it can be attacked by players... including yourself. You can add healing skills to the monster in your mobskill_db2 and give it really high HP making make it extremely hard to kill, but ultimately without the proper commands I'm unable to return valid information in the safe keeping of the monster, and making it full out invincible doesn't work either because then not even the NPC that summoned it can kill it. Mercenary Based:
-
Hammer Time for Middle Headgear 2: The Enchantment
Skorm replied to johnbond's question in Script Requests
if(rand(0,1)) Should be +3 but "ll have to check.... Find: set .@itm, 4700+((rand(5)*10)+rand(2)); Replace With: set .@itm, 4700+((rand(5)*10)+rand(3)); -
Hammer Time for Middle Headgear 2: The Enchantment
Skorm replied to johnbond's question in Script Requests
How much maximum stats does this script currently give? Coz in the officials I think it could only give +1 up to a max of +3 stat. Can we make this script to only give +1 up to a max of +3 stat? Or where can I set it? Also I had an error after trying to use the NPC and enchant failed for like 3 times. I still have not successfully enchanted an item that is why I still do not know how much stats maximum it currently gives after the last modification. I think the error kicks in when the enchantment was a success though I am not sure. Thank you my friend. //v1.3 new_1-2,95,71,4 script Bling 100,{ //Character Variables set .@geid, getequipid(9); set .@cout, countitem(.item); set .@gin$, getitemname(.item); set .@gerf, getequiprefinerycnt(9); set .@crd1, getequipcardid(9,0); set .@crd2, getequipcardid(9,1); set .@crd3, getequipcardid(9,2); set .@crd4, getequipcardid(9,3); set .@itm, 4700+((rand(5)*10)+rand(3)); //Checks & Dialogue mes .npc$; mes "I can endow your glasses with mystical powers, but It'll cost yah "+.pric+" "+((.pric-1)?.@gin$+"s":.@gin$)+"."; next; if(!.@cout) { mes .npc$; mes "Sorry come back when you have "+.@gin$+"(s)."; close; } if(select("Yes:No")&2) { mes .npc$; mes "Alright, thanks anyways!"; close; } if(.@cout<.pric) { mes .npc$; mes "I'm sorry you don't have enough "+.@gin$+"(s) to for me to endow your specticals, please come back later."; close; } if(rand(0,3)) { mes .npc$; mes "I'm sorry but I've failed you!"; misceffect 155; emotion e_sob,0; delitem .item,.pric; close; } mes .npc$; //Workhorse query_sql("SELECT FIND_IN_SET('"+.@geid+"', '"+.uit$+"');",.@a); if(.@a) { delitem .item,.pric; delitem2 .@geid, 1, 1, .@gerf, 0, .@crd1, .@crd2, .@crd3, .@crd4; getitem2 .@geid, 1, 1, .@gerf, 0, .@crd1, .@crd2, .@crd3, .@itm; misceffect .efet; mes "All done!"; equip .@geid; close; } mes "I'm sorry but you need to equipped a slotted mid-range headgear before we can continue."; close; //NPC Constants OnInit: //=-=-=-=-=-=-=Configuration=-=-=-=-=-=-= set .npc$, "[^0000FFBlinger^000000]"; // NPC Name set .pric, 1; // Price set .efet, 154; // Effect Number set .item, 6242; // Item Number set .uit$, "5074,5401,5104,18507,5068,2204,2260,5085,2202";// Item List /*18603(Black Devil Mask), Not included because it wasn't in my DB*/ /*2286 Unslotted version of 18507*/ /*2203 Unslotted version of 2204*/ /*2201 Unslotted version of 2202*/ //=-=-=-=-=-=-=-=-Skorm-=-=-=-=-=-=-=-=-= } Sorry about that I completely forgot to remove a part from the previous npc. -
void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int hp, unsigned int sp) { unsigned int tick = gettick(); int warpgodelaycd = 5000; //This is the delay in milliseconds you can set what ever delay you want if (sp) clif_updatestatus(sd,SP_SP); if (hp) clif_updatestatus(sd,SP_HP); else return; if( !src || src == &sd->bl ) return; if(src->type == BL_PC) sd->warpgodelay_tick = tick+warpgodelaycd; //This is the timer if( pc_issit(sd) ) { pc_setstand(sd); skill_sit(sd,0); } if( sd->progressbar.npc_id ) clif_progressbar_abort(sd); if( sd->status.pet_id > 0 && sd->pd && battle_config.pet_damage_support ) pet_target_check(sd,src,1); if( sd->status.ele_id > 0 ) elemental_set_target(sd,src); sd->canlog_tick = gettick(); } If that doesn't work perhaps the problem is somewhere else. Make sure your servers are all closed before recompiling etc etc.