-
Posts
2407 -
Joined
-
Last visited
-
Days Won
52
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Capuche
-
In the red square 100 = 100% refine = safe refine Just before the red square, 7 = Safe level limit for example in the first line.
-
French translation : map_msg.conf Any comments from french community are welcomed.
-
I think you should use Getinventorylist to retrieve the item ID of the inventory with @inventorylist_id[] like icabit said. Then make a loop to check each Item with Getiteminfo getinventorylist; while ( .@i < @inventorylist_count && getiteminfo( @inventorylist_id[ .@i ] ,5 ) != 32 && getiteminfo( @inventorylist_id[ .@i ] ,5 ) != 2 ) .@i++; if ( .@i < @inventorylist_count ) { mes "Sorry you have a weapon or a shield in your inventory."; close; } mes "you pass."; close;
-
trunk/npc/custom/etc/mvp_arena.txt This ?
-
} } end; // <-- Add This L_LadderMove: if (getarg(0) == 0) set @length,@beginmoving;
-
Try the release of goddameit http://www.eathena.ws/board/index.php?showtopic=241741
-
Your request look like Satan Catcher Event by Karul
-
prontera,152,190,5 script Job Master 123,{ mes .npc_name$; if ( Class != 0 ) { mes "I'm sorry, you do not meet the requirements to change"; mes "Please come again soon!"; close; } else if ( SkillPoint != 0 ) { mes "I'm sorry, please use up all your skill points before changing jobs"; mes "Please come again soon!"; close; } else if ( JobLevel < 10 ) { mes "I'm sorry, you do not seem to have enough Job Levels"; mes "Please come again soon!"; close; } skill 142,1,0; skill 143,1,0; mes "Welcome, please select the job you wish to change into :"; next; copyarray .@job_, .job_, .size_job_; set .@job_[ .size_job_ ], ( Sex ? .job_special[0] : .job_special[1] ); set .@menu$, .menu$ +"^777777~ "+ jobname( .@job_[ .size_job_ ] ); set .@s, select( .@menu$ ) -1; mes .npc_name$; mes "Are you sure you want to become a "+ jobname( .@job_[.@s] ) +" ?"; next; if ( select( "^777777~ Yes !", "~ No !^000000" ) -1 ) close; jobchange .@job_[.@s]; if ( .Platinum ) callsub Get_Platinum; close; Get_Platinum: skill 142,1,0; switch(BaseClass) { case 0: if (Class !=23) skill 143,1,0; break; case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break; case 2: skill 157,1,0; break; case 3: skill 147,1,0; skill 148,1,0; break; case 4: skill 156,1,0; break; case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break; case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break; default: break; } switch(BaseJob) { case 7: skill 1001,1,0; break; case 8: skill 1014,1,0; break; case 9: skill 1006,1,0; break; case 10: skill 1012,1,0; skill 1013,1,0; break; case 11: skill 1009,1,0; break; case 12: skill 1003,1,0; skill 1004,1,0; break; case 14: skill 1002,1,0; break; case 15: skill 1015,1,0; skill 1016,1,0; break; case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break; case 17: skill 1005,1,0; break; case 18: skill 238,1,0; break; case 19: skill 1010,1,0; break; case 20: skill 1011,1,0; break; default: break; } return; OnInit: set .Platinum,1; // Get platinum skills automatically? (1: yes / 0: no) set .npc_name$, "^ff0000[Job Master]^000000"; // NPC name // Others.. setarray .job_, Job_Lord_Knight, Job_High_Priest, Job_High_Wizard, Job_Whitesmith, Job_Sniper, Job_Assassin_Cross, Job_Paladin, Job_Champion, Job_Professor, Job_Stalker, Job_Creator, Job_Taekwon, Job_Star_Gladiator, Job_Soul_Linker, Job_SuperNovice, Job_Gunslinger, Job_Ninja; setarray .job_special, Job_Clown, Job_Gypsy; set .size_job_, getarraysize( .job_ ); for ( set .@i, 0; .@i < .size_job_; set .@i, .@i +1 ) set .menu$, .menu$ +"^777777~ "+ jobname( .job_[.@i] ) +":"; end; }
-
function script timeleft__ { function s; if ( ( .@left = getarg(0) ) <= 0 ) return getarg(0); .@week = .@left / 86400 * 7; .@day = .@left / 86400; .@hour = .@left % 86400 / 3600; .@min = .@left % 3600 / 60; .@sec = .@left % 60; if( .@week ) return .@week +" week"+ s( .@week ) + .@day +" day"+ s( .@day ) + .@hour +" hour"+ s( .@hour ); else if ( .@day ) return .@day +" day"+ s( .@day ) + .@hour +" hour"+ s( .@hour ); else if ( .@hour ) return .@hour +" hour"+ s(.@hour) + .@min +" min" +s( .@min ); else if ( .@min ) return .@min +" min"+ s( .@min ) + .@sec +" sec"+ s( .@sec ); else return .@sec +" sec"+ s( .@sec ); function s { return ( getarg(0) > 1 ? "s " : " " ); } } prontera,149,129,5 script TotalTimeOnline 857,{ query_sql "SELECT value FROM time_online WHERE char_id = "+ getcharid(0) +" LIMIT 1", .@time_char; query_sql "SELECT value FROM time_online WHERE account_id = "+ getcharid(3) +" LIMIT 1", .@time_account; mes "^FF6600Time device^000000"; mes "My Game's Time."; mes "- Account online since: ^777777"+ callfunc( "timeleft__", .@time_account + gettimetick(2) - @login_time ) +"^000000."; mes "-----------------------------------"; mes "- Character online since: ^777777"+ callfunc( "timeleft__", .@time_char + gettimetick(2) - @login_time ) +"^000000."; next; if ( select( "^777777~ Top 5 accounts online.", ( getgmlevel() > 10 ? "~ Reset Ranking" : "" ), "~ Cancel^000000" ) == 3 ) close; else if( @menu == 2 ) { if( select( "^777777~ Reset The character ranking.", "~ Reset The account time", "~ Cancel^000000" ) == 3 ) close; else if( @menu == 2 ) { .@choice_reset$ = "account time"; .@var_name$ = "account_id"; } else { .@choice_reset$ = "character ranking"; .@var_name$ = "char_id"; } mes "^FF6600Time device^000000"; mes "Are you sure to reset the "+ .@choice_reset$ +" ?"; next; if( select( "^777777~ No", "~ Yes^000000" ) == 1 ) close; mes "^FF6600Time device^000000"; mes .@choice_reset$ +" reset."; query_sql "DELETE FROM `time_online` WHERE `time_online`."+ escape_sql( .@var_name$ ) +" > 0"; close; } .@size = query_sql( "SELECT `char`.`name`, `value` FROM `time_online` LEFT JOIN `char` ON `time_online`.`char_id` = `char`.`char_id` WHERE time_online.`char_id` > 0 ORDER BY `value` DESC LIMIT 5", .@name$, .@value ); if( .@size ) { .@origin = getcharid(3); mes "^FF6600Time device^000000"; for( .@i = 0; .@i < .@size; .@i++ ) { if( attachrid( getcharid( 3,.@name$[.@i] ) ) ) { .@value[.@i] = .@value[.@i] + gettimetick(2) - @login_time; attachrid( .@origin ); } mes "^777777"+ ( .@i +1 ) +"/^000000 "+ .@name$[.@i] +": ^FF0000"+ callfunc( "timeleft__", .@value[.@i] ) +"^000000"; } } close; OnPCLoginEvent: if( getgmlevel() >= 5) end; set @login_time, gettimetick(2); end; OnPCLogoutEvent: if ( @login_time && getgmlevel() < 5 ) {// @login_time must be empty for gm but just in case query_sql "INSERT INTO `time_online` VALUES ( "+ getcharid(0) +", 1, 0 ) ON DUPLICATE KEY UPDATE value = value + "+ ( gettimetick(2) - @login_time ); query_sql "INSERT INTO `time_online` VALUES ( 0, 1, "+ getcharid(3) +" ) ON DUPLICATE KEY UPDATE value = value + "+ ( gettimetick(2) - @login_time ); } end; OnSun0000: .@size = query_sql( "SELECT `char`.`char_id`, `char`.`account_id` FROM `char` LEFT JOIN `time_online` ON `time_online`.`char_id` = `char`.`char_id` WHERE time_online.`char_id` > 0 ORDER BY `value` DESC LIMIT "+ getarraysize( .reward_ID ), .@char_id, .@account_id ); for( .@i = 0; .@i < .@size; .@i++ ) { query_sql("INSERT INTO `mail` (send_name,dest_id,title,message,nameid,amount,identify,zeny,time) "+ "VALUES ('no-reply',"+ .@char_id[.@i] +",'Reward Online',"+ "'"+ escape_sql( .message$ ) +"',"+ .reward_ID[.@i] +","+ .reward_amount[.@i] +",0,"+ .reward_zeny[.@i] +",UNIX_TIMESTAMP(NOW()))"); if ( isloggedin( .@account_id[.@i], .@char_id[.@i] ) ) message rid2name( .@account_id[.@i] ),"You've got mail! Please re-login to update your mailing list."; } end; OnInit: .message$ = "Here your reward for being in the top 5 of the character online this week !"; setarray .reward_ID, 501, 502, 503; setarray .reward_amount, 1, 1, 1; setarray .reward_zeny, 0, 0, 0; end; } SQL part CREATE TABLE IF NOT EXISTS `time_online` ( `char_id` int(11) unsigned NOT NULL DEFAULT '0', `value` varchar(1000) NOT NULL DEFAULT '0', `account_id` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`char_id`,`account_id`), KEY `account_id` (`account_id`), KEY `char_id` (`char_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Set your option here: OnInit: .message$ = "Here your reward for being in the top 5 of the character online this week !"; setarray .reward_ID, 501, 502, 503; setarray .reward_amount, 1, 1, 1; setarray .reward_zeny, 0, 0, 0;
-
Hmm another point. Do you want to skip 1st trans class too ? i.e. High swordman, High thief.. etc..
-
What is your emulator ? This job changer doesn't work with eA.
-
If you don't own any castle, the npc does nothing.
-
Edit previous post. You should explain what is not working.
-
You can use isequipped command with any ID and search more (or less) than 4 cards. Other sample: If I equip one Aerial ( ID : 5011 ) and a rod (ID: 1601 ), I get allstat +5. 1601,Rod,Rod,4,50,,400,15:30,,1,3,0x00818315,7,2,2,1,1,1,10,{},{},{} 5011,Antenna,Aerial,5,20,,100,,3,,0,0xFFFFFFFF,7,2,256,,0,1,97,{ if ( isequipped(1601,5011) ) bonus bAllStats,5; },{},{}
-
trunk/npc/custom/jobmaster.txt Change case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023); Into case 0: Job_Menu(4002,4003,4004,4005,4006,4007,23,24,25); and if (.@i==4001 && .LastJob ) set lastJob, Class; into if (.@i==4001 && .LastJob || .@i == 0 && .LastJob) set lastJob, Class;
-
Request Job changer No Rebirt (2nd Job Support)
Capuche replied to markiez22's question in Script Requests
prontera,153,193,6 script Job Master 123,{ function Job_Menu; function A_An; mes "[Job Master]"; if (Class > 4049) { mes "No more jobs are available."; close; } if (checkfalcon() || checkcart() || checkriding() || ismounting()) { mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding."; close; } if (.SkillPointCheck && SkillPoint) { mes "Please use all your skill points before proceeding."; close; } set .@eac, eaclass(); set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class); if (.@i > 6 && .@i < 22) { if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } if (Class > 21) { mes "Switch to third class?"; next; Job_Menu(roclass(.@eac|EAJL_THIRD)); close; } while(1) { mes "Select an option."; next; set .@i, select( ( .Jump_trans_Class ? " ~ ^0055FF"+ jobname( roclass(.@eac|EAJL_UPPER) ) +"^000000" : " ~ ^0055FFRebirth^000000" ), ((.ThirdClass)?" ~ ^FF0000Third Class^000000":""), " ~ ^777777Cancel^000000"); if (.@i==3) close; mes "[Job Master]"; mes "Are you sure?"; next; Job_Menu( .@i == 1 ? ( .Jump_trans_Class ? roclass(.@eac|EAJL_UPPER) : 4001 ) : ( .@i == 3 ? roclass( .@eac&EAJ_BASEMASK ) : roclass(.@eac|EAJL_THIRD) ) ); mes "[Job Master]"; } } set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2); if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99; if (Class == Job_Ninja) setarray .@exp[0],.@j1,70; if (.@exp[0] && .ThirdClass) { if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } mes "Switch to "+jobname(.@exp[0])+"?"; next; Job_Menu(.@exp[0]); close; } if (.@eac&EAJL_2) if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) { mes "No more jobs are available."; close; } if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) { if (JobLevel < .JobReq[0]) mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class."; else if (Class == 4001 && .LastJob && lastJob) { mes "Switch classes now?"; next; Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); } else switch(Class) { case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023); case 4001: Job_Menu(4002,4003,4004,4005,4006,4007); case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045); default: mes "An error has occurred."; break; } close; } if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) mes "No more jobs are available."; else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1]) mes "A job level of "+.JobReq[1]+" is required to change into the 2nd Class."; else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) { mes "Switch classes now?"; next; Job_Menu(lastJob+4001); } else Job_Menu(.@j1,.@j2); close; function Job_Menu { while(1) { if (getargcount() > 1) { mes "Select a job."; set .@menu$,""; for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set .@menu$, .@menu$+" ~ "+jobname(getarg(.@i))+":"; set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; next; set .@i, getarg(select(.@menu$)-1,0); if (!.@i) close; if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) { mes "[Job Master]"; mes "A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+"."; close; } mes "[Job Master]"; mes "Are you sure?"; next; } else set .@i, getarg(0); if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) { mes "[Job Master]"; mes "You are now "+A_An(jobname(.@i))+"!"; if (.@i==4001 && .LastJob) set lastJob, Class; jobchange .@i; if (.@i==4001 || .@i==4023) resetlvl(1); specialeffect2 338; specialeffect2 432; if (.Platinum) callsub Get_Platinum; close; } if (getargcount() == 1) return; mes "[Job Master]"; } end; } 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); } Get_Platinum: skill 142,1,0; switch(BaseClass) { case 0: if (Class !=23) skill 143,1,0; break; case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break; case 2: skill 157,1,0; break; case 3: skill 147,1,0; skill 148,1,0; break; case 4: skill 156,1,0; break; case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break; case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break; default: break; } switch(BaseJob) { case 7: skill 1001,1,0; break; case 8: skill 1014,1,0; break; case 9: skill 1006,1,0; break; case 10: skill 1012,1,0; skill 1013,1,0; break; case 11: skill 1009,1,0; break; case 12: skill 1003,1,0; skill 1004,1,0; break; case 14: skill 1002,1,0; break; case 15: skill 1015,1,0; skill 1016,1,0; break; case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break; case 17: skill 1005,1,0; break; case 18: skill 238,1,0; break; case 19: skill 1010,1,0; break; case 20: skill 1011,1,0; break; default: break; } return; OnInit: setarray .Rebirth[0],99,50; // Minimum base level, job level to rebirth OR change to third class setarray .JobReq[0],10,40; // Minimum job level to turn into 1st class, 2nd class set .ThirdClass,1; // Enable third classes? (1: yes / 0: no) set .SNovice,45; // Minimum base level to turn into Super Novice set .LastJob,1; // Enforce linear class changes? (1: yes / 0: no) set .SkillPointCheck,1; // Force player to use up all skill points? (1: yes / 0: no) set .Platinum,1; // Get platinum skills automatically? (1: yes / 0: no) set .Jump_trans_Class, 1; // Jump directly to 2nd transclass without becoming 1st trans (1: yes / 0: no) (ex: alchemist -> creator) end; } set .Jump_trans_Class, 1; // Jump directly to 2nd transclass without becoming 1st trans (1: yes / 0: no) (ex: alchemist -> creator) -
Isequipped Sample: 4210,Wander_Man_Card,Wanderer Card,6,20,,10,,,,,,,,4,,,,,{ if(!isequipped(4172,4257,4230,4272)) bonus3 bAutoSpell,"RG_INTIMIDATE",1,20; if(BaseClass==Job_Thief) bonus bFlee,20; },{},{}
-
Check this post
-
@nanakiwurtz Don't forget this part too Lol
-
Replace set .@i, select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000"); by set .@i, select(" ~ ^0055FFRebirth^000000", "", " ~ ^777777Cancel^000000");
-
O_o I forgot this solution...
-
[Error]: chrif_authok: Data size mismatch! 7176 != 138248
Capuche replied to kodak's question in General Support
Take a look to this topic. -
I don't think it's possible by script... I think you need sources modifications.