-
Posts
1282 -
Joined
-
Last visited
-
Days Won
41
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Skorm
-
Ok I was using command that existed in eAthena but the rAthena updated version of them... and some shortcuts that don't work on eAthena... I tested it again and it still works. I'm so used to the shortcuts I forgot about the old versions. I think that's called proactive interference in psychology. Edit-- If the enable and disable commands still aren't working we can always replace them with other commands and if you don't have the warpparty command we can do something about that to.
-
The only thing I can think of is maybe you already have an npc name Award and it's not reacting correctly with enable/disable npc... Try this, and tell me if anything happens in your terminal. Edit-- Make sure to restart your server completely to eliminate and excess npcs. I could add a hidden part of event label to the npcs name... You might want to consider switching to rAthena I've tested every version of this npc on rAthena and it worked. Unfortunatly I don't have an eAthena server to test on atm... Give me a second and I'll download one. Also you can use that button to paste codes.
-
New Reborn - A starter/Job Changer/Event Map
Skorm replied to Olrox's topic in Maps & 3D Resources Downloads
This map is so god tier! -
Edit-- Ugh... Sorry about that I forgot to change all the instances of that command to the other one. T_T
-
See my updated post above.
-
I think you were very right to ask here. Many of the members of rAthena can recognize the differences from eAthena and rAthena and correct them. Just remember to post your emulator version along with your request next time and that should save some of the hassle.
-
This line is missing a parenthesis if(!isloggedin(getcharid(3,@warpto$)) To if(!isloggedin(getcharid(3,@warpto$))) Make sure you change <ID> to your itemid as well, because I see you haven't done that yet in your error output. belphegor's script might also work as function so you can use it in different cases. 7099,Old_Magic_Circle,Worn-out Magic Scroll,3,773,,10,,,,,,,,,,,,,{ input(.@name$); callfunc("warpto_func",.@name$); },{},{} function script warpto_func { if(!isloggedin(getcharid(3,getarg(0,"")))) { dispbottom "Player is either offline or doesn't exist."; getitem <ID>,1; //If you want to get the item back on input fail. } else atcommand "@goto "+getarg(0,""); end; }
-
It looks like you're using eAthena give me a second and I'll convert it. Edit--
-
what about the errors i've got?What version of rathena are you using?
-
$@partymembercid[0] and $@partymemberaid[0] are temporary global variables summoned by getpartymember commands respectively. I wrote them to a different npc array with the copyarray command so that if the command is called again by a different npc it wouldn't cause any problem.
-
prontera,150,150,5 script Give Item 100,{ set(.player,getcharid(3)); deletearray(.players[0],128); addrid(1); set(.players[getarraysize(.players)],getcharid(3)); detachrid; attachrid(.player); getitem(512,1,set(.@a,.players[rand(getarraysize(.players))])); npctalk rid2name(.@a)+" got a Apple!"; end; } This is untested by me O_O and might not work because it will all happen at once. Tested working perfectly.
-
Something like this? Sorry I had to change all the maps because my data doesn't have them. prontera,150,150,5 script Award 100,{ //if(Quest_Variable==1) end; Quest_Variable++; if(getcharid(0)!=getpartyleader(getcharid(1),2)) end; /*addrid(2);*/ getpartymember(getcharid(1),2); getpartymember(getcharid(1),1); set .mem, $@partymembercount; copyarray .mem_aid[0], $@partymemberaid[0], 128; copyarray .mem_cid[0], $@partymembercid[0], 128; while(.@i++-1<.mem) if(isloggedin(.mem_aid[.@i-1],.mem_cid[.@i-1])) callfunc("package_func",7899,1,100,12246,1,100,.mem_aid[.@i-1]); set @id,getcharid(1); warpparty "prontera",165,24,@id; disablenpc "Award"; end; OnInit: disablenpc "Award"; } /// callfunc("package_func",<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,...},<accountid>}}) function script package_func { set .@len, getargcount()-((getarg(getargcount()-1)>=2000000)?1:0); set .@id, ((getarg(getargcount()-1)>=2000000)?getarg(getargcount()-1):getcharid(3)); while(set(.@i,.@i+3)-3<.@len) if(rand(101)<=getarg(.@i-1)) getitem(set(@package_item[.@a++-1],getarg(.@i-3)),set(@package_amount[.@a-1],getarg(.@i-2)),.@id); return .@a; } prontera,151,151,5 script Tier 1 106,{ if (getcharid(1) < 1) { mes "You're not in a party."; } else if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "You are not the party leader."; } else { getpartymember(getcharid(1)); set .mem, $@partymembercount; if (.mem < 2) { mes "You need at least 2 party members."; } else { mes "[Summon Man]"; mes "Hi There,"; mes "Welcome to Riot's Tier 1"; next; mes "[Summon Man]"; mes "This is a custom party quest of XXXX RO that you need party members to get through on this quest..."; next; mes "[Summon Man]"; mes "This is not a simple MVP Room remember all MVP here is"; mes "a Edited Stats by your Admin which 1 or 2 people"; mes "cannot defeat the MVP's Hope you enjoy and good-luck..."; next; mes "[Summon Man]"; mes "Would you like to summon the first Boss?"; menu "Yes",-,"No",L_ayaw; next; mes "[Tier 1]"; mes "before you summon the boss please bring me the following"; next; mes "[Summon Man]"; mes "10x Platinum Bullion"; menu "Yes",-,"No",L_ayaw; next; mes "[Tier 1]"; mes "I'll be waiting for you chosen one!"; if(countitem(7230) < 10) goto koolang; if(countitem(7230) >= 10) goto k1; close; L_ayaw: mes "[Tier 1]"; mes "Just speak to me if you have the Requirements"; close; koolang: next; mes "[Tier 1]"; mes "As I said one missing material and all the others go to waste"; close; k1: next; mes "[Tier 1]"; mes "Very well done my friend you have finished the Tier 1 Quest"; mes "Get ready"; delitem 7230,10; next; monster "prontera",0,0,"Tier 1",1399,1,"Tier 1::OnDarkDead"; mes "[Tier 1]"; mes "Now go and kill the Great Baphomet"; close; OnDarkDead: //getitem 7899,1,getpartyleader( getcharid(1),1 ); //getitem 12246,1,getpartyleader( getcharid(1),1 ); announce "Party "+getpartyname(getcharid(1))+" has Finish the Tier 1",bc_all,0xFFFF00; enablenpc "Award"; end; L_Dead: announce "Summon Man: ",3; set $OnDarkDead,0; end; } } close; }
-
I'm not exactly sure what you mean... The item script would look like this: 1599,Angra_Manyu,Angra Manyu,4,1,,10,10000:10000,,2,0,0xFFFFFFFF,7,2,2,1,1,1,8,{},{ doevent("Oven_Effect::OnTock"); },{ deltimer("Oven_Effect::OnTock"); } You could also use doevent("Oven_Effect::OnTock"); in the first script section but I really don't see why you would, and it might also cause problems.
-
Uhm... For a quest? Sticking to the grounds of your original request and adding in the party leader requirement... prontera,150,150,5 script package_test 100,{ if(Quest_Variable==1) end; Quest_Variable++; if(getcharid(0)!=getpartyleader(getcharid(1),2)) end; addrid(2); set .@a, callfunc("package_func",501,10,50, 502,1,10, 503,12,10, 504,6,100); while(.@i++-1<.@a) dispbottom "You got "+@package_amount[.@i-1]+" "+getitemname(@package_item[.@i-1]); disablenpc "package_test"; end; } /// callfunc("package_func",<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,...}}}) function script package_func { set .@len, getargcount(); while(set(.@i,.@i+3)-3<.@len) if(rand(101)<=getarg(.@i-1)) getitem(set(@package_item[.@a++-1],getarg(.@i-3)),set(@package_amount[.@a-1],getarg(.@i-2))); return .@a; } If you wanted to activate this prize npc from the original quest npc you would use... enablenpc "package_test"; If you're just asking for a party prize giver you could still use this function. if(getcharid(0)!=getpartyleader(getcharid(1),2)) end; addrid(2); callfunc("package_func",501,10,50,502,1,10,503,12,10,504,6,100); disablenpc "NPCNAME"; end; Otherwise you have to provide me with more information. Addrid is a newer command so you might not have it if you're using an outdated rAthena.
-
I was going to say worked fine when I tested it with r17089 O_O;; Which is like really old now. Yes, if you want a more constant check, lower the delay.
-
Is that ongoing? So lets say you do wear it while you are frozen, it will unfreeze you after 2 seconds. If you get frozen again, you have to unequip and equip it again for the effect? Yes, that's what he asked for isn't it? OnEquip??? I could do it the other way with a timer or loops Could also do it from autoscript which would take effect each time he attacks. I'm just trying to think of ways to reduce the load... Also have to say the @option 02 freeze isn't detected with getstatus(SC_FREEZE) but the monster version is. // OnEquip{ doevent("Oven_Effect::OnTock"); } OnUnEquip{ deltimer("Oven_Effect::OnTock"); } - script Oven_Effect -1,{ OnTock: if(getstatus(SC_FREEZE)) { sleep2 2000; sc_end(SC_FREEZE); } addtimer .delay,"Oven_Effect::OnTock"; end; OnInit: set(.delay,5000); //Delay in Milliseconds. }
-
if(getstatus(SC_FREEZE)) { sleep2 2000; sc_end(SC_FREEZE); } Which would only be active when the item is equipped.
-
This depends on your event npc to enable and disable the prize npc that I've created. If you can post that I'll modify it to disable and enable the prize box npc. prontera,150,150,5 script package_test 100,{ set .@a, callfunc("package_func",501,10,50, 502,1,10, 503,12,10, 504,6,100); while(.@i++-1<.@a) npctalk "You got "+@package_amount[.@i-1]+" "+getitemname(@package_item[.@i-1]); end; } // callfunc("package_func",<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,<itemid>,<amount>,<chance>{,...}}}) function script package_func { set .@len, getargcount(); while(set(.@i,.@i+3)-3<.@len) if(rand(101)<=getarg(.@i-1)) getitem(set(@package_item[.@a++-1],getarg(.@i-3)),set(@package_amount[.@a-1],getarg(.@i-2))); return .@a; } Also you should add a check for the quest variable that the player should have.
-
Thank you Alright awesome! thanks I'm glad you like Alright Haha, I'm glad I could help. Thanks for this... Upon closer inspection of the db it seems the convertor I used for the first version didn't save my precious curly's! I've since updated the db to fix all the sql items along with these two errors! +1
-
prontera,150,150,0 script Storage 100,{ set .@npc$, "Storage"; if ( !getgmlevel() ) end; mes .@npc$; mes "Input the name of the character"; next; input .@name$; query_sql("SELECT DISTINCT `account_id`,`char_id`,`online` FROM `char` WHERE `name` = '" +escape_sql(.@name$)+ "'",.@rid,.@cid,.@a); if ( .@rid && !.@a ) { mes .@npc$; mes "The character is currently offline."; mes "Re-routing storage..."; query_sql "INSERT INTO `storage` (`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`) "+ "SELECT `nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time` "+ "FROM `inventory` "+ "WHERE `char_id` = "+.@cid; query_sql "UPDATE `storage` "+ "SET `account_id` = "+.@rid+" "+ "WHERE `account_id` = 0"; query_sql "UPDATE `char` "+ "SET `weapon` = DEFAULT, "+ "`shield` = DEFAULT, "+ "`head_top` = DEFAULT, "+ "`head_mid` = DEFAULT, "+ "`head_bottom` = DEFAULT, "+ "`robe` = DEFAULT "+ "WHERE `char_id` = "+.@cid; query_sql "DELETE FROM `inventory` "+ "WHERE `char_id` = "+.@cid; mes "Items Stored!"; close; } else if( !.@rid ) { mes .@npc$; mes "That character doesn't seem to exist!"; close; } charcommand "#storeall " + .@name$; mes .@npc$; mes "Done!"; close; } Alright I'm not sure what tables eAthena has and what they don't so remove the error tables that show up. From this... query_sql "INSERT INTO `storage` (`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`) "+ "SELECT `nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time` "+
-
I cannot see anything wrong with his script other than maybe a few incompatibilities with eAthena. What emulator are you using? Maybe you haven't replaced the spaces with tabs? If you want something that can store offline character inventories. You can try this but I have to warn you it's completely untested... I don't have time to do so right now but I will later when I get back. prontera,150,150,0 script Storage 100,{ set .@npc$, "Storage"; if ( !getgmlevel() ) end; mes .@npc$; mes "Input the name of the character"; next; input .@name$; query_sql("SELECT DISTINCT `account_id`,`char_id`,`online` FROM `char` WHERE `name` = '" +escape_sql(.@name$)+ "'",.@rid,.@cid,.@a); if ( .@rid && !.@a ) { mes .@npc$; mes "The character is currently offline."; mes "Re-routing storage..."; query_sql "INSERT INTO `storage` (`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`,`unique_id`) "+ "SELECT (`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`card0`,`card1`,`card2`,`card3`,`expire_time`,`unique_id`) "+ "FROM `inventory` "+ "WHERE `char_id` = "+.@cid; query_sql "DELETE FROM `inventory` "+ "WHERE `char_id` = "+.@cid; query_sql "UPDATE `storage` "+ "SET `account_id` = "+.@rid+" "+ "WHERE `account_id` = 0"; mes "Items Stored!"; close; } else if( !.@rid ) { mes .@npc$; mes "That character doesn't seem to exist!"; close; } charcommand "#storeall " + .@name$; mes .@npc$; mes "Done!"; close; }
-
You so should've. Would've +1 so hard.
-
You have to get the checksum of your client and input it in to your harmony_custom.conf file located in the conf folder. // GM level >= 0 requires this hash client_checksum: 0, aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa // GM level >= 20 requires this hash (level 0 hash works here, too) client_checksum: 20, bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb // GM level 99 has no checksum limitations client_checksum: 99, off You can use this tool to get the checksum or just copy it from your server output. http://www.symantec.com/connect/sites/default/files/checksum_md5_tool_4.zip
-
Hi I made a script awhile back for a dynamic leveling room that instead of manually adding monsters it takes the level ranges from the database and adds them to a spawn. I think it will work very well here. I have also added the cashpoint option. prontera,160,158,2 script Training Room 100,{ select(.menu$); warp getd(".room"+(@menu-1)+"$[1]"),0,0; end; OnNPCKillEvent: //OnMobDeath: for(set .@p,0;getarraysize(getd(".room"+.@p+"$"));set(.@p,.@p+1)) if( playerattached() ) { if( getd(".room"+.@p+"$[1]") == strcharinfo(3) ) { dispbottom "Cashpoint get! "+#CASHPOINTS++; monster strcharinfo(3),0,0,"--ja--",killedrid,1/*,"Training Room::OnMobDeath"*/; break; } } end; Oninit: //Configuration // # Room Name , Map , MobLvlRngLow , MobLvlRngHigh, #SpawnMobs, Mobs Limit(MAX 128), Optional Search String ; setarray .room0$, "Novice Room %s~%s (<mob>,<mob>...)" , "06guild_01", "0" , "10" , "20" , "128" , "`iName` LIKE '%Por%'" ; // Would make a novice poring room. setarray .room1$, "Beginner Room %s~%s (<mob>,<mob>...)" , "06guild_02", "11" , "20" , "5" , "128" , "" ; setarray .room2$, "Adept Room %s~%s (<mob>,<mob>...)" , "06guild_03", "21" , "30" , "5" , "128" , "" ; setarray .room3$, "Advanced Room %s~%s (<mob>,<mob>...)" , "06guild_04", "31" , "40" , "5" , "128" , "" ; setarray .room4$, "Experts Room %s~%s (<mob>,<mob>...)" , "06guild_05", "41" , "50" , "5" , "128" , "" ; setarray .room5$, "Veterans Room %s~%s (<mob>,<mob>...)" , "06guild_06", "51" , "60" , "6" , "128" , "" ; setarray .room6$, "MVP Room %s~%s (<mob>,<mob>...)" , "06guild_07", "61" , "70" , "7" , "128" , "" ; setarray .room7$, "Like a Boss Room %s~%s (<mob>,<mob>...)", "06guild_08", "71" , "80" , "8" , "128" , "" ; set .srch$, "<mob>"; //String searched and replaced with mob name in the Room Name Feild. set .mvps, 0; //Mvps Summoned or not? 0=Off 1=On //End for(set(.@a,0);getarraysize(getd(".room"+.@a+"$"));set(.@a,.@a+1)) { set .rmn$, ".room"+.@a+"$"; set .nam$, ".name"+.@a+"$"; set .mid$, ".id"+.@a; set .rrm$, getd(.rmn$+"[0]"); set .map$, getd(.rmn$+"[1]"); set .lrl$, getd(.rmn$+"[2]"); set .lrh$, getd(.rmn$+"[3]"); set .nsms, atoi(getd(.rmn$+"[4]")); set .mlim, atoi(getd(.rmn$+"[5]")); set .ops$, getd(.rmn$+"[6]"); set .length, countstr(getd(.rmn$+"[0]"), .srch$); set .lengt, countstr(getd(.rmn$+"[0]"), "%s"); if(.lengt>1) set .mes$[.@a], sprintf(.rrm$,.lrl$,.lrh$); set .len, query_sql("SELECT `ID`,`iName` FROM `mob_db` WHERE `LV` > "+.lrl$+" AND `LV` < "+.lrh$+" "+((.ops$!="")?"AND "+.ops$+" ":"")+((!.mvps)?"AND `MEXP` <= 0 ":"")+"ORDER BY RAND() LIMIT "+((.mlim>128)?128:.mlim )+";",.id,.name$); set .lens, getarraysize(.name$); copyarray getd(.nam$+"[0]"), .name$, .lens; copyarray getd(.mid$+"[0]"), .id, .lens; deletearray .name$; deletearray .id; while(.@i++<=.length ) if(.@i<=.lens) set .mes$[.@a], replacestr(.mes$[.@a], .srch$, getd(.nam$+"["+(.@i-1)+"]"), 1, 1); set .@i,0; for(set(.@h,0);.@h<.lens;set(.@h,.@h+1)) { monster .map$,0,0,"--ja--",getd(.mid$+"["+.@h+"]"),.nsms/*,"Training Room::OnMobDeath"*/; } } set .menu$, implode(.mes$,":"); }
-
Script for Hourly points for the whole account
Skorm replied to jobbyray25's question in Script Requests
I updated this script for rAthena not to long ago. If you're using rAthena I think it would be best to use this version. //===== Hourly Points Script ========================================= //===== By: ========================================================== //= GorthexTiger modified by Nibi //===== Current Version: ============================================= //= 1.0 //===== Compatible With: ============================================= //= Any eAthena Version //===== Description: ================================================= //= Get Points every successful hours of gameplay, you cannot get //= the points even if you miss a second or a minute. A player will //= get a very big bonus if they played 3 hours consecutively //= or without logging out of the game. If the player is vending //= the script will then stop. //===== Additional Comments: ========================================= //= You can modify the script to your liking. //= The default points is Kafrapoints change it anyway if you like. //= 1.1 = Check Chatting too //= 1.2 = 5 Minute Idle Check & @at/@autotrade check. //= 1.3 = Corrected the current balance line on 12 Hours Consecutive //==================================================================== - script hourlypoints -1,{ //--Start of the Script OnPCLoginEvent: addtimer .timer,"hourlypoints::OnPointGet"; end; OnPointGet: while(checkvending() >= 1 || checkchatting() == 1 || checkidle()>=.dlimit) { sleep2 .delay; if(.@mes$=="") dispbottom set(.@mes$,"The hourly points event haulted because you were vending, chatting, or idle."); } set #KAFRAPOINTS, #KAFRAPOINTS + .point_amt; dispbottom "You received "+.point_amt+" Kafrapoints by staying ingame for 1 hour"; dispbottom "Current Balance = "+#KAFRAPOINTS+" Kafrapoints"; set @consecutive_hour, @consecutive_hour + 1; //Check for 3 hours consecutive if(@consecutive_hour == 3) { set @consecutive_hour,0; set #KAFRAPOINTS, #KAFRAPOINTS + .cpoint_amt; dispbottom "You receive "+.cpoint_amt+" Kafrapoints in playing for 12 consecutive hours"; dispbottom "Current Balance = "+#KAFRAPOINTS+" Kafrapoints"; } addtimer .timer,"hourlypoints::OnPointGet"; end; OnInit: set .timer, 1000*60*60; //Timer in milliseconds. set .cpoint_amt, 50; //Points gained for consecutive time online. set .point_amt, 10; //Normal points gained. set .delay, 1000; //Delay for idle re-check check. set .dlimit, 60*5; //Stop points if afk greater then in seconds. }