Jump to content

Pancake

Members
  • Posts

    49
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Pancake

  1. it would actually be more accurate to call it @ping. So it does not work like this: Client uses Command--(lag)-->Server Reponds--(lag)-->Divide by 2? Both seems legit, now we have to analyze the packet with which this is possible. The client would have to do the math, and we would have to modify decompiled client source(which there are many different versions of), the method I mentioned above would mean that the emulator calculates the ping, and sends a notice to the client, like a broadcast in the chat window. (Which would give the same accuracy) Let me rephrase my previous post. Server receives command, and returns with the special packet --(lag)-->Client sees packet, and returns a packet--(lag)-->Server divides the time spent from sending packet, until receiving packet, by 2, giving an accurate representation of ping.
  2. That was my hope. It seems like a small, but very useful addition, but I lack the skills necessary to do a legitimate @latency command. But as Pekkle said, it would be as easy as. @Latency Server Sends Packet--(lag)-->Client Responds--(lag)-->Divide by 2.
  3. I, and Pekkle were speaking about this in #rathena-dev. And we need your help. Here is the chat log if you wish to view it: Here is the important stuff: <&Pekkle> https://rathena.svn.sourceforge.net/svnroot/rathena/trunk/src/char/char.c line 3778 could that be something? <&Pekkle> client keep-alive packet (every 12 seconds) Does anyone have any suggestions, or help they can provide?
  4. Job Services NPC [ 3-in-1] At first I set out just to make a Mount Rental NPC that would give the proper mounts to all 3rd Class NPCs. I eventually merged it with a modified Job Changer, and Reset NPC. Features: Gives Wolf Flute upon becoming a Ranger. Gives the correct mount to all 3rd Job Classes(And ONLY 3rd Jobs) Built in Stat/Skill Reset Tested fully on the current revision. JobServices.txt Please feel free to modify it in any way you see fit, and redistribute it.
  5. prontera,152,188,3 script PVP 997,{ warp "pvp-n_1-5",0,0; } pvp-n_1-5 mapflag nowarp pvp-n_1-5 mapflag noteleport pvp-n_1-5 mapflag noreturn pvp-n_1-5 mapflag pvp OnInit: waitingroom "Users ["+getmapusers("pvp-n_1-5",0,0")+"]",0; end; Thats my little boring script [Error]: npc_parsesrcfile: Unknown syntax in file 'npc/custom/pvp.txt', line '5'. Stopping... * w1=pvp-n_1-5 mapflag nowarp * w2= * w3= * w4= This is the error I get. [Error]: buildin_warp: moving player 'Korea' to "pvp-n_1-5",0,0 failed. [Debug]: Source (NPC): PVP at prontera (152,188) [Debug]: mapindex_name2id: Map "pvp-n_1-5" not found i Thats another error I get whenever someone tries to use the NPC.
  6. The new SVN update which uses a new GM system, is going to literally break hundreds of websites that use FluxCP intergration. FluxCP doesn't use a variable in a configuration file that allows you to change the column name used. Theres no easy way to change this, but I am going through every file of FluxCP, and I am compiling a list of all the files that require a change, please see this thread after I have finished for a list of all files that will need modification. 1st Edit: It seems that group_id isn't even in the same spot as level was, so these files need extreme modification. It seems there is already a patch available. Nevermind.
  7. I will, but for now I am looking for all the files that contain skill related information. Im pretty sure I can find out by reading the "How to add custom skills" wiki, because that should have a list of all the files required for "adding skills" which is technically what I will be doing.
  8. Has anyone succesfully merged 3ceam skills into their rAthena server with Re_mode set to 0? If so, what are all of the files I need to take into account? skills.c skills.h skill_db.txt etc While I am requesting someone write me a simple guide, I really only need to know what in total are all of the server side files that need alteration in order for me to do this succesfully. I know C, and the scripting language to an extent, so I will be alright, if you really don't want to help out. After I do this succesfully, (and in the case that the skills don't calculate correctly due to the difference in mechanics, I will edit the source until they become accurate with the help of my Beta Team), I will write out a full guide on how to do this and/or release the modified files as an optional addition for anyone who wishes to run in pre-renewal mode, and would like 3rd skills.
  9. ////////////////////////////////////////////////////////////////////////////////// // Jobchanger eA-Jobsystem + 3rd Classes // ///////////////////////////////////////////////////////////////////////////////// //1.0 - Creators Job Master eAthena [Ori:LunatikBunnie] [Cur:Lance]) //1.1 - Added 3rd Classes [Viktus] //1.2 - Added 2nd Platinum Skills [Viktus] // // Rebirth-Class Only can Become 3rd-class // Edited by Moned /////////////////////////////////////////////////////////////////////////////// prontera.gat,159,184,4 script Job Services 429,{ mes "[Job Services Npc]"; mes "Please select the service you wish to use"; next; switch(select("Rental Services:Job Changing:Reset Services")) { case 1: goto L_Rent; case 2: goto L_Main; case 3: goto L_Reset; } L_Main: mes "^ff0000[Job Changing]^000000"; if(Class >= 4054 && Class <= 4085) goto L_max; if(SkillPoint != 0) goto L_stats; if(Upper == 1 && Class >= Job_Lord_Knight && Class <= Job_Paladin2) goto L_Third; if(JobLevel < 10) goto L_LvError; switch(Class){ case Job_Novice_High: case Job_Baby: case Job_Novice: skill 142,1,0; skill 143,1,0; mes "Welcome, please select the job you wish to change into"; if(lastJob != 0 && Class == Job_Novice_High){ switch(lastJob){ case Job_Knight: case Job_Crusader: set @target_job, Job_Swordman_High; break; case Job_Monk: case Job_Priest: set @target_job, Job_Acolyte_High; break; case Job_Alchemist: case Job_Blacksmith: set @target_job, Job_Merchant_High; break; case Job_Rogue: case Job_Assassin: set @target_job, Job_Thief_High; break; case Job_Wizard: case Job_Sage: set @target_job, Job_Mage_High; break; case Job_Hunter: case Job_Bard: case Job_Dancer: set @target_job, Job_Archer_High; break; } } else { switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief", "Super Novice","Taekwon","Gunslinger","Ninja")){ case 7: if(Class == Job_Novice_High) goto L_noReq; if(45 > BaseLevel) goto L_BvError; if(Upper == 2) set @target_job, Job_Super_Baby; else set @target_job, Job_SuperNovice; break; case 8: if(Class == Job_Novice_High) goto L_noReq; if(Upper == 2) goto L_noReq; set @target_job, Job_Taekwon; break; case 9: case 10: if(Class == Job_Novice_High || Upper == 2) goto L_noReq; set @target_job, @menu + 15; break; default: set @target_job, @menu; if(Class == Job_Novice_High) set @target_job, @target_job + 4001; break; } } mes "Are you sure you want to change to " + JobName(@target_job) + "?"; if(select("No","Yes") == 2){ callfunc "Job_Change", @target_job; if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) { callfunc "F_ClearJobVar"; } else { if( 1 ) goto L_GivePlat; } } close; break; default: if(JobLevel < 40 ) goto L_LvError; deletearray @job_opt, getarraysize(@job_opt); if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){ if(lastJob != 0){ set @target_job, lastJob + 4001; } else { switch(Class){ case Job_Swordman_High: case Job_Baby_Swordman: case Job_Swordman: set @job_opt[0], Job_Knight; set @job_opt[1], Job_Crusader; break; case Job_Mage_High: case Job_Baby_Mage: case Job_Mage: set @job_opt[0], Job_Wizard; set @job_opt[1], Job_Sage; break; case Job_Archer_High: case Job_Baby_Archer: case Job_Archer: set @job_opt[0], Job_Hunter; if(Sex == 0) set @job_opt[1], Job_Dancer; else set @job_opt[1], Job_Bard; break; case Job_Acolyte_High: case Job_Baby_Acolyte: case Job_Acolyte: set @job_opt[0], Job_Priest; set @job_opt[1], Job_Monk; break; case Job_Merchant_High: case Job_Baby_Merchant: case Job_Merchant: set @job_opt[0], Job_Blacksmith; set @job_opt[1], Job_Alchemist; break; case Job_Thief_High: case Job_Baby_Thief: case Job_Thief: set @job_opt[0], Job_Assassin; set @job_opt[1], Job_Rogue; break; default: set @job_opt[0], Job_Star_Gladiator; set @job_opt[1], Job_Soul_Linker; break; } mes "Welcome, please select the job you wish to change into"; set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1]; if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001; } mes "Are you sure you want to change to " + JobName(@target_job) + "?"; if(select("No","Yes")==2){ callfunc "Job_Change", @target_job; if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) { callfunc "F_ClearJobVar"; } else { if(1) goto L_GivePlat; } } close; } if(checkfalcon() || checkcart() || checkriding()) goto L_remove; if((Class >=Job_Knight) && (Class <=Job_Crusader2)){ mes "Do you want to Reborn?"; if(select("Yes","No")==1){ if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh; set lastJob, Class; if(Class == Job_Knight2){ set lastJob, Job_Knight; } else { if(Class == Job_Crusader2){ set lastJob, Job_Crusader; } } jobchange Job_Novice_High; resetlvl(1); skill 142,1,0; skill 143,1,0; close; } switch(Class){ mes "Please come again soon!"; close; } close; } mes "I'm sorry, there are no further classes for your job."; close; } L_Third: if(checkfalcon() || checkcart() || checkriding()) goto L_remove; mes "Are you sure you want to change to 3rd Class?"; if(select("Yes","No")==1){ if(BaseLevel < 99 || JobLevel < 70) goto L_cantCh; switch(Class){ case Job_Lord_Knight: jobchange 4060; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Paladin: jobchange 4073; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Champion: jobchange 4077; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_High_Priest: jobchange 4063; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Creator: jobchange 4078; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Whitesmith: jobchange 4064; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Stalker: jobchange 4079; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Assassin_Cross: jobchange 4065; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_High_Wizard: jobchange 4061; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Professor: jobchange 4074; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Sniper: jobchange 4062; getitem 6124, 1; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Clown: jobchange 4075; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Gypsy: jobchange 4076; specialeffect2 514; specialeffect2 381; setlook 7,0; close; } } close; L_GivePlat: if (BaseClass==Job_SuperNovice) goto L_sSuperN; if (BaseClass==Job_Swordman) goto L_sSword; if (BaseClass==Job_Mage) goto L_sMage; if (BaseClass==Job_Archer) goto L_sArcher; if (BaseClass==Job_Acolyte) goto L_sAcolyte; if (BaseClass==Job_Merchant) goto L_sMerchant; if (BaseClass==Job_Thief) goto L_sThief; if (BaseClass==Job_Knight) goto L_sKnigh; if (BaseClass==Job_Crusader) goto L_sCrusader; if (BaseClass==Job_Assassin) goto L_sAssassin; if (BaseClass==Job_Rogue) goto L_sRogue; if (BaseClass==Job_Wizard) goto L_sWizard; if (BaseClass==Job_Sage) goto L_sSage; if (BaseClass==Job_Hunter) goto L_sHunter; if (BaseClass==Job_Bard) goto L_sBard; if (BaseClass==Job_Dancer) goto L_sDancer; if (BaseClass==Job_BlackSmith) goto L_sBlackSmith; if (BaseClass==Job_Priest) goto L_sPriest; if (BaseClass==Job_Monk) goto L_sMonk; close; L_sSuperN: skill 142,1,0; close; L_sSword: skill 142,1,0; skill 144,1,0; skill 145,1,0; skill 146,1,0; close; L_sMage: skill 142,1,0; skill 157,1,0; close; L_sArcher: skill 142,1,0; skill 147,1,0; skill 148,1,0; close; L_sAcolyte: skill 142,1,0; skill 156,1,0; close; L_sMerchant: skill 142,1,0; skill 153,1,0; skill 154,1,0; skill 155,1,0; close; L_sThief: skill 142,1,0; skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; close; L_sKnight: skill 1001,1,0; close; L_sCrusader: skill 1002,1,0; close; L_sAssassin: skill 1003,1,0; skill 1004,1,0; close; L_sRogue: skill 1005,1,0; close; L_sWizard: skill 1006,1,0; close; L_sSage: skill 1007,1,0; close; L_sHunter: skill 1009,1,0; close; L_sBard: skill 1010,1,0; close; L_sDancer: skill 1011,1,0; close; L_sBlackSmith: skill 1012,1,0; skill 1013,1,0; close; L_sPriest: skill 1014,1,0; close; L_sMonk: skill 1015,1,0; skill 1016,1,0; close; L_cantCh: mes "I'm sorry, you do not meet the requirements to change"; mes "Please come again soon!"; close; L_LvError: mes "I'm sorry, you do not seem to have enough Job Levels"; mes "Please come again soon!"; close; L_BvError: mes "I'm sorry, you do not seem to have enough Base Levels"; mes "Please come again soon!"; close; L_noReq: mes "I'm sorry, you do not meet the requirements to change"; mes "Please come again soon!"; close; L_max: mes "I'm sorry, there are no further classes for your job."; close; L_stats: mes "Would you like to remove your extra skill points?"; if (select("Yes:No") == 2) { next; mes "Ok then, bye?"; close; } next; mes "Done"; set SkillPoint,0; next; goto L_Main; L_remove: mes "Please remove your cart,falcon or peco"; mes "Please come again soon!"; close; L_Reset: mes "[Reset Service]"; mes "Please select the service you want:"; next; switch(select("Reset Skills:Reset Stats:Reset Both:Quit")) { case 1: mes "[Reset Service]"; mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!"; ResetSkill; close; case 2: mes "[Reset Service]"; mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!"; ResetStatus; close; case 3: mes "[Reset Service]"; mes "Alright, here we go now.. Remember, changes won't take effect until you log back on!"; ResetSkill; ResetStatus; close; case 4: mes "Come again soon!"; close; } L_Rent: mes "[Rental Services]"; mes "Hi, here you can rent Carts, Falcons, Mounts, and Mechanic Mado's"; next; switch(select("Cart:Falcon:Mount:Mado")) { case 1: if( (BaseClass == Job_Merchant || BaseJob == Job_SuperNovice) && checkcart() == 0 && getskilllv("MC_PUSHCART") > 0 ) { setcart; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } case 2: if( (Class == Job_Ranger || Class == Job_Ranger_T) && checkriding() ) { mes "Sorry " + strcharinfo(0) + ", you can't rent a Falcon if you have a Warg rented."; close; } if( BaseJob != Job_Archer && BaseClass == Job_Archer && checkfalcon() == 0 && getskilllv("HT_FALCON") > 0 ) { setfalcon; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } case 3: mes "[Mount Rentals]"; if (Class == Job_Rune_Knight || Class == Job_Rune_Knight_H || Class == Job_Baby_Rune) { mes "Welcome. Would you like to rent a Dragon?"; next; switch(select("Yes:No")) { case 1: //if (!getskilllv("RK_DRAGONTRAINING")) { if (!getskilllv("KN_RIDING")) { mes "[Mount Rentals]"; mes "Please learn how to ride a Dragon first."; close; } if (checkriding()) { mes "[Mount Rentals]"; mes "You already have a Dragon."; close; } setdragon; close; case 2: mes "[Mount Rentals]"; mes "I see. Then have a great day."; close; } } else if (Class == Job_Royal_Guard || Class == Job_Royal_Guard_H || Class == Job_Baby_Guard) { mes "Welcome. Would you like to rent a Gryphon?"; next; switch(select("Yes:No")) { case 1: if(!getskilllv("KN_RIDING")) { mes "[Mount Rentals]"; mes "Please learn how to ride a Gryphon first."; close; } else if (checkriding()) { mes "[Mount Rentals]"; mes "You already have a Gryphon."; close; } setriding; close; case 2: mes "[Mount Rentals]"; mes "I see. Then have a great day."; close; } } else { mes "Welcome. Would you like to rent a Mount?"; next; switch(select("Yes:No")) { case 1: if( ( checkriding() == 0 ) { setriding; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", please make sure you aren't already on a mount"; close; } case 2: mes "[Mount Rentals]"; mes "I see. Then have a great day."; close; } } } case 4: if( (Class == Job_Mechanic || Class == Job_Mechanic_T) && checkriding() == 0 ) { setriding; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job."; close; } } } OnInit: // Variable Setup set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40) set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes) set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45) end; } [/codeBOX] I think I am missing a bracket somewhere, but I for the life of me, can't find it. [code] [Error]: Loading NPC file: npc/custom/ClassMaster.txt script error on npc/custom/ClassMaster.txt line 552 parse_syntax: unexpected 'case' 547 : case 2: 548 : mes "[Mount Rentals]"; 549 : mes "I see. Then have a great day."; 550 : close; 551 : } * 552 : 'c'ase 4: 553 : if( (Class == Job_Mechanic || Class == Job_Mechanic_T) && checkriding() == 0 ) 554 : { 555 : setriding; 556 : close; 557 : } [/code]
  10. prontera.gat,159,184,4 script Job Services 429,{ mes "[Job Services Npc]"; mes "Please select the service you wish to use; next; switch(select("Rental Services:Job Changing")) { case 1: goto L_Rent case 2: goto L_Main } L_Main: mes "^ff0000[Job Changing]^000000"; if(Class >= 4054 && Class <= 4085) goto L_max; if(SkillPoint != 0) goto L_stats; if(Upper == 1 && Class >= Job_Lord_Knight && Class <= Job_Paladin2) goto L_Third; if(JobLevel < 10) goto L_LvError; switch(Class){ case Job_Novice_High: case Job_Baby: case Job_Novice: skill 142,1,0; skill 143,1,0; mes "Welcome, please select the job you wish to change into"; if(lastJob != 0 && Class == Job_Novice_High){ switch(lastJob){ case Job_Knight: case Job_Crusader: set @target_job, Job_Swordman_High; break; case Job_Monk: case Job_Priest: set @target_job, Job_Acolyte_High; break; case Job_Alchemist: case Job_Blacksmith: set @target_job, Job_Merchant_High; break; case Job_Rogue: case Job_Assassin: set @target_job, Job_Thief_High; break; case Job_Wizard: case Job_Sage: set @target_job, Job_Mage_High; break; case Job_Hunter: case Job_Bard: case Job_Dancer: set @target_job, Job_Archer_High; break; } } else { switch(select("Swordsman","Mage","Archer","Acolyte","Merchant","Thief", "Super Novice","Taekwon","Gunslinger","Ninja")){ case 7: if(Class == Job_Novice_High) goto L_noReq; if($@JC_SupNovM > BaseLevel) goto L_BvError; if(Upper == 2) set @target_job, Job_Super_Baby; else set @target_job, Job_SuperNovice; break; case 8: if(Class == Job_Novice_High) goto L_noReq; if(Upper == 2) goto L_noReq; set @target_job, Job_Taekwon; break; case 9: case 10: if(Class == Job_Novice_High || Upper == 2) goto L_noReq; set @target_job, @menu + 15; break; default: set @target_job, @menu; if(Class == Job_Novice_High) set @target_job, @target_job + 4001; break; } } mes "Are you sure you want to change to " + JobName(@target_job) + "?"; if(select("No","Yes") == 2){ callfunc "Job_Change", @target_job; if(@target_job == Job_Gunslinger || @target_job == Job_Ninja || @target_job == Job_Taekwon) { callfunc "F_ClearJobVar"; } else { if($@JC_Plat) goto L_GivePlat; } } close; break; default: if(JobLevel < $@JC_MinimumJB) goto L_LvError; deletearray @job_opt, getarraysize(@job_opt); if(Class < Job_Knight || Class == Job_Taekwon || (Class > Job_Baby && Class < Job_Baby_Knight) || (Class > Job_Novice_High && Class < Job_Lord_Knight)){ if(lastJob != 0){ set @target_job, lastJob + 4001; } else { switch(Class){ case Job_Swordman_High: case Job_Baby_Swordman: case Job_Swordman: set @job_opt[0], Job_Knight; set @job_opt[1], Job_Crusader; break; case Job_Mage_High: case Job_Baby_Mage: case Job_Mage: set @job_opt[0], Job_Wizard; set @job_opt[1], Job_Sage; break; case Job_Archer_High: case Job_Baby_Archer: case Job_Archer: set @job_opt[0], Job_Hunter; if(Sex == 0) set @job_opt[1], Job_Dancer; else set @job_opt[1], Job_Bard; break; case Job_Acolyte_High: case Job_Baby_Acolyte: case Job_Acolyte: set @job_opt[0], Job_Priest; set @job_opt[1], Job_Monk; break; case Job_Merchant_High: case Job_Baby_Merchant: case Job_Merchant: set @job_opt[0], Job_Blacksmith; set @job_opt[1], Job_Alchemist; break; case Job_Thief_High: case Job_Baby_Thief: case Job_Thief: set @job_opt[0], Job_Assassin; set @job_opt[1], Job_Rogue; break; default: set @job_opt[0], Job_Star_Gladiator; set @job_opt[1], Job_Soul_Linker; break; } mes "Welcome, please select the job you wish to change into"; set @target_job, @job_opt[select(JobName(@job_opt[0]), JobName(@job_opt[1]))-1]; if(Class > Job_Novice_High && Class < Job_Lord_Knight) set @target_job, @target_job + 4001; } mes "Are you sure you want to change to " + JobName(@target_job) + "?"; if(select("No","Yes")==2){ callfunc "Job_Change", @target_job; if(@target_job == Job_Star_Gladiator || @target_job == Job_Soul_Linker) { callfunc "F_ClearJobVar"; } else { if($@JC_Plat) goto L_GivePlat; } } close; } if(checkfalcon() || checkcart() || checkriding()) goto L_remove; if((Class >=Job_Knight) && (Class <=Job_Crusader2)){ mes "Do you want to Reborn?"; if(select("Yes","No")==1){ if(BaseLevel < 99 || JobLevel < 50) goto L_cantCh; set lastJob, Class; if(Class == Job_Knight2){ set lastJob, Job_Knight; } else { if(Class == Job_Crusader2){ set lastJob, Job_Crusader; } } jobchange Job_Novice_High; resetlvl(1); skill 142,1,0; skill 143,1,0; close; } switch(Class){ mes "Please come again soon!"; close; } close; } mes "I'm sorry, there are no further classes for your job."; close; } L_Third: if(checkfalcon() || checkcart() || checkriding()) goto L_remove; mes "Are you sure you want to change to 3rd Class?"; if(select("Yes","No")==1){ if(BaseLevel < 99 || JobLevel < 70) goto L_cantCh; switch(Class){ case Job_Lord_Knight: jobchange 4060; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Paladin: jobchange 4073; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Champion: jobchange 4077; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_High_Priest: jobchange 4063; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Creator: jobchange 4078; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Whitesmith: jobchange 4064; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Stalker: jobchange 4079; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Assassin_Cross: jobchange 4065; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_High_Wizard: jobchange 4061; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Professor: jobchange 4074; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Sniper: jobchange 4062; getitem 6124, 1; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Clown: jobchange 4075; specialeffect2 514; specialeffect2 381; setlook 7,0; close; case Job_Gypsy: jobchange 4076; specialeffect2 514; specialeffect2 381; setlook 7,0; close; } } close; L_GivePlat: if (BaseClass==Job_SuperNovice) goto L_sSuperN; if (BaseClass==Job_Swordman) goto L_sSword; if (BaseClass==Job_Mage) goto L_sMage; if (BaseClass==Job_Archer) goto L_sArcher; if (BaseClass==Job_Acolyte) goto L_sAcolyte; if (BaseClass==Job_Merchant) goto L_sMerchant; if (BaseClass==Job_Thief) goto L_sThief; if (BaseClass==Job_Knight) goto L_sKnigh; if (BaseClass==Job_Crusader) goto L_sCrusader; if (BaseClass==Job_Assassin) goto L_sAssassin; if (BaseClass==Job_Rogue) goto L_sRogue; if (BaseClass==Job_Wizard) goto L_sWizard; if (BaseClass==Job_Sage) goto L_sSage; if (BaseClass==Job_Hunter) goto L_sHunter; if (BaseClass==Job_Bard) goto L_sBard; if (BaseClass==Job_Dancer) goto L_sDancer; if (BaseClass==Job_BlackSmith) goto L_sBlackSmith; if (BaseClass==Job_Priest) goto L_sPriest; if (BaseClass==Job_Monk) goto L_sMonk; close; L_sSuperN: skill 142,1,0; close; L_sSword: skill 142,1,0; skill 144,1,0; skill 145,1,0; skill 146,1,0; close; L_sMage: skill 142,1,0; skill 157,1,0; close; L_sArcher: skill 142,1,0; skill 147,1,0; skill 148,1,0; close; L_sAcolyte: skill 142,1,0; skill 156,1,0; close; L_sMerchant: skill 142,1,0; skill 153,1,0; skill 154,1,0; skill 155,1,0; close; L_sThief: skill 142,1,0; skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; close; L_sKnight: skill 1001,1,0; close; L_sCrusader: skill 1002,1,0; close; L_sAssassin: skill 1003,1,0; skill 1004,1,0; close; L_sRogue: skill 1005,1,0; close; L_sWizard: skill 1006,1,0; close; L_sSage: skill 1007,1,0; close; L_sHunter: skill 1009,1,0; close; L_sBard: skill 1010,1,0; close; L_sDancer: skill 1011,1,0; close; L_sBlackSmith: skill 1012,1,0; skill 1013,1,0; close; L_sPriest: skill 1014,1,0; close; L_sMonk: skill 1015,1,0; skill 1016,1,0; close; L_cantCh: mes "I'm sorry, you do not meet the requirements to change"; mes "Please come again soon!"; close; L_LvError: mes "I'm sorry, you do not seem to have enough Job Levels"; mes "Please come again soon!"; close; L_BvError: mes "I'm sorry, you do not seem to have enough Base Levels"; mes "Please come again soon!"; close; L_noReq: mes "I'm sorry, you do not meet the requirements to change"; mes "Please come again soon!"; close; L_max: mes "I'm sorry, there are no further classes for your job."; close; L_stats: mes "Would you like to remove your extra skill points?"; if (select("Yes:No") == 2) { next; mes "Ok then, bye?"; close; } next; mes "Done"; set SkillPoint,0; next; goto L_Main; L_remove: mes "Please remove your cart,falcon or peco"; mes "Please come again soon!"; close; L_Rent: mes "[Rental Services]"; mes "Hi, here you can rent Carts, Falcons, Pecopecos, Dragons, Mados or Gryphons."; next; switch(select("Cart:Falcon:Peco/Dragon/Gryphon:Mado")) { case 1: if( (BaseClass == Job_Merchant || BaseJob == Job_SuperNovice) && checkcart() == 0 && getskilllv("MC_PUSHCART") > 0 ) { setcart; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } case 2: if( (Class == Job_Ranger || Class == Job_Ranger_T) && checkriding() ) { mes "Sorry " + strcharinfo(0) + ", you can't rent a Falcon if you have a Warg rented."; close; } if( BaseJob != Job_Archer && BaseClass == Job_Archer && checkfalcon() == 0 && getskilllv("HT_FALCON") > 0 ) { setfalcon; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } case 3: if( BaseJob != Job_Swordman && BaseClass == Job_Swordman && checkriding() == 0 && getskilllv("KN_RIDING") > 0 ) { set @flag, 0; if( Class == Job_Rune_Knight || Class == Job_Rune_Knight_T ) { mes "Please select the color of your dragon."; next; set @flag, select("Green:Black:White:Blue:Red"); } setriding @flag; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job and have the required skill."; close; } case 4: if( (Class == Job_Mechanic || Class == Job_Mechanic_T) && checkriding() == 0 ) { setriding; close; } else { mes "[Rental Services]"; mes "Sorry " + strcharinfo(0) + ", Please make sure you are the required job."; close; } } } OnInit: // Variable Setup set $@JC_MinimumJB, 40; //Minimum job level for changing between 2nd and advance Class (Default : 40) set $@JC_Plat, 1; //Give Platinum skills on Jobchange (Default : 1-yes) set $@JC_SupNovM, 45; //Base Level to change into Super Novice (Default : 45) end; } [/codeBOX] Getting this error. [code] [Error]: Loading NPC file: npc/custom/ClassMaster.txt script error on npc/custom/ClassMaster.txt line 14 Unexpected newline at string. 9 : /////////////////////////////////////////////////////////////////////////////// 10 : 11 : prontera.gat,159,184,4 script Job Services 429,{ 12 : mes "[Job Services Npc]"; 13 : mes "Please select the service you wish to use; * 14 : next; 15 : switch(select("Rental Services:Job Changing")) 16 : { 17 : case 1: 18 : goto L_Rent 19 : case 2: [/code] When "next;" is removed the error is on line 14 still, but line 14 is now "switch(select("Rental Services:Job Changing"))"
  11. I always forget to move the closing bracket (}) Stupid errors :c
  12. <?xml version="1.0" encoding="euc-kr" ?> <clientinfo> <desc>Ragnarok Client Information</desc> <servicetype>korea</servicetype> <servertype>sakray</servertype> <extendedslot></extendedslot> <readfolder></readfolder> <connection> <display>Server name</display> <desc>none</desc> <balloon>Rate:75k/75k/10k</balloon> <address>208.93.152.***</address> <port>6900</port> <version>0</version> <langtype>0</langtype> <registrationweb></registrationweb> <aid> <admin>2000000</admin> <admin>2000016</admin> </aid> <yellow> <admin>20000000</admin> <admin>20000016</admin> </yellow> </connection> </clientinfo> GM sprites arent showing up using 3-15 client :
  13. Its not stated anywhere in the wiki that you have to change the first line of each exp row to the max level of that area, had I not remembered this from my previous experience, I would never have figured it out. Need to alter the wiki Edit_Max_Levels Oh it is, its just stated very small.
  14. Already set aura_lv to 400 and max_lv to 99 incorrect? ;p
  15. I have followed these steps, recompiled, and added an exp.txt table that supports up to level 1000 in both pre-re and re folders in the db. My max level is currently 99, and I was trying to set it to 400. Why didnt this work? What does work?
  16. Ah i didnt allow for auras over 99/150 or whatever need to rediff Even after enabling the diff to allow over level 150 auras. Im still not being shown it in my client. After a character goes past 150, it goes back down to showing 99.
  17. Do all clients allow this by default? Or do I need to diff it a certain way?
  18. Yeah I checked the old HeliumRO site. It's completely dead. Thanks, I was wondering what LUA files were. So item descriptions are now stored completely server side?
  19. Hello everyone, and congrats on rAthena! A few things need clearing up, as I am about to open a new server, and it has been 3 years since I have gone into this. 1) I have downloaded CalciumKids Renewal Client. What I would like to know is how adding custom items works with it. There aren't any item tables, or anything of that nature so I am without a doubt terribly confused. 2) Should I be using a different client if I want to be able to add custom items? At least if I want to do it the old way. For now thats all I can remember. Thank you in advance for your help!
  20. Extracted perfectly for me, without error.
×
×
  • Create New...