-
Posts
378 -
Joined
-
Last visited
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by Eross
-
Hi ! can anyone edit my this script .. I made a share exp for event MOTD . but I need to check if the member is on the same map with the mob killer because every time I kill a monster an exp applies on members wherever they are. Thanks a lot guys OnNPCKillEvent: query_sql ("SELECT `exp` FROM `party` WHERE `party_id` = "+ getcharid(1), .@exp); if(killedrid!=$MobTypeLow && killedrid!=$MobTypeMid && killedrid!=$MobTypeHard ) { end; } .@map$ = strcharinfo(3); .mobid = killedrid; if (.@exp) {addrid(2,0,getcharid(1));} dispbottom "[Monster of the Day]: Experience Gained Base:"+strmobinfo(6,.mobid)+" Job:"+strmobinfo(7,.mobid)+""; set BaseExp,(BaseExp+strmobinfo(6,.mobid)); set JobExp,(JobExp+strmobinfo(7,.mobid)); end;
-
Modifying EXP ring scripts (ex. Beholder Ring)
Eross replied to Eross's question in Scripting Support
Yes but how to make it affect bonus by not just killing the mob ... -
Hi ! Is there way to change the script for EXP rings ??? The original script is adding EXP to the monster killer ..How about for leeching characters , While wearing this also adds exp while being leeched by other player.. Can you help me guys .. Thanks a lot
-
Hi ! Is it possible to rename homunculus like @petrename command ??? /*========================================== * *------------------------------------------*/ ACMD_FUNC(petrename) { struct pet_data *pd; nullpo_retr(-1, sd); if (!sd->status.pet_id || !sd->pd) { clif_displaymessage(fd, msg_txt(sd,184)); // Sorry, but you have no pet. return -1; } pd = sd->pd; if (!pd->pet.rename_flag) { clif_displaymessage(fd, msg_txt(sd,188)); // You can already rename your pet. return -1; } pd->pet.rename_flag = 0; intif_save_petdata(sd->status.account_id, &pd->pet); clif_send_petstatus(sd); clif_displaymessage(fd, msg_txt(sd,187)); // You can now rename your pet. return 0; }
-
Hi ! Im using Monster of the Day script .. I just want to ask how to attach a certain party member on OnNPCKillEvent script ?? I made it work but the problem is I have a party level gap of 15 .. I want to disable this to a certain member if he/she is below or above the said level gap ... //********************************************************************************** // ____ _ _ _ ____ //| _ \ ___ ___ ____ | | ___ ____ ___ ___ __ ___ _ _ | |_| |/ __ | //| |__// _ \ / _ \ | _ \| | / _ \ | _ \ / _ \ / _| / _)/ _ \ | \| ||___ |\__ | //| | | __/ ||_|| | |__/| || __/ | |__/| __/ | | _\ \ ||_|| | \\ | | | | | //|_|___\___|_\___/_| |___|_|_\___|_| |____\___|_|_|_(___/ \___/_|_|\_|____|_|___|_| //------------------|_|-------------|_|--------------------------------------------- //********************************************************************************** //===== rAthena Script ============================================================= //= Monster Of The Day //===== By: ======================================================================== //= Peopleperson49 (Eddie) - [email protected] //===== Start Date: ================================================================ //= 20NOV2011 //===== Current Version: =========================================================== //= 1.4 //===== Compatible With: =========================================================== //= rAthena SVN //===== Description: =============================================================== //= Another Monster Of The Day script. I made this one from scratch to be very //= simple and work automatically. Uses almost the full list of monsters from //= the mob_branch. I included the dispbottom here when players login, but I //= actually perfer to use a login script with this in it. //===== Version Control: =========================================================== //= 1.0 First Version. //= 1.1 Broke .MobTypeArray[0] into ten seperate arrays to allow full list of mobs //= to be used without overflowing the array. Before I had to limit the number //= of mobs in an array to around 100 or I would randomly get an error from it. //= 1.2 Modified script to not change mobs if scripts are reloaded. Will set mob if //= not already set on OnInit. //= 1.3 Changed getexp to BaseExp. //= 1.4 Added bindatcmd to allow GM to repick the MOTD. //===== Additional Comments:======================================================== //= //================================================================================== //- script MOTD#RoUG -1,{ //end; prontera,151,191,4 script Monster of the Day 802 ,{ mes "[Monster Of The Day]"; mes "You will earn twice the EXP from killing the following monsters today!:"; mes "[^FF0000Low Difficulty^000000] "+getmonsterinfo($MobTypeLow,0)+"s [^0000ff"+$MobTypeLow+"^000000] "; mes "[^FF0000Mid Difficulty^000000] "+getmonsterinfo($MobTypeMid,0)+"s [^0000ff"+$MobTypeMid+"^000000] "; mes "[^FF0000Hard Difficulty^000000] "+getmonsterinfo($MobTypeHard,0)+"s [^0000ff"+$MobTypeHard+"^000000] "; end; OnInit: bindatcmd "motd",strnpcinfo(0)+"::OnCheck"; bindatcmd("repickmotd",strnpcinfo(3)+"::OnAtcommand"); if($MobType!=0) { end; } OnClock0000: setarray .MobTypeArrayLow[0],1033, //Elder Willow 1060, //Bigfoot 1294, //Mantis 1013, //Wolves 1054, //Male Theif bug 1018, //Creamy 1111, //Drainliar 1015, //Zombie 1068, //Hydra 1057, //Yoyo 1019, //Pecopeco 1170, //Sohee 1007, //Fabre 1113, //Drops 1055, //Muka 1026, //Munak 1128; //Horn setarray .MobTypeArrayMid[0],1035, //Hunter Fly 1278, //Stalactic Golem 1061, //Nightmare 1001, //Scorpion 1243, //Sasquatch 1099, //Argiope 1158, //Phen 1032, //Verit 1029, //Isis 1069, //Swordfish 1149, //Minorous 1178, //Zerom 1044, //Obeanue 1034, //Thara Frog 1045, //Marc 1152, //Skeletal Orc 1213; //High Orc setarray .MobTypeArrayHard[0],1098, //Anubis 1379, //Nightmare Terror 1777, //Ice Golem 1163, //Raydric 1783, //Galion 1365, //Apocalypse 1206, //Anolian 1310, //Majorurous 1320, //Owl Duke 1682, //Remover 1762, //Frus 1752, //Skogul 1714, //Ferus 1713, //Acidus 1315, //Assaulter 1319, //Freezer 1148, //Medusa 1676, //Venatu 1677, //Venatu 1678, //Venatu 1679; //Venatu set $MobTypeLow,.MobTypeArrayLow[rand(0,16)]; set $MobTypeMid,.MobTypeArrayMid[rand(0,16)]; set $MobTypeHard,.MobTypeArrayHard[rand(0,20)]; announce "[Monster of the Day]: Players will earn twice the EXP from hunting "+getmonsterinfo($MobTypeLow,0)+"s ["+$MobTypeLow+"], "+getmonsterinfo($MobTypeMid,0)+"s ["+$MobTypeMid+"] and "+getmonsterinfo($MobTypeHard,0)+"s ["+$MobTypeHard+"] today!",0; end; OnNPCKillEvent: if(killedrid!=$MobTypeLow && killedrid!=$MobTypeMid && killedrid!=$MobTypeHard ) { end; } .mobid = killedrid; addrid(2,0,getcharid(1)); dispbottom "[Monster of the Day]: Experience Gained Base:"+strmobinfo(6,.mobid)+" Job:"+strmobinfo(7,.mobid)+""; set BaseExp,(BaseExp+strmobinfo(6,.mobid)); set JobExp,(JobExp+strmobinfo(7,.mobid)); end; OnAtcommand: setarray .MobTypeArrayLow[0],1033, //Elder Willow 1060, //Bigfoot 1294, //Mantis 1013, //Wolves 1054, //Male Theif bug 1018, //Creamy 1111, //Drainliar 1015, //Zombie 1068, //Hydra 1057, //Yoyo 1019, //Pecopeco 1170, //Sohee 1007, //Fabre 1113, //Drops 1055, //Muka 1026, //Munak 1128; //Horn setarray .MobTypeArrayMid[0],1035, //Hunter Fly 1278, //Stalactic Golem 1061, //Nightmare 1001, //Scorpion 1243, //Sasquatch 1099, //Argiope 1158, //Phen 1032, //Verit 1029, //Isis 1069, //Swordfish 1149, //Minorous 1178, //Zerom 1044, //Obeanue 1034, //Thara Frog 1045, //Marc 1152, //Skeletal Orc 1213; //High Orc setarray .MobTypeArrayHard[0],1098, //Anubis 1379, //Nightmare Terror 1777, //Ice Golem 1163, //Raydric 1783, //Galion 1365, //Apocalypse 1206, //Anolian 1310, //Majorurous 1320, //Owl Duke 1682, //Remover 1762, //Frus 1752, //Skogul 1714, //Ferus 1713, //Acidus 1315, //Assaulter 1319, //Freezer 1148, //Medusa 1676, //Venatu 1677, //Venatu 1678, //Venatu 1679; //Venatu set $MobTypeLow,.MobTypeArrayLow[rand(0,16)]; set $MobTypeMid,.MobTypeArrayMid[rand(0,16)]; set $MobTypeHard,.MobTypeArrayHard[rand(0,20)]; announce "[Monster of the Day]: Players will earn twice the EXP from hunting "+getmonsterinfo($MobTypeLow,0)+"s ["+$MobTypeLow+"], "+getmonsterinfo($MobTypeMid,0)+"s ["+$MobTypeMid+"] and "+getmonsterinfo($MobTypeHard,0)+"s ["+$MobTypeHard+"] today!",0; end; OnCheck: dispbottom "[Monster of the Day]: Players will earn twice the EXP from hunting "+getmonsterinfo($MobTypeLow,0)+"s ["+$MobTypeLow+"], "+getmonsterinfo($MobTypeMid,0)+"s ["+$MobTypeMid+"] and "+getmonsterinfo($MobTypeHard,0)+"s ["+$MobTypeHard+"] today!",0xFFFF00; end; OnPCLoginEvent: if (#pcloginflag&128) end; dispbottom "[Monster of the Day]: Players will earn twice the EXP from hunting "+getmonsterinfo($MobTypeLow,0)+"s ["+$MobTypeLow+"], "+getmonsterinfo($MobTypeMid,0)+"s ["+$MobTypeMid+"] and "+getmonsterinfo($MobTypeHard,0)+"s ["+$MobTypeHard+"] today!",0xFFFF00; end; } }
-
Hi ! Im using this MOTD script .. I just wanna ask how to also give atleast a portion of exp to party members when a player kills a monster ? Coz this script only give bonus exp to the mob killer. OnNPCKillEvent: if(killedrid!=$MobTypeLow && killedrid!=$MobTypeMid && killedrid!=$MobTypeHard ) { end; } dispbottom "[Monster of the Day]: Experience Gained Base:"+strmobinfo(6,killedrid)+" Job:"+strmobinfo(7,killedrid)+""; set BaseExp,(BaseExp+strmobinfo(6,killedrid)); set JobExp,(JobExp+strmobinfo(7,killedrid)); end;
-
Like on my title guys .. can you help me allow Cloaking on assassin while SC_HIDING is enabled ?? thankyou
-
Hi ! Im using hourly point system from rathena .. I just want to add a feature that check if there are other logged in players with same Gepard ID. regardless the map or area ... For example I logged in my first account , The hourly system will start the countdown for rewards, But if I login my 2nd account there will be a message that "We have detected same Gepard ID logged in in game. We will hault your hourly points system." Heres the script .. I hope someone can help me ? - script hourlypoints FAKE_NPC,{ OnInit: //announce "[30 Minutes Points System]: The system have been reloaded, please relog again to get more points.", bc_all; announce "[Hourly Reward System]: Hourly system has been reloaded, please relog again to get more points.", bc_all; .point_name$ = "Hourly Points"; .point_amt = 5; // Normal points gained. .dlimit = 900; // Stop points if afk greater then in seconds. 600s = 10 minutes //43200 .enable = 1; .level = 0; .online_time = 3600; // One hour = 3600 seconds bindatcmd "hourlyinfo", "hourlypoints::OnAtcommand", 0, 100; //bindatcmd "hourlypoints", "hourlypoints::OnCheckPoints", 0, 100; end; OnPCLoginEvent: if (BaseLevel >= .level) { #idle = 0; @backup_time = 0; if (!#acctick || #acctick > .online_time) #acctick = gettimetick(2) + .online_time; else #acctick += gettimetick(2); while(.enable) { @idle_time = checkidle(); if (checkvending() >= 1 || checkchatting() == 1 || @idle_time >= .dlimit) // { #acctick += @idle_time; // Add idle time #idle = 1; dispbottom "The hourly points event haulted because you were vending, chatting, or idle."; } else { sleep2 1000; @backup_time = .@time_left = #acctick - gettimetick(2); if (.@time_left <= 0) { if (vip_status(1)) { #HOURLYPOINTS += .point_amt + 1; #acctick = gettimetick(2) + .online_time; dispbottom "[Hourly Reward System]: Gained " + .point_amt + " " + .point_name$ + " +1 " + .point_name$ + " [Vip Bonus]. Stay online and gain more points."; } else { #HOURLYPOINTS += .point_amt; #acctick = gettimetick(2) + .online_time; dispbottom "[Hourly Reward System]: Gained " + .point_amt + " " + .point_name$ + ". Total " + #HOURLYPOINTS + " Hourly Points. Stay online to gain more points."; } } else { .@time_left = .online_time - .@time_left; .@Time$ = ""; .@Minutes = .@time_left / 60; .@time_left -= (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; if (.@Minutes == 15 && .@time_left == 0 || .@Minutes == 30 && .@time_left == 0 || .@Minutes == 45 && .@time_left == 0) dispbottom "[Hourly Reward System]: You spend a total of [" + .@Time$ + "] playing."; } } if (#idle) break; } } end; OnPCLogoutEvent: // BackUP online time if (BaseLevel >= .level) { if (@backup_time) #acctick = @backup_time; } end; OnCheckPoints: dispbottom "[Hourly Reward System]: You have a total of ["+ #HOURLYPOINTS +"] Hourly Points.",0xRRGGBB; end; OnAtcommand: if (BaseLevel >= .level) { if (#idle) { .@Time$ = ""; .@Minutes = @idle_time / 60; .@time_left = @idle_time - (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; dispbottom "[Hourly Reward System]: You been idle for " + .@Time$ + ". Please relog again.",0xRRGGBB; } else { .@time_left = @backup_time; .@Time$ = ""; .@Minutes = .@time_left / 60; .@time_left -= (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; dispbottom "[Hourly Reward System]: You have [" + .@Time$ + "] left in able to gain a hourly points.",0xRRGGBB; } } end; }
-
Dispel Buffs on entering portal or warp by priest but not on teleport
Eross replied to Eross's question in Scripting Support
Yes I tried sir .. But every time I use fly wing in prontera the dispel still triggers .. It should be on warp only not on teleport -
Dispel Buffs on entering portal or warp by priest but not on teleport
Eross posted a question in Scripting Support
Hi guys ! Ive created a simple script that will dispel a player on map load. But the problem is my only plan is to dispel players who enter the portal or who uses warps (priest), so inshort it has to be a different map to trigger the dispel and not by Teleport skill.. How to make teleport skip the dispel ?? thankyou .. OnPCLoadMapEvent: //for( set .i,0; .i < getarraysize( .Maps$ ); set .i,.i + 1 ) //if( strcharinfo(3) == .Maps$[.i] ) //sc_end sc_spirit; sc_end sc_gospel; sc_end SC_POEMBRAGI; sc_end SC_APPLEIDUN; sc_end SC_ASSNCROS; sc_end SC_WHISTLE; //sc_end 37; // holy weapon //sc_end 38; // holy armor sc_end 187; // increase all stat sc_end 194; // increase hit sc_end 196; // increase flee sc_end 198; // max hp increase sc_end 199; // max sp increase sc_end 200; // attach strength sc_end 202; // increase def sc_end 214; // SC_SCRESIST sc_end 175; // POEMBRAGI sc_end 181; // SERVICE4U //specialeffect2 235; end; -
Thankyou sir !!! I will try this later ... One more question .. How about making it up to max 5 mob id ??? like for example I type @killcount Poring and @killcount Fabre and 3 other they all work but on 6th it should say , @killcount max is 5 only . with @killcount reset 1 to 5 ,,and @killcount will show 5 mobs ..Thankyou sir
-
Hi ! I would like to request for a script that counts mob kills .. @killcount <mob id> or @killcount <mobname> For example. @killcount 1002 / @killcount Poring or poring (not case sensitive) . Everytime I kill poring a bottom message will show on my bottom chat saying "Poring kill: <number of kills>" .. When I type @killcount without monster name or ID it should show "Killed Porings: <kill count>" ..With @killcount reset function. Thanks
-
-
Hi ! Im using an old Hourly System, I just want to add a feature that will: 1. Allow first player of first account to login and activate hourly system 2. the second and next dual character will automatically been hault its system and wont get any hourly points 3. Regardless the map, even they have different maps it will check the gepard id Sorry for my bad english. I hope you can help me The Script im using : - script hourlypoints FAKE_NPC,{ OnInit: //announce "[30 Minutes Points System]: The system have been reloaded, please relog again to get more points.", bc_all; announce "[Hourly Reward System]: Hourly system has been reloaded, please relog again to get more points.", bc_all; .point_name$ = "Hourly Points"; .point_amt = 5; // Normal points gained. .dlimit = 900; // Stop points if afk greater then in seconds. 600s = 10 minutes //43200 .enable = 1; .level = 0; .online_time = 3600; // One hour = 3600 seconds bindatcmd "hourlyinfo", "hourlypoints::OnAtcommand", 0, 100; //bindatcmd "hourlypoints", "hourlypoints::OnCheckPoints", 0, 100; end; OnPCLoginEvent: if (BaseLevel >= .level) { #idle = 0; @backup_time = 0; if (!#acctick || #acctick > .online_time) #acctick = gettimetick(2) + .online_time; else #acctick += gettimetick(2); while(.enable) { @idle_time = checkidle(); if (checkvending() >= 1 || checkchatting() == 1 || @idle_time >= .dlimit) // { #acctick += @idle_time; // Add idle time #idle = 1; dispbottom "The hourly points event haulted because you were vending, chatting, or idle."; } else { sleep2 1000; @backup_time = .@time_left = #acctick - gettimetick(2); if (.@time_left <= 0) { if (vip_status(1)) { #HOURLYPOINTS += .point_amt + 1; #acctick = gettimetick(2) + .online_time; dispbottom "[Hourly Reward System]: Gained " + .point_amt + " " + .point_name$ + " +1 " + .point_name$ + " [Vip Bonus]. Stay online and gain more points."; } else { #HOURLYPOINTS += .point_amt; #acctick = gettimetick(2) + .online_time; dispbottom "[Hourly Reward System]: Gained " + .point_amt + " " + .point_name$ + ". Total " + #HOURLYPOINTS + " Hourly Points. Stay online to gain more points."; } } else { .@time_left = .online_time - .@time_left; .@Time$ = ""; .@Minutes = .@time_left / 60; .@time_left -= (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; if (.@Minutes == 15 && .@time_left == 0 || .@Minutes == 30 && .@time_left == 0 || .@Minutes == 45 && .@time_left == 0) dispbottom "[Hourly Reward System]: You spend a total of [" + .@Time$ + "] playing."; } } if (#idle) break; } } end; OnPCLogoutEvent: // BackUP online time if (BaseLevel >= .level) { if (@backup_time) #acctick = @backup_time; } end; OnCheckPoints: dispbottom "[Hourly Reward System]: You have a total of ["+ #HOURLYPOINTS +"] Hourly Points.",0xRRGGBB; end; OnAtcommand: if (BaseLevel >= .level) { if (#idle) { .@Time$ = ""; .@Minutes = @idle_time / 60; .@time_left = @idle_time - (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; dispbottom "[Hourly Reward System]: You been idle for " + .@Time$ + ". Please relog again.",0xRRGGBB; } else { .@time_left = @backup_time; .@Time$ = ""; .@Minutes = .@time_left / 60; .@time_left -= (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; dispbottom "[Hourly Reward System]: You have [" + .@Time$ + "] left in able to gain a hourly points.",0xRRGGBB; } } end; }
-
Good day ! I've created a simple give away npc that has name of event GM on it My questions is .. Is it possible to broadcast the item name including the name that signed into it ?? For example, I will open this scroll and the broadcast should be : "[Player Name] has obtained Battle Manual from [Eross's Angel Egg Scroll]!!!" Instead of just: "[Player Name] has obtained Battle Manual from [Angel Egg Scroll]!!!" Thankyou and a Blessed Sunday to everyone
-
Hi ! I found it already .. I hexed it on client . found it on %s C But the only thing left is the two C on the lower right .. I tried to change it from line 3024 but nothing happens
-
Hi ! I would like to ask how to change these ?? I want to change it to DC instead of C and Cashpoints .. Thankyou !!!
-
Hi ! Does anyone here know how to revert the claymore trap behavior to its classic behavior ?? Claymore trap now can only hit 1 but my players want the old behavior which hits multiple .. Please help anyone .. I saw a guide in hercules but I think its not compatible with rathena
-
Hi ! Im using 2013 client with custom job diff and works perfectly fine ... Im using LUAs on admin My problem is, I decided to upgrade to 2015 client but seems like its not working anymore and Im getting loop error message when trying to launch client...Can anyone help me ? Thanks
-
Hi ! I've already did some of this but I noticed that there are some steps I didnt done ... Can you point out what step is for not removing the buff on relogin in ... Thankyou so much btw sir
-
Hi, does anyone here have an idea how to disable party bonus if there are same Gepard id or IP in party?? The party bonus exp im refering is the one in party.conf ... Please forgive me if I post it on wrong section ... I just need help thankyou
-
Thanks ! how about in homunculus sir ?
-
Hi ! I have a script that disable dual gepard id in a map ... How to make this allow only 3 same gepard ID in map ??? Thanks - script disable_duals -1,{ end; OnInit: // 1= if you have gepard 0=if you do not use gepard set .Gepard,1; setarray .current_maps$[0] , "pvp_n_1-5", "guild_vs1", "guild_vs2", "guild_vs3", "guild_vs4", "guild_vs5", "pvp_y_1-2", "pvp_y_2-2", "prtg_cas01", "prtg_cas02", "prtg_cas03", "prtg_cas04", "prtg_cas05", "payg_cas01", "payg_cas02", "payg_cas03", "payg_cas04", "payg_cas05", "gefg_cas01", "gefg_cas02", "gefg_cas03", "gefg_cas04", "gefg_cas05", "aldeg_cas01", "aldeg_cas02", "aldeg_cas03", "aldeg_cas04", "aldeg_cas05", "arug_cas01", "arug_cas02", "arug_cas03", "arug_cas04", "arug_cas05", "schg_cas01", "schg_cas02", "schg_cas03", "schg_cas04", "schg_cas05", "ordeal_1-1"; end; OnPCLoadMapEvent: if (.Gepard == 1) { //GEPARD SHIELD ID CHECKER for(set .@i ,0;.@i<getarraysize(.current_maps$);set .@i,.@i+1) { if (strcharinfo(3) == .current_maps$[.@i]) { getmapxy(.@map$,.@mapx,.@mapy,BL_PC); } } query_sql("SELECT last_unique_id FROM `login` WHERE account_id = "+getcharid(3)+"", .@UniqueId$); query_sql("SELECT account_id FROM `login` WHERE last_unique_id = '"+.@UniqueId$+"'", .@CuentaId); set .@error,getcharid(3,strcharinfo(0)); for(set .@i ,0;.@i<getarraysize(.@CuentaId);set .@i,.@i+1) { if(attachrid(.@CuentaId[.@i])) { if (.@CuentaId == 2000001) { set .@j,0; } else { getmapxy(.@map2$,.@mapx2,.@mapy2,BL_PC); if (.@map2$ == .@map$){ set .@j,.@j+1; } } } } detachrid; attachrid .@error; if(.@j > 1) { dispbottom "Sorry, dual login is not allowed on this map."; sleep2 500; dispbottom "Warping you back to Savepoint now..."; sleep2 1000; warp "SavePoint",0,0; } end; } else { for(set .@i ,0;.@i<getarraysize(.current_maps$);set .@i,.@i+1) { if (strcharinfo(3) == .current_maps$[.@i]) { getmapxy(.@map$,.@mapx,.@mapy,BL_PC); } } query_sql("SELECT last_ip FROM `login` WHERE account_id = "+getcharid(3)+"", .@UltimaIp$); query_sql("SELECT account_id FROM `login` WHERE last_ip = '"+.@UltimaIp$+"'", .@CuentaId); set .@error,getcharid(3,strcharinfo(0)); for(set .@i ,0;.@i<getarraysize(.@CuentaId);set .@i,.@i+1) { if(attachrid(.@CuentaId[.@i])) { //if .Gepard is 0 add id of accounts to which the system will not affect, brothers, couple, gms, etc ... .@CuentaId == accountId if (.@CuentaId == 2000001 || .@cuentaId == 2000156 || .@CuentaId == 2000249 || .@CuentaId == 2000002 || .@CuentaId == 2000031 || .@CuentaId == 2000050 || .@CuentaId == 2000021 || .@CuentaId == 2000073 || .@CuentaId == 2000029) { set .@j,0; } else { getmapxy(.@map2$,.@mapx2,.@mapy2,BL_PC); if (.@map2$ == .@map$){ set .@j,.@j+1; } } } } detachrid; attachrid .@error; if(.@j > 1) { dispbottom "Sorry, Double Login is not allowed on this map."; sleep2 1000; dispbottom "Warping you back to Savepoint..."; sleep2 2000; warp "SavePoint",0,0; } end; } }
-
Hi ! I just need help how to lessen the points given whenever a player goes AFK or IDLE .. This is an old Hourly system , I want to just give 1 point to those Afk players . they will continue gaining points while idle but not same as active players who have 5 to 6 points ... Thankyou ! - script hourlypoints FAKE_NPC,{ OnInit: //announce "[30 Minutes Points System]: The system have been reloaded, please relog again to get more points.", bc_all; announce "[Hourly Reward System]: Hourly system has been reloaded, please relog again to get more points.", bc_all; .point_name$ = "Hourly Points"; .point_amt = 5; // Normal points gained. .dlimit = 900; // Stop points if afk greater then in seconds. 600s = 10 minutes //43200 .enable = 1; .level = 0; .online_time = 3600; // One hour = 3600 seconds bindatcmd "hourlytime", "hourlypoints::OnAtcommand", 0, 100; bindatcmd "hourlypoints", "hourlypoints::OnCheckPoints", 0, 100; end; OnPCLoginEvent: if (BaseLevel >= .level) { #idle = 0; @backup_time = 0; if (!#acctick || #acctick > .online_time) #acctick = gettimetick(2) + .online_time; else #acctick += gettimetick(2); while(.enable) { @idle_time = checkidle(); if (checkvending() >= 1 || checkchatting() == 1 || @idle_time >= .dlimit) // { #acctick += @idle_time; // Add idle time #idle = 1; dispbottom "The hourly points event haulted because you were vending, chatting, or idle."; } else { sleep2 1000; @backup_time = .@time_left = #acctick - gettimetick(2); if (.@time_left <= 0) { if (vip_status(1)) { #HOURLYPOINTS += .point_amt + 1; #acctick = gettimetick(2) + .online_time; dispbottom "[Hourly Reward System]: Gained " + .point_amt + " " + .point_name$ + " +1 " + .point_name$ + " [Vip Bonus]. Stay online and gain more points."; } else { #HOURLYPOINTS += .point_amt; #acctick = gettimetick(2) + .online_time; dispbottom "[Hourly Reward System]: Gained " + .point_amt + " " + .point_name$ + ". Total " + #HOURLYPOINTS + " Hourly Points. Stay online to gain more points."; } } else { .@time_left = .online_time - .@time_left; .@Time$ = ""; .@Minutes = .@time_left / 60; .@time_left -= (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; if (.@Minutes == 15 && .@time_left == 0 || .@Minutes == 30 && .@time_left == 0 || .@Minutes == 45 && .@time_left == 0) dispbottom "[Hourly Reward System]: You spend a total of [" + .@Time$ + "] playing."; } } if (#idle) break; } } end; OnPCLogoutEvent: // BackUP online time if (BaseLevel >= .level) { if (@backup_time) #acctick = @backup_time; } end; OnCheckPoints: dispbottom "[Hourly Reward System]: You have a total of ["+ #HOURLYPOINTS +"] Hourly Points.",0xRRGGBB; end; OnAtcommand: if (BaseLevel >= .level) { if (#idle) { .@Time$ = ""; .@Minutes = @idle_time / 60; .@time_left = @idle_time - (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; dispbottom "[Hourly Reward System]: You been idle for " + .@Time$ + ". Please relog again.",0xRRGGBB; } else { .@time_left = @backup_time; .@Time$ = ""; .@Minutes = .@time_left / 60; .@time_left -= (.@Minutes * 60); if (.@Minutes > 1) .@Time$ += .@Minutes + " minutes, "; else if (.@Minutes > 0) .@Time$ += .@Minutes + " minute, "; if (.@time_left > 1 || .@time_left == 0) .@Time$ += .@time_left + " seconds"; else if (.@time_left == 1) .@Time$ += .@time_left + " second"; dispbottom "[Hourly Reward System]: You have [" + .@Time$ + "] left in able to gain a hourly points.",0xRRGGBB; } } end; }
-
Thankyou !! Sir @Emistry I think the preview feature of that npc is not working Hi ! Can you help me in this script .. Sir @Emistry suggested me this but I think the Preview feature is not working ..... //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6c //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= A dynamic quest shop based on Lunar's, with easier config. //= Includes support for multiple shops & cashpoints. //= Item Preview script by ToastOfDoom. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.2 Added category support. //= 1.3 More options and fixes. //= 1.4 Added debug settings. //= 1.5 Replaced categories with shop IDs. //= 1.6 Added support for purchasing stackables. //= 1.6a Added support for previewing costumes and robes. //= 1.6b Added 'disable_items' command. //= 1.6c Replaced function 'A_An' with "F_InsertArticle". //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; // ADD YOUR NPC HERE //============================================================ brasilis,182,241,6 script Quest Shop#1 998,{ callfunc "qshop"; } // prontera,165,203,6 script Quest Shop#2 998,{ callfunc "qshop",1,2; } // call the shop 1 and 2 defined below // etc.. Add your Shop NPCs 'Quest Shop#XXX' here //============================================================ // Script Core - DO NOT DUPLICATE THIS NPC !!!!!!!!!!!!! //============================================================ - script quest_shop -1,{ function Add; function Chk; function Slot; OnInit: freeloop(1); // ----------------------------------------------------------- // Basic shop settings. // ----------------------------------------------------------- set .Announce,1; // Announce quest completion? (1: yes / 0: no) set .ShowSlot,1; // Show item slots? (2: all equipment / 1: if slots > 0 / 0: never) set .ShowID,0; // Show item IDs? (1: yes / 0: no) set .ShowZeny,0; // Show Zeny cost, if any? (1: yes / 0: no) set .MaxStack,100; // Max number of quest items purchased at one time. // ----------------------------------------------------------- // Points variable -- optional quest requirement. // setarray .Points$[0],"<variable name>","<display name>"; // ----------------------------------------------------------- setarray .Points$[0], "#CASHPOINTS", "Cash Points"; //===================================================================================== // ------------------- ADD YOUR SHOPS NAME AND ITEMS SHOPS STARTING HERE -------------- //===================================================================================== // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1], "Headgears", // Shop Named 1 "Weapons", // Shop Named 2 "Other"; // Shop Named 3 // ----------------------------------------------------------- // Quest items -- do NOT use a reward item more than once! // Add(<shop ID>,<reward ID>,<reward amount>, // <Zeny cost>,<point cost>, // <required item ID>,<required item amount>{,...}); // ----------------------------------------------------------- // Shop 1 sleep 10; Add(1,5022,1,0,0,7086,1,969,10,999,40,1003,50,984,2); Add(1,5032,1,0,0,1059,250,2221,1,2227,1,7063,600); Add(1,5027,1,0,0,2252,1,1036,400,7001,50,4052,1); Add(1,5045,1,0,0,2252,1,1054,450,943,1200); // Shop 2 Add(2,1224,1,0,0,7297,30,969,10,999,50,714,10); Add(2,1225,1,0,0,7292,30,969,10,999,50,714,10); // Shop 3 Add(3,531,1,3,0,512,1,713,1); Add(3,532,1,3,0,513,1,713,1); Add(3,533,1,3,0,514,1,713,1); Add(3,534,1,3,0,515,1,713,1); // ----------------------------------------------------------- //===================================================================================== // ------------------- YOUR SHOPS AND ITEMS SHOPS HAVE BEEN ADDED --------------------- //===================================================================================== freeloop(0); set .menu$,""; for(set .@i,1; .@i<=getarraysize(.Shops$); set .@i,.@i+1) { set .menu$, .menu$+.Shops$[.@i]+":"; npcshopdelitem "qshop"+.@i,909; } end; OnMenu: set .@size, getarraysize(@i); if (!.@size) set @shop_index, select(.menu$); else if (.@size == 1) set @shop_index, @i[0]; else { for(set .@j,0; .@j<.@size; set .@j,.@j+1) set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; set @shop_index, @i[select(.@menu$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[@shop_index] == "") { message strcharinfo(0),"An error has occurred."; end; } dispbottom "Select one item at a time."; callshop "qshop"+@shop_index,1; npcshopattach "qshop"+@shop_index; end; OnBuyItem: // .@q[] : RewardID, BoughtAmt, RewardAmt, BaseAmt, ReqZeny, ReqPts, { ReqItem, ReqAmt, ... } setarray .@q[0],@bought_nameid[0],((@bought_quantity[0] > .MaxStack)?.MaxStack:@bought_quantity[0]); copyarray .@q[3],getd(".q_"+@shop_index+"_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+@shop_index+"_"+.@q[0])); set .@q[2],.@q[1]*.@q[3]; if (!.@q[2] || .@q[2] > 30000) { message strcharinfo(0),"You can't purchase that many "+getitemname(.@q[0])+"."; end; } mes "[Quest Shop]"; mes "Reward: ^0055FF"+((.@q[2] > 1)?.@q[2]+"x ":"")+Slot(.@q[0])+"^000000"; mes "Requirements:"; disable_items; if (.@q[4]) mes " > "+Chk(Zeny,.@q[4]*.@q[1])+(.@q[4]*.@q[1])+" Zeny^000000"; if (.@q[5]) mes " > "+Chk(getd(.Points$[0]),.@q[5]*.@q[1])+(.@q[5]*.@q[1])+" "+.Points$[1]+" ("+getd(.Points$[0])+"/"+(.@q[5]*.@q[1])+")^000000"; if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) mes " > "+Chk(countitem(.@q[.@i]),.@q[.@i+1]*.@q[1])+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem(.@q[.@i])+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; next; setarray @qe[1], getiteminfo(.@q[0], ITEMINFO_LOCATIONS), getiteminfo(.@q[0], ITEMINFO_VIEW); if (@qe[2] > 0 && ((@qe[1] & EQP_HEAD_LOW) || (@qe[1] & EQP_HEAD_TOP) || (@qe[1] & EQP_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_TOP) || (@qe[1] & EQP_COSTUME_HEAD_MID) || (@qe[1] & EQP_COSTUME_HEAD_LOW) || (@qe[1] & EQP_GARMENT) || (@qe[1] & EQP_COSTUME_GARMENT))) set .@preview,1; addtimer 1000, strnpcinfo(0)+"::OnEnd"; while(1) { switch(select(" ~ Purchase ^0055FF"+getitemname(.@q[0])+"^000000:"+((.@preview && !@qe[7])?" ~ Preview...":"")+": ~ ^777777Cancel^000000")) { case 1: if (@qe[0]) { mes "[Quest Shop]"; mes "You're missing one or more quest requirements."; close; } if (!checkweight(.@q[0],.@q[2])) { mes "[Quest Shop]"; mes "^FF0000You need "+(((.@q[2]*getiteminfo(.@q[0], ITEMINFO_WEIGHT))+Weight-MaxWeight)/10)+" additional weight capacity to complete this trade.^000000"; close; } if (.@q[4]) set Zeny, Zeny-(.@q[4]*.@q[1]); if (.@q[5]) setd .Points$[0], getd(.Points$[0])-(.@q[5]*.@q[1]); if (.@q[6]) for(set .@i,6; .@i<getarraysize(.@q); set .@i,.@i+2) delitem .@q[.@i],.@q[.@i+1]*.@q[1]; getitem .@q[0],.@q[2]; if (.Announce) announce strcharinfo(0)+" has created "+((.@q[2] > 1)?.@q[2]+"x "+getitemname(.@q[0]):callfunc("F_InsertArticle",getitemname(.@q[0])))+"!",0; specialeffect2 EF_FLOWERLEAF; close; case 2: setarray @qe[3], getlook(LOOK_HEAD_BOTTOM), getlook(LOOK_HEAD_TOP), getlook(LOOK_HEAD_MID), getlook(LOOK_ROBE), 1; if ((@qe[1] & 1) || (@qe[1] & 4096)) changelook LOOK_HEAD_BOTTOM, @qe[2]; else if ((@qe[1] & 256) || (@qe[1] & 1024)) changelook LOOK_HEAD_TOP, @qe[2]; else if ((@qe[1] & 512) || (@qe[1] & 2048)) changelook LOOK_HEAD_MID, @qe[2]; else if ((@qe[1] & 4) || (@qe[1] & 8192)) changelook LOOK_ROBE, @qe[2]; break; case 3: close; } } OnEnd: if (@qe[7]) { changelook LOOK_HEAD_BOTTOM, @qe[3]; changelook LOOK_HEAD_TOP, @qe[4]; changelook LOOK_HEAD_MID, @qe[5]; changelook LOOK_ROBE, @qe[6]; } deletearray @qe[0],8; end; function Add { if (getitemname(getarg(1)) == "null") { debugmes "Quest reward #"+getarg(1)+" invalid (skipped)."; return; } setarray .@j[0],getarg(2),getarg(3),getarg(4); for(set .@i,5; .@i<getargcount(); set .@i,.@i+2) { if (getitemname(getarg(.@i)) == "null") { debugmes "Quest requirement #"+getarg(.@i)+" invalid (skipped)."; return; } else setarray .@j[.@i-2],getarg(.@i),getarg(.@i+1); } copyarray getd(".q_"+getarg(0)+"_"+getarg(1)+"[0]"),.@j[0],getarraysize(.@j); npcshopadditem "qshop"+getarg(0),getarg(1),((.ShowZeny)?getarg(3):0); return; } function Chk { if (getarg(0) < getarg(1)) { set @qe[0],1; return "^FF0000"; } else return "^00FF00"; } function Slot { set .@s$,getitemname(getarg(0)); switch(.ShowSlot) { case 1: if (!getitemslots(getarg(0))) return .@s$; case 2: if (getiteminfo(getarg(0), ITEMINFO_TYPE) == 4 || getiteminfo(getarg(0), ITEMINFO_TYPE) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } } function script qshop { deletearray @i[0],getarraysize(@i); for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set @i[.@i],getarg(.@i); doevent "quest_shop::OnMenu"; end; } // Dummy shop data -- copy as needed. //============================================================ - shop qshop1 -1,909:-1 - shop qshop2 -1,909:-1 - shop qshop3 -1,909:-1 - shop qshop4 -1,909:-1 - shop qshop5 -1,909:-1