-
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
-
HI Guide Patch File add custome item To Servers Online (VPS)
Skorm replied to jacky's question in Script Requests
It's the same just patch the info to your clients via thor or something and connect to your server via winscp or some ftp client. -
- script dualclientkicker2 -1,{ OnPCLoginEvent: set .@len, query_sql("SELECT DISTINCT `account_id` FROM `char` WHERE `account_id` IN "+ "(SELECT `account_id` FROM `login` WHERE `last_mac` = "+ "(SELECT `last_mac` FROM `login` WHERE `account_id`="+getcharid(3)+")) AND `online` <> 0;",.@a); sleep2 1000; if( .@len > .max ) atcommand "@kick "+strcharinfo(0); end; OnInit: set .max, 2; //Max Connections. }
-
Change both instances of... if( getgmlevel() < .MinGMLevel ) end; To... if( getgmlevel() < .MinGMLevel || getgmlevel() >= 99 ) end;
-
Q>>Talisman Bonus is given without equipping the item
Skorm replied to dennis259's question in Script Requests
Hmm... Worked fine for me... I've given you more than enough viable options guess you're out of luck... -
Delete the other one and do this instead... CREATE TABLE `ragnarok`.`mvp_ladder` ( `account_id` INT(11) UNSIGNED NOT NULL, `char_id` INT(11) UNSIGNED NOT NULL, `total_kills` INT(11) NOT NULL DEFAULT '0', `current_points` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`account_id`)) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8;
-
Q>>Talisman Bonus is given without equipping the item
Skorm replied to dennis259's question in Script Requests
30388,Talisman,Talisman,0,50,,70,,,,,0xFFFFFFFF,63,2,,,,,,{ bonus_script "{ bonus bCastrate,-2; }",86400,8,1; },{},{} The only way to do it from the item database is as a usable or equip-able item... -
Q>>Talisman Bonus is given without equipping the item
Skorm replied to dennis259's question in Script Requests
<_<'' Ehh? You asked... "how to script Bonus is given without equipping the item" That is exactly what the examples I gave do. You can't put it in the item_db2 and make the effect work without equipping or using the item... -
- script KillCashPoint -1,{ OnPCKillEvent: if ( killedrid == getcharid(0) ) end; //No Points, killed himself if( getitemtick(2) < lkcount ) end; if ( compare( lastkilled$, "|"+killedrid ) ) { set lkcount, getitemtick(2)+.dly; set lastkilled$, (atoi(lastkilled$)+1)+"|"+killedrid; if ( atoi(lastkilled$) >= 5 ) { set #CASHPOINTS, #CASHPOINTS-3; dispbottom "You have Lose 3 points of Honour. Your Total Points are "+#CASHPOINTS; atcommand "@nuke "+strcharinfo(0); end; } else { set #CASHPOINTS, #CASHPOINTS+1; dispbottom "You have gained 1 Point of Honour. Your Total Points are "+#CASHPOINTS; end; } } else { set lastkilled$, "1|"+killedrid; set lkcount, getitemtick(2)+.dly; set #CASHPOINTS, #CASHPOINTS+1; dispbottom "You have gained 1 Point of Honour. Your Total Points are "+#CASHPOINTS; end; } end; OnInit: set .dly, 10; //delay in seconds; } Thanks.
-
prontera,149,150,5 script Master Chef 548,{ mes "[ Master Chef ]"; mes "So did you want to make some food?"; next; mes "[ Master Chef ]"; mes "Which dish were you interested in?"; next; switch( select("Tongue Dish:Dragon Breath Cocktail:Wine of Bergelmir:Hot Sand Steamed Scorpion:Stew of Immortality:Nine Tail Dish") ) { mes "[ Master Chef ]"; mes "Great choice you'll need:"; mes " "; case 1: mes "20 Tongues, 1 Pot, 1 Alcohol, 2 Aloeveras, 1 Hot Sauce, 5 Royal Jellies, 10 Yggdrasil Leafs, 2 Blue Potions"; callshop "Tongue Dish",1; break; case 2: mes "10 Maneater Roots, 1 Singing Plant, 5 Aloe Leaflets, 5 Royal Jellies, 5 Lemons, 5 Prickly Fruits, 1 Yggdrasil berry, 10 Blue Herbs"; callshop "Dragon Breath Cocktail",1; break; case 3: mes "1 Yggdrasilberry, 10 Ice Cubics, 10 Bacillus, 4 Royal Jellies, 3 Concentration Potions, 5 Alcohol, 2 Prickly Fruits, 1 Illusion Flower"; callshop "Wine of Bergelmir",1; break; case 4: mes "20 Scorpion Tails, 20 Scorpion Claws, 2 Aloeveras, 3 Yggdrasil Leafs, 3 Bitter Herbs, 10 Royal Jellies, 1 Hot Sauce, 1 Pot"; callshop "Hot Sand Steamed",1; break; case 5: mes "20 Immortal Hearts, 10 Mementos, 1 Yggdrasil Seed, 2 Anodynes, 10 Heart of Mermaids, 2 Hot Sauce, 10 Amulets, 2 Bitter Herbs"; callshop "Stew of Immortality",1; break; case 6: mes "10 Nine Tails, 2 Four Leaf Clovers, 10 Maneater Roots, 10 Sharp Leafs, 4 Yggdrasil Leafs, 1 Plain Sauce, 1 Yellow Spice, 2 Izidors"; callshop "Nine Tail Dish",1; } } - shop Tongue Dish -1,7481:1000,1015:528,7482:200,970:400,606:1500,7455:700,526:7000,610:4000,505:5000 - shop Dragon Breath Cocktail -1,7481:1000,1033:208,707:500,521:360,526:7000,568:60,576:540,607:5000,510:60 - shop Wine of Bergelmir -1,7481:1000,607:5000,7066:660,7119:1025,526:7000,645:800,970:400,576:540,710:1000 - shop Hot Sand Steamed -1,7481:1000,904:124,7125:706,606:1500,610:4000,621:20,526:7000,7455:700,7482:200 - shop Stew of Immortality -1,7481:1000,929:374,934:600,608:5000,605:2000,950:264,7455:700,609:100,621:20 - shop Nine Tail Dish -1,7481:1000,1022:650,706:80000,1033:208,7100:806,610:4000,7454:700,7452:1000,709:500
-
I'm not doing anything with this script until it's posted correctly with tabs.
-
Yeah you're missing the sql table but it also looks like your missing other parts of the script like where it inserts values into the sql table... CREATE TABLE `ragnarok`.`mvp_ladder` ( `char_id` INT(11) UNSIGNED NOT NULL, `total_kills` INT(11) NOT NULL DEFAULT '0', PRIMARY KEY (`char_id`)) ENGINE = MyISAM DEFAULT CHARACTER SET = utf8;
-
Q>>Talisman Bonus is given without equipping the item
Skorm replied to dennis259's question in Script Requests
- script Talisman -1,{ OnPCLoginEvent: if( countitem(30382) ) bonus_script "{ bonus bCastrate,-2; }",86400,8,1; if( countitem(30388) ) bonus_script "{ bonus bDelayrate,-5; }",86400,8,1; end; } Or Lilith has a really nice mod that works pretty much the same way but with variables instead. http://rathena.org/board/topic/62150-extra-bonuses-without-items/ -
- script KillCashPoint -1,{ OnPCKillEvent: if ( killedrid == getcharid(0) ) end; //No Points, killed himself explode( .@tmp_ary$, lkcount$, "#" ); if( getitemtick(2) < atoi(.@tmp_ary$[1]) ) end; if ( lastkilled == killedrid ) { set lkcount$, (atoi(.@tmp_ary$)+1)+"#"+(getitemtick(2)+.dly); if ( atoi(.@tmp_ary$) >= 5 ) { set #CASHPOINTS, #CASHPOINTS-3; dispbottom "You have Lose 3 points of Honour. Your Total Points are "+#CASHPOINTS; atcommand "@nuke "+strcharinfo(0); end; } else { set #CASHPOINTS, #CASHPOINTS+1; dispbottom "You have gained 1 Point of Honour. Your Total Points are "+#CASHPOINTS; end; } } else { set lastkilled, killedrid; set lkcount$, "1#"+(getitemtick(2)+.dly); set #CASHPOINTS, #CASHPOINTS+1; dispbottom "You have gained 1 Point of Honour. Your Total Points are "+#CASHPOINTS; end; } end; OnInit: .dly = 10; //delay in seconds; }
-
Would it be possible to use the items id? Like the first 16 bits would be used to store information about how long the item remains bound and the last 16 would be for the cards id? I'm not really sure how much space is needed for bound items... All your doing is checking the amount of time remaining right? x_x
-
Like this? prontera,150,150,5 script Buffer 100,{ if( @h_last > gettimetick(2) || !slc_bufs ) goto Set_Buffs; set @h_last, gettimetick(2)+5; .@total = callsub(Sub_PriceCheck); if( .@total > Zeny ) { message strcharinfo(0), "You don't have enough zeny to buff double click the buffer to modify your selection."; end; } for( .@a = 0; .@a < .len; .@a++ ) if( ( slc_bufs & pow( 2, .@a ) ) ) { skilleffect .skil_num[.@a], .levels[.@a]; sc_start .sc_effect[.@a], .ticks[.@a], .levels[.@a]; message strcharinfo(0),"Buff "+.skil_txt$[.@a]+" Added!"; } Zeny = Zeny - .@total; end; Sub_PriceCheck: for( .@a = 0; .@a < .len; .@a++ ) if( ( slc_bufs & pow( 2, .@a ) ) ) .@total = .@total + .price[.@a]; return .@total; Set_Buffs: .@slc_bufs = slc_bufs; .@total = callsub(Sub_PriceCheck); function sf { function s; .@a = getarg(2); .@len = getarg(3); return ( sprintf( getarg(0), s(.@a, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)), s(.@a++, .@len, getarg(1), getarg(4), getarg(5)) ) +(( .@a+1 < .@len )?":Next":":") +(( .@a-11 > 0 )?":Back":":") +":Done:Cancel" ); function s { if( getarg(0) >= getarg(1) ) return ""; else { .@name$ = getelementofarray( getarg(2), getarg(0) ); return .@name$==""?"":"Buff [ ^0054ff"+.@name$+"^000000 ] Lv"+getelementofarray( getarg(4), getarg(0) )+" [ "+(getarg(3)&pow(2,getarg(0))?"^35a100On":"^FF0000Off")+"^000000 ]"; } }; }; function nex { return((getarg(0)+10)<getarg(1)?getarg(0)+10:getarg(1)-(getarg(1)%10)); }; function bac { return((getarg(0)-10)>=0?getarg(0)-10:0); }; mes .npc_nm$; mes "Select your buffs!"; next; .@a = 0; while( 1 ) { select( sf( .format$, .skil_txt$, .@a, .len, .@slc_bufs, .levels ) ); switch( @menu ) { case 11: .@a = nex( .@a, .len ); break; case 12: .@a = bac( .@a ); break; case 13: mes .npc_nm$; mes "Alright, your current total will be "+.@total+"z each time you use my buffing service. Is that ok?"; next; if( select("Yes:No") == 1 ) slc_bufs = .@slc_bufs; case 14: end; default: .@select = .@a+@menu-1; if( ( .@slc_bufs & pow( 2, .@select ) ) ) { .@slc_bufs = .@slc_bufs - pow( 2, .@select ); .@total = .@total - .price[.@select]; } else { .@slc_bufs = .@slc_bufs + pow( 2, .@select ); .@total = .@total + .price[.@select]; } } } end; OnInit: .npc_nm$ = "[ "+strnpcinfo(1)+" ]"; setarray .sc_effect, SC_INCREASEAGI, SC_BLESSING, SC_ASSUMPTIO, SC_IMPOSITIO, SC_ANGELUS, SC_MAGNIFICAT, SC_GLORIA; setarray .skil_txt$, "Increase Agi", "Blessing", "Assumptio", "Impositio", "Angelus", "Magnificat", "Gloria"; setarray .ticks, 300000, 300000, 300000, 300000, 300000, 300000, 300000; setarray .price, 1000, 1000, 5000, 5000, 5000, 10000, 10000; setarray .skil_num, 29, 34, 361, 66, 33, 74, 75; setarray .levels, 10, 10, 5, 5, 10, 5, 5; .format$ = "%s:%s:%s:%s:%s:%s:%s:%s:%s:%s"; .len = getarraysize(.sc_effect); end; }
-
if( countitem(<item_id>) < 20 ) {
-
I modified my above post.
-
Honestly I think this is a bug... // @commands (script-based) struct atcmd_binding_data* get_atcommandbind_byname(const char* name) { int i = 0; if( *name == atcommand_symbol || *name == charcommand_symbol ) name++; // for backwards compatibility ARR_FIND( 0, atcmd_binding_count, i, strcmpi(atcmd_binding[i]->command, name) == 0 ); return ( i < atcmd_binding_count ) ? atcmd_binding[i] : NULL; } Is a function used to get the bound command.... It uses strcmpi which is case insensitive. I'll ask someone who knows more about source than I do. x_x;; Edit: Alright so I was right it was a bug xD... I compared an older version of rAthena that I had and I can confirm your error, but it was solved in newer versions. If you don't feel like updating... In atcommand.c search for strcmp(atcmd_binding[i]->command, name) replace it with strcmpi(atcmd_binding[i]->command, name) and recompile.
-
It would be either... set #WOEPOINTS, #WOEPOINTS+1; Or... #WOEPOINTS++; Alternatively you could do... set #WOEPOINTS, #WOEPOINTS++; But that'd be increasingly redundant. xD
-
mes "[Costume-IT]"; if( !countitem(<item_id>) ) { mes "I'm sorry but you need at least one "+getitemname(<item_id>)+" before you may use my services!"; close; } mes "Hello and welcome to the Costume-IT service."; mes "Here you can convert your headgears into a Costume Headgear.";
-
Try this... prontera,151,190,5 script PvP Warper 843,{ mes "[ ^ff0000PVP Warper^000000 ]"; announce ""+strcharinfo(0)+" has entered PvP Arena [ Ancient - Nightmare ]", bc_all; warp "guild_vs2.gat",0,0; close2; delwaitingroom; OnInit: waitingroom "PvP Warper [ "+getmapusers("guild_vs2")+" ]",1; end; } The npc probably just needs to enter the room etc.
-
From a script standpoint just manually bind the different case combinations to the same label. Ex: bindatcmd "item", strnpcinfo(0)+"::Onaaa"; bindatcmd "ITEM", strnpcinfo(0)+"::Onaaa"; and everything in between.
-
[Paid] Automatic increased rates in certain days
Skorm replied to c2greentea's question in Script Requests
- script X2 -1,{ OnInit: set .brate, getBattleFlag("base_exp_rate"); set .jrate, getBattleFlag("job_exp_rate"); setarray .drate, getBattleFlag("item_rate_common"), getBattleFlag("item_rate_heal"), getBattleFlag("item_rate_use"), getBattleFlag("item_rate_equip"); end; OnSat0000: setarray .@drop_rates, 1000, 1000, 1000, 1000; callsub Sub_Rates, 3500, 3500, .@drop_rates; end; OnSun1200: callsub Sub_Rates, .brate, .jrate, .drate; end; //------------------- Sub_Rates: set .@brate, getarg(0); set .@jrate, getarg(1); copyarray .@drate[0], getelementofarray( getarg(2), 0 ), 4; //Base exp setbattleflag( "base_exp_rate", .@brate ); //Job exp setbattleflag( "job_exp_rate", .@jrate ); //Drops setbattleflag( "item_rate_common", .@drate ); setbattleflag( "item_rate_heal", .@drate[1] ); setbattleflag( "item_rate_use", .@drate[2] ); setbattleflag( "item_rate_equip", .@drate[3] ); //we don't change card drops rate, because these values won't change them anyway atcommand "@reloadmobdb"; announce "Current Rune-Midgard rates are: 1."+(.@brate-100)+"x 1."+(.@jrate-100)+"x 1."+(.@drate-100)+"x",bc_all,0xFF6060; return; } -
20228,_Dyna_Upper,Dyna Upper,5,5,0,10,,0,,4,0xFFFFFFFF,7,2,256,,1,,0,{ bonus bAllStats,35; bonus2 bAddRace,RC_DemiHuman,20; bonus2 bAddRace,RC_Player,20; },{ callfunc "MorphoEquip", 1; },{}