Jump to content

Capuche

Developer
  • Posts

    2407
  • Joined

  • Last visited

  • Days Won

    52

Everything posted by Capuche

  1. In the red square 100 = 100% refine = safe refine Just before the red square, 7 = Safe level limit for example in the first line.
  2. French translation : map_msg.conf Any comments from french community are welcomed.
  3. 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;
  4. trunk/npc/custom/etc/mvp_arena.txt This ?
  5. } } end; // <-- Add This L_LadderMove: if (getarg(0) == 0) set @length,@beginmoving;
  6. Try the release of goddameit http://www.eathena.ws/board/index.php?showtopic=241741
  7. Your request look like Satan Catcher Event by Karul
  8. 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; }
  9. 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;
  10. Hmm another point. Do you want to skip 1st trans class too ? i.e. High swordman, High thief.. etc..
  11. What is your emulator ? This job changer doesn't work with eA.
  12. If you don't own any castle, the npc does nothing.
  13. Edit previous post. You should explain what is not working.
  14. 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; },{},{}
  15. 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;
  16. 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)
  17. 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; },{},{}
  18. @nanakiwurtz Don't forget this part too Lol
  19. Replace set .@i, select(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000"); by set .@i, select(" ~ ^0055FFRebirth^000000", "", " ~ ^777777Cancel^000000");
  20. O_o I forgot this solution...
  21. I don't think it's possible by script... I think you need sources modifications.
×
×
  • Create New...