Jump to content

Skorm

Forum Moderator
  • Posts

    1268
  • Joined

  • Last visited

  • Days Won

    33

Everything posted by Skorm

  1. Can I reserve one of the mediums... And would you describe it as a large-medium or a small-medium? Maybe I should just get a large...
  2. Do you have a medium without the name then? I'll paypal you the money for it.
  3. Currently untested you'll have to let me know if somethings up. At this point I'm just compiling all of my edits into this script because many people are asking for it. //===== Hourly Points Script ========================================= //===== By: ========================================================== //= GorthexTiger modified by Nibi //===== Current Version: ============================================= //= 1.4.1 //===== 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 //= 1.4 = Added command to check remaining time and updated idle check. (Skorm) //= 1.4.1 = Modified the msgs to display according to .timer. (Skorm) //==================================================================== - script hourlypoints -1,{ OnPointGet: //Check for idle. while(checkvending() >= 1 || checkchatting() == 1 || checkidle() >= .idle) { if( .@mes$ == "" ) { dispbottom set( .@mes$, "The hourly points event stopped because you were vending, chatting, or idle!" ); set @hourly_points_timer, 0; } sleep2 .delay; } @consecutive_timer++; .@time_string$ = Time2Str( @consecutive_timer * ( .timer / 1000 ) ); dispbottom "You received "+.points+" Kafrapoint(s) by staying ingame for "+.@time_string$+"."; #CASHPOINTS = #CASHPOINTS + .points; dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoints"; @consecutive_bonus++; //Check for consecutive timer. if(@consecutive_bonus == .cdelay) { @consecutive_bonus = 0; #CASHPOINTS = #CASHPOINTS + .cpoints; dispbottom "You receive a bonus "+.cpoints+" Kafrapoint(s) by playing for "+.@time_string$+" consecutively!!!"; dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoint(s)"; } OnPCLoginEvent: addtimer .timer,"hourlypoints::OnPointGet"; @hourly_points_timer = gettimetick(2) + ( .timer / 1000 ); end; OnCmdHour: message strcharinfo(0),@hourly_points_timer ? Time2Str( @hourly_points_timer )+" remaining before you get your Hourly Reward(s).":"Something went wrong or you're considered idle at the moment, try relogging!"; end; OnInit: bindatcmd "ctr","hourlypoints::OnCmdHour"; //@ctr to view time till next point. .timer = 1000*60*60; //Timer in milliseconds. ( Default: 1000*60*60 [ = 1 Hour ] ) .cdelay = 3; //Delay before receiving the consecutive bonus. ( Default: 3 [ { ~ 3 Hours } *Using default timer ] ) .cpoints = 10; //Points gained for consecutive time online. ( Default: 10 ) .points = 1; //Normal points gained. ( Default: 1 ) .delay = 1000; //Delay for idle re-check check. ( Default: 1000 [ = 1 Second ] ) .idle = 60*5; //Player is idle after not moving for this many seconds. ( Default: 60*5 [ = 5 Minutes ] ) } - script check -1,{ OnInit: bindatcmd "check",strnpcinfo(3)+"::OnCheck"; end; OnCheck: dispbottom "You have " +#CASHPOINTS+ " cash points."; end; }
  4. Skorm

    help please

    I assumed the script was functioning correctly before hand. guild_vs2,50,49,3 script Mega Lotto 563,{ progressbar "",1; delitem .Cost[0], .Cost[1]; set .@i, rand(1,.Total); if (rand(1,100) > getd(".P"+.@i+"[0]")) { for(set .@j,0; .@j<getarraysize(.Default); set .@j,.@j+2) getitem .Default[.@j], .Default[.@j+1]; } else { for(set .@j,1; .@j<getarraysize(getd(".P"+.@i)); set .@j,.@j+2) { setarray .@k[0], getd(".P"+.@i+"["+.@j+"]"), getd(".P"+.@i+"["+(.@j+1)+"]"); getitem .@k[0], .@k[1]; if( getd(".P"+.@i+"[0]") == 1 ) announce "Congratulations to "+strcharinfo(0)+" for getting "+.@k[1]+"x "+getitemname(.@k[0])+"!",0; } } specialeffect2 248; close; OnTimer1800000: //30 Minutes. announce "I'd like to thank all of our lucky contestants. I'll be back in 5 Hours!",0; disablenpc strnpcinfo(3); end; OnTimer18000000: //5 Hours. initnpctimer; announce "Come test your luck at the Mega Lotta. Only avaliable for the next 30 Minutes!",0; enablenpc strnpcinfo(3); end; OnInit: initnpctimer; waitingroom "Play Lotto Here!",0; // Format: <%>,<item ID>,<count>{,...}; setarray .P1[0],100,607,5; setarray .P2[0],80,607,5; setarray .P3[0],70,607,5; setarray .P4[0],60,607,5; setarray .P5[0],50,607,5; setarray .P6[0],50,607,20; setarray .P7[0],40,607,25; setarray .P8[0],30,607,30; setarray .P9[0],20,607,25; setarray .P10[0],10,607,50; setarray .P11[0],100,30487,10; setarray .P12[0],90,30487,10; setarray .P13[0],50,12202,10; setarray .P14[0],50,12203,10; setarray .P15[0],50,12204,10; setarray .P16[0],50,12205,10; setarray .P17[0],50,12206,10; setarray .P18[0],50,12207,10; setarray .P19[0],20,30487,20; setarray .P20[0],10,30487,25; setarray .P21[0],50,12103,5; setarray .P22[0],40,12103,5; setarray .P23[0],30,12103,5; setarray .P24[0],20,12103,5; setarray .P25[0],10,12103,10; setarray .P26[0],50,12202,5; setarray .P27[0],50,12103,5; setarray .P28[0],50,12204,5; setarray .P29[0],50,12205,5; setarray .P30[0],50,12206,5; setarray .P31[0],50,12207,5; setarray .P32[0],5,7073,1; setarray .P33[0],5,7074,1; setarray .P34[0],5,7075,1; setarray .P35[0],5,7076,1; setarray .P36[0],5,7077,1; setarray .P37[0],5,7078,1; setarray .P38[0],5,7079,1; setarray .P39[0],5,7080,1; setarray .P40[0],5,7081,1; setarray .P41[0],5,7082,1; setarray .P42[0],5,7083,1; setarray .P43[0],5,7084,1; setarray .P44[0],5,7085,1; setarray .P45[0],5,7086,1; setarray .P46[0],5,7087,1; setarray .P47[0],5,7088,1; setarray .P48[0],5,7089,1; setarray .P49[0],5,7090,1; setarray .P50[0],5,7091,1; setarray .P51[0],5,7092,1; setarray .P52[0],1,4395,1; setarray .Default[0],30272,1; setarray .Cost[0],7368,1; set .Total,52; announce "Come test your luck at the Mega Lotta. Only avaliable for the next 30 Minutes!",0; end; }
  5. Back when I was using Openkore the system didn't detect client side monsters names but it was detecting an ID instead. So I made an Anti-bot script that took advantage of that. I'm sure it's by-passable from Openkore but if nobodies using it then perhaps there isn't a bypass for it just yet? Anyways this is a really old script and it was made for eAthena so enhancements could be made. You'll have to let me know if you get any errors or anything like that. https://github.com/Skormie/ea-addicts/blob/master/Antibot.txt Goodluck.
  6. Literally just did this last week and I'd ask you to search a bit harder before posting but for some reason the advanced search function wasn't working for me. Anyways if you want to see that post you can view it https://rathena.org/board/topic/105844-script-mod/ I've just went ahead and modified the script to your request and added a current idle check. //===== Hourly Points Script ========================================= //===== By: ========================================================== //= GorthexTiger modified by Nibi //===== Current Version: ============================================= //= 1.4 //===== 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 //= 1.4 = Added command to check remaining time and updated idle check. (Skorm) //==================================================================== - script hourlypoints -1,{ OnPointGet: while(checkvending() >= 1 || checkchatting() == 1 || checkidle() >= .idle) { if( .@mes$ == "" ) { dispbottom set( .@mes$, "The hourly points event haulted because you were vending, chatting, or idle." ); set @hourly_points_timer, 0; } sleep2 .delay; } set #CASHPOINTS, #CASHPOINTS + .point_amt; dispbottom "You received "+.point_amt+" Kafrapoints by staying ingame for 1 hour"; dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoints"; set @consecutive_hour, @consecutive_hour + 1; //Check for 3 hours consecutive if(@consecutive_hour == 3) { set @consecutive_hour,0; set #CASHPOINTS, #CASHPOINTS + .cpoint_amt; dispbottom "You receive "+.cpoint_amt+" Kafrapoints in playing for 12 consecutive hours"; dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoints"; } OnPCLoginEvent: addtimer .timer,"hourlypoints::OnPointGet"; set @hourly_points_timer, gettimetick(2) + ( .timer / 1000 ); end; OnCmdHour: message strcharinfo(0),@hourly_points_timer ? Time2Str( @hourly_points_timer )+" remaining before you get your Hourly Reward(s).":"Something went wrong or you're considered idle at the moment try relogging!"; end; OnInit: bindatcmd "ctr","hourlypoints::OnCmdHour"; set .timer, 1000*15*15; //Timer in milliseconds. set .cpoint_amt, 15; //Points gained for consecutive time online. set .point_amt, 5; //Normal points gained. set .delay, 1000; //Delay for idle re-check check. set .idle, 60; //Player is idle after not moving for this many seconds. }
  7. Super salty that I missed my chance to get one of these... Would be cool if there were some color options maybe for staff (Scripting Leaders get Orange ) and donators.
  8. We're already looking into this! I'll keep you posted if we find anything.
  9. Skorm

    Script mod

    Change: Time2Str( @hourly_points_timer - gettimetick(2) ) To: Time2Str( @hourly_points_timer ) Didn't realize that was already part of the function.
  10. Skorm

    Script mod

    //= 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,{ OnPointGet: while(checkvending() >= 1 || checkchatting() == 1) { sleep2 .delay; if(.@mes$=="") dispbottom set(.@mes$,"The hourly points event haulted because you were vending, chatting, or idle."); } set #CASHPOINTS, #CASHPOINTS + .point_amt; dispbottom "You received "+.point_amt+" Kafrapoints by staying ingame for 1 hour"; dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoints"; set @consecutive_hour, @consecutive_hour + 1; //Check for 3 hours consecutive if(@consecutive_hour == 3) { set @consecutive_hour,0; set #CASHPOINTS, #CASHPOINTS + .cpoint_amt; dispbottom "You receive "+.cpoint_amt+" Kafrapoints in playing for 12 consecutive hours"; dispbottom "Current Balance = "+#CASHPOINTS+" Kafrapoints"; } OnPCLoginEvent: addtimer .timer,"hourlypoints::OnPointGet"; set @hourly_points_timer, gettimetick(2) + ( .timer / 1000 ); end; OnCmdHour: message strcharinfo(0),@hourly_points_timer ? Time2Str( @hourly_points_timer )+" Remaining.":"Something went wrong relog!"; end; OnInit: bindatcmd "hour","hourlypoints::OnCmdHour"; set .timer, 1000*15*15; //Timer in milliseconds. set .cpoint_amt, 15; //Points gained for consecutive time online. set .point_amt, 5; //Normal points gained. set .delay, 1000; //Delay for idle re-check check. set .dlimit, 60*30; //Stop points if afk greater then in seconds (30mins). } Untested so let me know if you run into any problems @hour is the command.
  11. Skorm

    help please

    guild_vs2,50,49,3 script Mega Lotto 563,{ progressbar "",1; delitem .Cost[0], .Cost[1]; set .@i, rand(1,.Total); if (rand(1,100) > getd(".P"+.@i+"[0]")) { for(set .@j,0; .@j<getarraysize(.Default); set .@j,.@j+2) { getitem .Default[.@j], .Default[.@j+1]; if (!.@k[0]) setarray .@k[0], .Default[.@j], .Default[.@j+1]; } } else { for(set .@j,1; .@j<getarraysize(getd(".P"+.@i)); set .@j,.@j+2) { getitem getd(".P"+.@i+"["+.@j+"]"), getd(".P"+.@i+"["+(.@j+1)+"]"); if (!.@k[0]) setarray .@k[0], getd(".P"+.@i+"["+.@j+"]"), getd(".P"+.@i+"["+(.@j+1)+"]"); } } if( getd(".P"+.@i+"[0]") == 1 ) announce "Congratulations to "+strcharinfo(0)+" for getting "+.@k[1]+"x "+getitemname(.@k[0])+"!",0; specialeffect2 248; close; OnTimer1800000: //30 Minutes. announce "I'd like to thank all of our lucky contestants. I'll be back in 5 Hours!",0; disablenpc strnpcinfo(3); end; OnTimer18000000: //5 Hours. initnpctimer; announce "Come test your luck at the Mega Lotta. Only avaliable for the next 30 Minutes!",0; enablenpc strnpcinfo(3); end; OnInit: initnpctimer; waitingroom "Play Lotto Here!",0; // Format: <%>,<item ID>,<count>{,...}; setarray .P1[0],100,607,5; setarray .P2[0],80,607,5; setarray .P3[0],70,607,5; setarray .P4[0],60,607,5; setarray .P5[0],50,607,5; setarray .P6[0],50,607,20; setarray .P7[0],40,607,25; setarray .P8[0],30,607,30; setarray .P9[0],20,607,25; setarray .P10[0],10,607,50; setarray .P11[0],100,30487,10; setarray .P12[0],90,30487,10; setarray .P13[0],50,12202,10; setarray .P14[0],50,12203,10; setarray .P15[0],50,12204,10; setarray .P16[0],50,12205,10; setarray .P17[0],50,12206,10; setarray .P18[0],50,12207,10; setarray .P19[0],20,30487,20; setarray .P20[0],10,30487,25; setarray .P21[0],50,12103,5; setarray .P22[0],40,12103,5; setarray .P23[0],30,12103,5; setarray .P24[0],20,12103,5; setarray .P25[0],10,12103,10; setarray .P26[0],50,12202,5; setarray .P27[0],50,12103,5; setarray .P28[0],50,12204,5; setarray .P29[0],50,12205,5; setarray .P30[0],50,12206,5; setarray .P31[0],50,12207,5; setarray .P32[0],5,7073,1; setarray .P33[0],5,7074,1; setarray .P34[0],5,7075,1; setarray .P35[0],5,7076,1; setarray .P36[0],5,7077,1; setarray .P37[0],5,7078,1; setarray .P38[0],5,7079,1; setarray .P39[0],5,7080,1; setarray .P40[0],5,7081,1; setarray .P41[0],5,7082,1; setarray .P42[0],5,7083,1; setarray .P43[0],5,7084,1; setarray .P44[0],5,7085,1; setarray .P45[0],5,7086,1; setarray .P46[0],5,7087,1; setarray .P47[0],5,7088,1; setarray .P48[0],5,7089,1; setarray .P49[0],5,7090,1; setarray .P50[0],5,7091,1; setarray .P51[0],5,7092,1; setarray .P52[0],1,4395,1; setarray .Default[0],30272,1; setarray .Cost[0],7368,1; set .Total,52; announce "Come test your luck at the Mega Lotta. Only avaliable for the next 30 Minutes!",0; end; }
  12. Are you using a Harmony enabled client?
  13. /* CREATE TABLE `ragnarok_logs`.`sout_market_log` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(30) NOT NULL DEFAULT '', `message` VARCHAR(150) NOT NULL DEFAULT '', `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`)) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8; */ - script sout_atcommand -1,{ OnInit: bindatcmd "shout",strnpcinfo(0)+"::OnCommand"; end; OnCommand: if ( !getstrlen(.@atcmd_parameters$) ) { message strcharinfo(0), "Please, enter a message (usage: @shout <message>)."; end; } if ( @sout_delay + 1800 > gettimetick(2) ) { message strcharinfo(0), "There is a 30 min delay of using this command again"; end; } @sout_delay = gettimetick(2); .@message$ = implode( .@atcmd_parameters$," " ); announce "[Recruiting] "+ strcharinfo(0) +" : "+ .@message$, bc_area, 0x99FFFF; query_logsql( "INSERT INTO `sout_market_log` ( `name`, `message` ) VALUES ( '"+escape_sql(strcharinfo(0))+"', '"+escape_sql( getstrlen(.@message$)>150?substr(.@message$,0,149):.@message$ )+"' );" ); end; }
  14. Replace space with tab. Example: function script QWS_Dungeon_Warpra { to function script QWS_Dungeon_Warpra {
  15. Never tested the script so I didn't realize there was another menu to enable options. I've updated the script in the link to support enabling/disabling of the save function from the GM menu. You might need to refresh your browser cache to download the new script... It should be version 2.2.2
  16. Because of the way countitem2 works items that have added attributes or cards won't count... Anyways this should work but it's untested. //===== rAthena Script ======================================= //= Euphy's Quest Shop //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.6b //===== Compatible With: ===================================== //= rAthena SVN r16862+ //===== 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. //============================================================ // Shop NPCs -- supplying no argument displays entire menu. // callfunc "qshop"{,<shop ID>{,<shop ID>{,...}}}; //============================================================ prontera,164,203,6 script Quest Shop#1 998,{ callfunc "qshop"; } // Script Core //============================================================ - script quest_shop -1,{ function Add; function Chk; function Slot; function A_An; 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"; // ----------------------------------------------------------- // Shop IDs -- to add shops, copy dummy data at bottom of file. // setarray .Shops$[1],"<Shop 1>","<Shop 2>"{,...}; // ----------------------------------------------------------- setarray .Shops$[1],"Headgears","Weapons","Other"; // ----------------------------------------------------------- // 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>,<required refine>{,...}); // ----------------------------------------------------------- Add(1,5022,1,0,0,7086,1,0,969,10,0,999,40,0,1003,50,0,984,2,0); Add(1,5032,1,0,0,1059,250,0,2221,1,0,2227,1,0,7063,600,0); Add(1,5027,1,0,0,2252,1,0,1036,400,0,7001,50,0,4052,1,0); Add(1,5045,1,0,0,2252,1,0,1054,450,0,943,1200,0); Add(2,1224,1,0,0,7297,30,0,969,10,0,999,50,0,714,10,0); Add(2,1225,1,0,0,7292,30,0,969,10,0,999,50,0,714,10,0); Add(3,531,1,3,0,512,1,0,713,1,0); Add(3,532,1,3,0,513,1,0,713,1,0); Add(3,533,1,3,0,514,1,0,713,1,0); Add(3,534,1,3,0,515,1,0,713,1,0); // ----------------------------------------------------------- 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 .@i, select(.menu$); else if (.@size == 1) set .@i, @i[0]; else { for(set .@j,0; .@j<.@size; set .@j,.@j+1) set .@menu$, .@menu$+.Shops$[@i[.@j]]+":"; set .@i, @i[select(.@menu$)-1]; } deletearray @i[0],getarraysize(@i); if (.Shops$[.@i] == "") { message strcharinfo(0),"An error has occurred."; end; } dispbottom "Select one item at a time."; callshop "qshop"+.@i,1; npcshopattach "qshop"+.@i; 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_"+.@q[0]+"[0]"),getarraysize(getd(".q_"+.@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+3) mes " > "+Chk( countitem2(.@q[.@i],0,.@q[.@i+2],0,0,0,0,0),.@q[.@i+1]*.@q[1] )+((.ShowID)?"{"+.@q[.@i]+"} ":"")+Slot(.@q[.@i])+" ("+countitem2(.@q[.@i],0,.@q[.@i+2],0,0,0,0,0)+"/"+(.@q[.@i+1]*.@q[1])+")^000000"; next; setarray @qe[1], getiteminfo(.@q[0],5), getiteminfo(.@q[0],11); if (@qe[2] > 0 && ((@qe[1] & 1) || (@qe[1] & 256) || (@qe[1] & 512) || (@qe[1] & 1024) || (@qe[1] & 2048) || (@qe[1] & 4096) || (@qe[1] & 4) || (@qe[1] & 8192))) 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],6))+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]):A_An(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(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),2) == 4 || getiteminfo(getarg(0),2) == 5) return .@s$+" ["+getitemslots(getarg(0))+"]"; default: return .@s$; } } function A_An { setarray .@A$[0],"a","e","i","o","u"; set .@B$, "_"+getarg(0); for(set .@i,0; .@i<5; set .@i,.@i+1) if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); return "a "+getarg(0); } } 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
  17. I haven't the time to test or explain but here. http://upaste.me/28e222294cb8b86d3
  18. If it has enough slots? I don't get what the requirements are for you to be able to equip the orb.
  19. Please use your head. You say my method is redundant and then tell him to use commands that function in the exact same way. For clarity, yes he is starting it with a different command and checking it in a different way but they both work on the same timer system within the source. What I was trying to explain is to use NPC TIMERS... Instead of sleep or loops. x_x And to save timestamps to variables! But yeah thanks for insulting staff. You're a fantastic Global Moderator (Keeping the peace). (If you reply to this message, Emistry, I will not answer. I'm not trying to start a war I'm just pointing out the obvious.) Thank you Annie for offering depth into your answer, and avoiding any kind of arbitrary arguments. Also thank you for finding a bug in Emistry's "Superior" method. You really are the best.
  20. All the types of timers have different unique advantages but the best in terms of utility and performance is the built in timer... If that's even what you're asking... If you just want to show the amount of time that's passed between a distinct time-frame variables are the best way of doing that. startnpctimer; //Starting the timer attached to the npc. .start = gettimetick(2); //Saving the start time to my npc variable. end; OnTimer10000: //Calling the label when 10 seconds have passed. stopnpctimer; //Destroying the timer. .end = gettimetick(2); //Saving my ending time. .difference = .end - .start; //Calculating the time that has passed. dispbottom .difference + " seconds have passed."; //Spilling the output.
  21. Assuming the above script works well. menu "Last Warp ^777777["+lastwarp$+"]^000000",-, getcharid(1)?"Party Warp ^CCCCCC["+getpartyname(getcharid(1))+"]^000000":"",Party, " ~ Towns",Towns, " ~ Fields",Fields, " ~ Dungeons",Dungeons, " ~ Guild Castles",Castles, " ~ Guild Dungeons",Guild_Dungeons, " ~ Instances",Instances, " ~ Special Areas",Special; if (lastwarp$ == "") message strcharinfo(0),"You haven't warped anywhere yet."; else warp lastwarp$,lastwarpx,lastwarpy; end; Party: deletearray .@aid[0],128; deletearray @aid[0],128; set @j,0; set @select$,""; getpartymember getcharid(1),2; set .@num,$@partymembercount; copyarray .@aid[0],$@partymemberaid[0],.@num; set .@num,getarraysize(.@aid); for(set .@i,0;.@i<.@num;set .@i,.@i+1) if(isloggedin(.@aid[.@i])) { set @aid[@j],.@aid[.@i]; set @j,@j+1; set @select$,@select$+":"+rid2name(.@aid[.@i]); } set @menu,select(@select$)-2; if(isloggedin(@aid[@menu])) { getmapxy(@m$,@x,@y,0,rid2name(@aid[@menu])); if( getmapflag(@m$,mf_pvp) || @m$ == "mapname" || @m$ == "mapname" ) { mes "You cant warp to his map now."; close; } else { warp @m$,@x,@y; } } end; P.S: Please use code brackets next time, tyvm!
  22. That's actually one of my scripts
  23. Please remember to use code bracket button next time. amatsu,196,101,5 script Donation Orb Costume Enchanter 582,{ mes "Which Costume you want to Enchant?"; mes "Make sure You have the Orb needed."; set .@menu$, callsub( MenuSub, getequipid(.Equips[1]) ) +":"+ callsub( MenuSub, getequipid(.Equips[2]) ) +":"+ callsub( MenuSub, getequipid(.Equips[3]) ) +":Cancel"; next; if( .@menu$ == ":::Cancel" ) { mes "I'm sorry but you don't have any enchant-able costumes equipped."; close; } select(.@menu$); if( @menu >= getarraysize(.Equips) ) { mes "Thank you please come again!"; close; } set .@EquipID, getequipid(.Equips[@menu]); if( !countitem(.@EquipID) || @menu <= 0 ) { mes "You don't have this Costume Equipment with you."; close; } mes "Equipment: ^FF0000"+getitemname( .@EquipID )+"^000000"; switch( select( "-Creator Orb:-Whitesmith Orb:-Sniper Orb:-Clown and Gypsy Orb:-High Wizard and Scholar Orb:-Assassin Cross Orb" )) { case 1: setarray .RuneID[0],4743; delitem 4743,1; break; case 2: setarray .RuneID[0],4744; delitem 4744,1; break; case 3: setarray .RuneID[0],4745; delitem 4745,1; break; case 4: setarray .RuneID[0],4746; delitem 4746,1; break; case 5: setarray .RuneID[0],4747; delitem 4747,1; break; default: setarray .RuneID[0],4748; delitem 4748,1; break; } for( set .@i, 0; .@i < getarraysize( .RuneID ); set .@i, .@i + 1 ) { set .@RuneMenu$, .@RuneMenu$ + getitemname (.RuneID[.@i]) +":"; } if( .@RuneMenu$ == "" ) { mes "I'm sorry but you don't have any orbs to enchant with."; close; } set .@Rune,select( .@RuneMenu$ ) - 1; mes "Rune : ^FF0000"+getitemname( .RuneID[.@Rune] )+"^000000"; next; if( select("Confirm:Cancel") == 1 ) { delitem .@EquipID,1; getitem2 .@EquipID,1,1,0,0,.RuneID[.@Rune],0,0,0; mes "Done."; mes "^0000FF"+getitemname( .EquipID[.@Equip] )+"^000000"; mes "Enchanted with ^FF0000"+getitemname( .RuneID[.@Rune] )+"^000000"; } close; MenuSub: set .@sub, .@sub+1; for( set .@i, 0; .@i < .len; set .@i, .@i + 1 ) { if( getarg(0) == .EquipID[.@i] ) return getitemname (getarg(0)) + ( !getitemslots(getarg(0)) ? "" : "["+getitemslots(getarg(0))+"]" ); } return ""; OnInit: setarray .Equips[1], EQI_HEAD_TOP, EQI_HEAD_MID, EQI_HEAD_LOW; setarray .EquipID, 18508, 18543, 18579, 18580, 18595, 18529, 18631, 18637, 18639, 18693, 18577, 18647, 18649, 18657, 18664, 18690, 18712, 18737, 18743, 18747, 18546, 18627, 18644, 18643, 18665, 18670, 18677, 18683, 18698, 18746; set .len, getarraysize(.EquipID); }
  24. Fortunately for you I'm a hoarder of scripts. Minerworld By Myzter Unfortunately I never downloaded the bot killer script that or I did and deleted it not knowing what it was. I've updated the original topic.
×
×
  • Create New...