Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/27/13 in all areas

  1. NPC variables consume RAM, that's all. It's better to use scope variables, when possible, since they're erased after use; but commonly-referenced variables should be NPC variables set OnInit (to avoid constant re-setting of variables, or multiple instances of scope variables existing).
    2 points
  2. In global_reg_value sql table #CASHPOINTS for @cash #KAFRAPOINTS for @points
    2 points
  3. You need to have a Thor patcher! Note that there are different version and features develop within thor if you don't have one I suggest to download this Thor Patcher [2008-08.05] because of this guide! Mirror Thor_Patcher[2.5.4.18].7z We wil begin in configuring your config.ini inside your Thor Patcher/Tools/config.ini 1. Open that file, and edit the following (I will list all necessary configuration needed for configuration) Find this line: base_url=http://domain.com/patch/ - This is your base URL where the patch is a folder under your web host and the patcher will access that folder and everything inside. In my case I will create new folder name thor folder to use in this guide. below is my config and path for my patcher base_url=http://www.axwebsolutions.com/thor/ 2. The news/notice notice_file=notice.html - you don't need to change this one, unless you want to use .php! Incase you did change your own news, you need to change that one too inside your configuration, In my case I will leave it as notice.html and upload it inside the thor folder under my webhost. As you can see when you combine the base_url and the notice.html it will look like this http://www.axwebsolutions.com/thor/notice.html Just like I said earlier thor will find the file notice.html inside the folder name thor under my webhost. 3. The core file core_file=main.ini - core_file is the main remote configuration that the patcher will access first inside your webhost or my thor folder. 4. Other important configs below [Local] //status_file - [Relative Address] //It used to store information such as last patch id etc, status_file=server.dat - the .dat file is the thor patcher logs everytime you create a new patch it will be listed inside that server.dat you can change this to your server name or any name you want, its useful so it won't mess with the other servers installer/files. //grf_file - [Relative Address] grf_file=Server.grf - This is your primary or main grf //client_file - [Relative Address] //It's GAME EXE not patcher's client_file=nro.exe - This file is your hexed.exe that the thor will trigger after the player click the start game button in your patcher. //client_parameter - [self Explained] client_parameter=-1sak1 - Self explain, or don't edit if you don't know what is this for...! the rest of the configuration is done! Now if you want to do a modification its all up to you. When your done editing... make sure to save the changes you made in your config.ini We may now start combining the config.ini and embed it inside the Thor Patcher. Open the /Thor Patcher/Tools/Config_Packer Click the Browse button, browse and open the Thor file located inside the Thor Patcher/Patcher/Thor then click Pack! Alright its done with combining the config.ini with Thor file < your patcher. Next is 5. The main.ini file Open the main.ini file found inside your Thor Patcher/web/main.ini Find this line file_url=http://domain.com/opatch/data/ - the file_url is for your patches that you have created same with hexed or patcher hexed that you would want to patch too. Change it too, In my case I have created a folder name thor with the path http://www.axwebsolutions.com/thor/ go inside your Thor Patcher/web/ folder you will see that I created the folder name patchs this is the folder where all patches you created will go inside under your webhost ofcourse. in my own configuration I will put file_url=http://www.axwebsolutions.com/thor/patchs/ when your done just save and exit. 6. We need to upload all files inside the Thor Patcher/Web folder, earlier I have created thor folder inside my webhost public_html, now I will upload all files inside Web folder into thor folder under my webhost. I suggest using CuteFTP for easy upload of files, simple as drag and drop. You can download this cuteFTP by searching on the web. When your done you may now test if your config is working simply by double click on the Thor found inside your Thor Patcher/Patcher/Thor.exe Also you can put all necessary files(yourro.grf, thor.exe, hexed.exe etc...) for your installer inside the folder installer! To avoid messing up with other files. Here's mine 7. Making a patch with grf Its easy to make a patch, First create a folder name patch - grf inside your Thor Patcher folder. Go inside the patch - grf and create another folder again, in my own way of making a patch I have created many folders just to separate all this patches, that's why I have now patch - grf folder means all updates that is going to be extracted inside my main grf should go in the folder name patch - grf but for me not to get confuse I have created another folder inside the patch - grf folder and that folder name is the date of the patch. For example today is December 3, so I created dec3 folder (don't get confuse you can create your own folder name and way of creating patch) Now, inside the dec3 folder I created another folder name data! We all know that when you extracted a data.grf, sdata.grf or anyname.grf it will extract a folder name data! As you can see the earlier explanation, this is the directory for my patch Thor Patcher/patch - grf/dec3/ then the data folder. Inside the data folder all the files of your client update that you have added/edit! For example I added a new custom items with headgears and etc item, you can check my data folder by download it HERE! Note: When making a patch you don't need to paste all of the files inside your data folder and patch it again, what you need is the files/folders that you have re-edited or files that you have added must all go inside the data folder. Extract my data.rar and see what's inside, notice that I have put only what I added and put inside what I have just re-edited. To make a patch for thor, open the ThorMaker found inside your Thor Patcher/Tools/ThorMaker #1 - This is the name of your patch just enter any name you want. In my case since, I use the date I will name the patch as c_updates_12032008 then click Save By the way, create a folder inside your Thor Patcher and name it upload - grf you can make your own folder name, for this example I use the folder name upload - grf because this folder is the location of all the patches I have made. #2 - make sure that you select RO - GRF #3 - there are two options on how the patcher will extract your patch, the first one is Directory and the 2nd one is Single! In this guide we will use the Directory option by default. Click the Select button, If you stil remember I have created the folder name patch - grf, now go inside that folder and select your patch folder name, in my case I use the folder name dec3, that is the folder I need to select, take note that I have put the data folder inside the dec3 folder. Take note that we use the Directory option, that's why I select dec3 folder, just click OK to select. #4 - When your done just click the Generate and it will repack a file name c_updates_12032008.thor! Note: Make sure that the folders/files inside the data folder that you will be patching is in Unicode (this is gibirish) not with boxes names! Once the file is ready, copy the name and paste it inside the plist.txt found inside your Thor Patcher/Web/plist.txt Here's mine 1 - is the number of the patch c_updates_12032008.thor - is the name of the patch On the next patch just add on the second line number 2 for the 2nd patch. for example --------------------------------------------------(inside plist.txt) 1 c_updates_12032008.thor 2 c_updates_12042008.thor ------------------------------------------ When your done, upload and replace the file plist.txt inside your webhost also upload the c_updates_12032008.thor inside the patchs folder in your webhost! When you start your patcher it should be patching by now. 8. Making a patch with files, patcher hexed or hexed.exe Check your Thor Patcher folder you will see the patch - file and upload - file folders that I have created, its obvious that you will paste all files inside that patch - file folder and the generated .thor will be put inside the upload - file folder. When making a patcher hexed or hexed.exe patchs its same what you did before the only difference is that you will not use the plist.txt but you will need the main.ini when patching patcher hexed or hexed.exe! Example below Lets say you have now have a ready patcher hexed, just paste it inside your patch - file folder. Note: Make sure the name of your Patcher hexed is same with the name of your patcher hexed before. For example you use Thor.exe while with your new patcher hexed that you will be patching must also name as Thor.exe too! #1 - same with the Guide #7, enter the name of the patch and click save, in my case I will use the name p_updates_12032008! also you can put the patch to any folder you want but in my case I will save my patch inside the upload - file folder, you can do the same, whatever you want. #2 - Make sure to select File #3 - click select button, find and select the folder patch - file because earlier I told you to paste your patcher hexed inside the patch - file folder! #4 - Click Generate to make the p_updates_12032008.thor file! Make sure to select Root option(see image above). When your done you need to edit the main.ini in this lines Example: ----------------------------------------------------------------------------------------- [Patch] //use CheckSum tool, hash for client & patcher // used to make sure exe is up to date // (leave empty to disable this feature) ClientSum= PatcherSum=CD83831A //This is compressed file for patcher & client update // To make these work, ClientSum and/or PatcherSum can't be empty // Note: these files should put same place as patch file (file_url in internal config) //Relative address, not FULL URL! ClientPath= PatcherPath=p_updates_12032008.thor ----------------------------------------------------------------------------------------- Oh I forgot, you need to use the CheckSum found inside your Thor Patcher/Tools/CheckSum, you will need this to know the value of the patcher hexed that you will be patching, let say that this is the version of your patcher hexed. Just drag drop the patcher hexed in the checksum to see the value and put that value as you see in above example! When your done, save and exit. Don't forget to upload that main.ini in base_url and the p_updates_12032008.thor inside the patchs folder in your web host. With hexed.exe you do the same. 9. The last part is creating your own installer, here in axweb we use NSIS/Install Creator but I suggest using the install creator, it is a software for creating installer and User Friendly just visit the www.clickteam.com and download their software name "Install Creator" All done. Thanks for reading ~ Credit to Axweb
    1 point
  4. Hello all! Now i present to you my release : Faction system. Faction system settings: conf/battle/faction.conf Faction data base: db/faction_db.txt Faction alliances db: db/faction_alliance.txt New atcommands New Script commands New mapflag: fvf ( mf_fvf ) New map cell: nofvf ( cell_nofvf, cell_chknofvf ) Main Features: Faction versus Faction wars allowed only on FvF maps ( Min.lvl -> fvf_min_lvl: 55 ) Custom aura effects ( max is 3 by default, but you can increase it ) Aura can displaying for unit types in faction.conf: NPCs, Monsters, Pets, etc...( not only for Player ) Monster and other can change own base status to status from faction_db.txt ( race, element... ) If faction have Undead race or status faction members in this function can heal themselves ( if it allowed in faction_db.txt ) NPC shops can sell items to different factions at different prices. Now saving faction leader and relics of each faction. Multi - alliance support. Voting system ( voting for faction leader ). Relics support. Logging Faction chat. Youtube Preview http://www.youtube.com/watch?v=S7q-ExosLa8 Price: FREE PATCH FOR RATHENA REV. 17310 Faction_System_Complete_1.4_rA17310.patch FACTION.SQL Old BETA version
    1 point
  5. Well I have made my own server now and rathena helped me hella out of troubles....so i think i should contribute of my little knowlegde i gained till now.. The Flux cp i m using is the Renewal Flux CP made by Calcium Kid Softwares Needed:- calciumkid-fluxcp-renewal FileZilla NotePad++ and, Knowledge of webhost filemanager, and phpmyadmin. yes, i m setting it on webhost ___________________________________________________________________________________________________________________ Guide Starts Here:- Note : Your Server Must Be Running in order to install the CP Firstly the file and folder knowledge :- 1: addons - This folder is for the custom plugins or new mods made by developers. ex. voteforpoints , CMS etc. 2: Config - The main folder for setting up and connecting Flux to your server 3: Module - Well its a folder for all links and fuctions basically its the main folder from where flux uses its functions. 4: Themes - The folder where you can change flux interface ====================================================================================================================== Now first go to PhpMyAdmin at xxx.xxx.xxx.xxx/phpmyadmin where xxx is ur ip .. Enter your Database and on the top right side you'll find a tab called "Privilleges" Open it, there you'll find a link called New User at the bottom Click it:- Then: 1: Type your desiered username for flux cp 2: host : Well this is important: use your Webhost ip [Recommended] where ur flux directory is placed or the domain if not provided by webhost.[If you have Cpanel provided by webhost, you can get ip in : Network tools > lookup.] 3: password : Self Explanatory 4: Generate Password [Recommended] : well use it rather than using ur own password it is more secure. NOTE: DON'T GIVE Administration privilleges to this user. [iMAGE By : BuLaLaKaW ] _____________________________________________________________________________________________________________________________ Now, go to your flux director => config fiolder => application.php =>edit it. 1: ServerAddress : simple url don't put www or http or comas or slash NOTHING 2: Base URL: its basically the name of ur flux fodler : suppose my flux folder name is "cp" so i would just pur 'cp' in base url 3: Installer Password:any password u like name of ur G.F/B.F or any thing but just rememeber it and i recommend don't put same password everywhere. 4: Site Title : Self Explanatory. 5: ThemeName: by default the theme name is "Default" so let it be. if i make a guide for installing flux theme i would give u details there NOTE: in the image i have removed the '..' from every where you will find them in the file DON'T Remove them -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Now, Close the application.php and open Server.php in same folder 1:IP address of your vps. 2:username the username u created before. 3 password of above username. 4: database name of your server. For 5 6 7 8 : if u have log database different make another user via same method mentioned above or if you have same database use the same info used for 1 2 3 4 points next: In Same File: 1: LoginServer , 1 , 5 , 9 , 10 replace by your vps(host on which the server files are located or will run on) ip. 2: Ports don't change it untill u have diff port 3: UseMD5 : this is important : this is a security feature and i recommend it enabled. For that u have to enable MD5 in your login_conf in conf folder of ur server. or if u see some mixup of numbers and alphabets in ur LOGIN TaBLE at your database then just enable the above feature in the server.php. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Well, Close it your config is DONE!! Now, if u have done everything well, got to ur main url via browser you must see this:- The words which u typed in application.php [installer password] : use it here. ___________________________________________________________________________________________________________________________________ Next Step : you'll see this:- Just click on install and if you have alternate thing use it not a big thing \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ If you have done everything well NOTE: THIS IS NOT THE CALCIUM KID CP JUST a image resembling it. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Misc Settings:- This is the application.php file : the code above is the left side menu just adjust according to ur need , and yea take care of brackets and coma's. |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||__________________________________||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ************************************************************************************************************************************************************ * * *Well Guide Finishes here hope you have got new CP installed for your server. * * * *Please Do comment and rate from 0 to 10 so that i can improve it. PLEASE PUT yOur Reviews and * *I would really them * ************************************************************************************************************************************************************
    1 point
  6. The change made Dragon Breath (including the fire one) now work much like a normal skill. No longer ignores DEF, no longer ignores racel reductions cards, things like archer skeletion affects the damage (sign cards boost the damage). Generally most of what didnt affect it now affects it. Another thing I noticed from how a official server handles the damage is since the first version it always handled damage as weapon type damage, except your ATK doesen't affect the game. Its like how the Mechanic's Self Destruction skill worked. Knowing this, the skill is completely coded incorrectly here. Its currently setup as a Misc type attack which is my fault since I didnt know the true attack type at the time. So wait for a bit and we should get a properly working and updated version in soon.
    1 point
  7. You would need to call a script, not a function. Add an event label for your desired spawns to trigger the creation of a treasure chest. For the second part, you haven't given enough details.
    1 point
  8. Anyways, the only thing I know for sure is that there will not be an agreement on a common translation because there are lots of points of view on how things should be translated (the correct or the Spanglishized translation and which message is to be translated what way) and you won't be willing to make room for at least es-ES, es-MX, es-CL and es-AR translations so I'll try to make the most neutral translation I can. Sorry for being dense: I only wanted to put the first paragraph but I thought it was necessary to make all those aclarations . + 1 If u want, i can contribute with the Spanish translation .w.
    1 point
  9. А разве 192.168.0.100 внешний ? Вы то можете зайти, а вот другие не вряд ли смогут Узнайте свой внешний IP и пропишите его
    1 point
  10. I can lend you a hand on the Spanish translation of the map_msg.conf file if you want but I've been off here for quite a lot of time so there's a chance I don't understand some ones (haven't read the entire file yet but seems there won't be such a problem). What I don't know is if it'd be better to retain the original names of commands and words like 'job', 'skill', 'pet', 'intimacy', 'party', 'guild' etc., and even to make some Spanglish translations: on the Spanish Ragnarok Online communities slang there's a lot of Spanglishation because of not having had an official translation. It's totally obvious that Spanglihized translations are not correct at all but I think that's far more understandable to RO users. For example I'd bet more Spanish (and Latin) people would understand better the messages in the first line than in the second one: Anyways, the only thing I know for sure is that there will not be an agreement on a common translation because there are lots of points of view on how things should be translated (the correct or the Spanglishized translation and which message is to be translated what way) and you won't be willing to make room for at least es-ES, es-MX, es-CL and es-AR translations so I'll try to make the most neutral translation I can. Sorry for being dense: I only wanted to put the first paragraph but I thought it was necessary to make all those aclarations .
    1 point
  11. Try to understand the script... Search if(getequiprefinerycnt(@typr)>=10) { mes "It's not possible to refine this better than +10."; close; } To if(getequiprefinerycnt(@typr)>=20) { mes "It's not possible to refine this better than +20."; close; }
    1 point
  12. iteminfo.lua is used for clients dated from 2012-04-18 onwards. If you are using a client older than that you need to add your entries to the *nametable.txt files associated with custom items instead and not use iteminfo.lua.
    1 point
  13. edit here trunk/db/job_db2.txt
    1 point
  14. u will have to create .lub file, i faced the same issue creating a .lub file solved it i hope your client supports ids upto 1000 or greater, if not then you will need to take care of that in weediff patcher select this patch and enter how many IDs for Mobs you need to add them to lua files kindly read this page in detail http://rathena.org/wiki/Custom_Mobs
    1 point
  15. No this script will give a reward to all class that reached the max level 99/70 and put a top 20 ranking for each class that reached theses conditions (top 20 LK, top 20 HP...) But.. you only want to give a reward for the first of each class to achieve the maximum level 99/70 ?
    1 point
  16. Holy shit I just noticed they finally hit the limit on headgear sprite view ID's and expanded the ID range to something higher according to this entry in the accessoryid.lub.... ACCESSORY_YGGDRASIL_HAT = 997, ACCESSORY_C_Tomboy_Fairy = 998, ACCESSORY_Mimic_Egg_Shell = 999, ACCESSORY_Bunny_Egg_Shell = 1000, ACCESSORY_Picky_Egg_Shell = 1001, ACCESSORY_EVIL_MARCHER_HAT_J = 1002, ACCESSORY_Kannam_On_Head = 1003 Whats the new limit now by default?
    1 point
  17. Each trans class (+ ninja +gun + sg + sl + supernovice ) who reach the max level and the max job get a reward and they are in the ranking. If that's what you want then test this : SQL part ALTER table `char` add column lvl_type int(8) unsigned NOT NULL default '0' after `rename`, add index (lvl_type); prontera,164,166,5 script FirstLevel 410,{ mes .npc_name$; mes "Lista dos primeiros jogadores a conquistarem o level "+ .max_level +"."; mes " "; next; .@s = select( .menu$ ) -1; .@count = query_sql( "SELECT `name` FROM `char` WHERE `class` = "+ .index[.@s] +" AND `lvl_type` != 0 ORDER BY `lvl_type` ASC LIMIT 20", .@name$ ); if( !.@count ) { mes .npc_name$; mes "There are nothing to display."; close; } for( .@j = 0; .@j < .@count; .@j++ ) mes (.@j +1) +" - [^b00808"+ .@name$[.@j]+"^000000] Class: [^f80b0b"+ .job_index$[.@s] +"^000000]"; close; OnPCBaseLvUpEvent: OnPCJobLvUpEvent: if( BaseLevel == .max_level && JobLevel == .max_job_level ) { while( .@i < .size_class && Class != .class_[.@i] ) set .@i, .@i +1; if( .@i == .size_class ) end; query_sql "SELECT `lvl_type` FROM `char` WHERE `class` = "+ Class +" ORDER BY `lvl_type` DESC LIMIT 1", .@type; query_sql "UPDATE `char` SET `lvl_type` = ("+ .@type +" +1) WHERE `char_id` = '"+ getcharid(0) +"'"; announce "Parabéns ao jogador ["+ strcharinfo(0) +"] por se o primeiro ["+ jobname(Class) +"] a antingir o level "+ .max_level +".",bc_all; for( set .@i, 0; .@i < .size_item; set .@i, .@i +1 ) getitem .item_ID[.@i], .item_num[.@i]; } end; OnInit: set .npc_name$, "[^0b85f8First Level^000000]"; set .max_level, 99; // Level maximo do servidor. set .max_job_level, 70; // Level Job maximo do servidor. setarray .item_ID[0], 32002,7828,7773,7829; // ID setarray .item_num[0], 1, 150, 150, 150; // Quantidade setarray .class_, 23, 24, 25, 4008,4009,4010,4011,4012,4013,4015,4016,4017,4018,4019,4020,4021,4046,4047,4049; setarray .@al$, "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"; set .size_class, getarraysize( .class_ ); set .size_item, getarraysize( .item_ID ); freeloop(1); for( .@j = 0; .@j < 26; .@j++ ) { for( .@i = 0; .@i < .size_class; .@i++ ) if( strtolower( charat( jobname( .class_[.@i] ),0 ) ) == .@al$[.@j] ) { .index[ .@size_index ] = .class_[.@i]; .job_index$[ .@size_index ] = jobname( .class_[.@i] ); .@size_index++; } } freeloop(0); .menu$ = implode( .job_index$, ":" ); end; }
    1 point
  18. 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(" ~ ^0055FFRebirth^000000:"+((.ThirdClass)?" ~ ^FF0000Third Class^000000":"")+": ~ ^777777Cancel^000000"); if (.@i==3) close; mes "[Job Master]"; mes "Are you sure?"; next; Job_Menu(((.@i==1)?4001: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) { set .@eac, eaclass(.@i); if ( ( .@eac&EAJL_2_1 || .@eac&EAJL_2_2 ) && Zeny < .cost_2nd && !(.@eac&EAJL_UPPER) && !( .@eac&EAJL_THIRD ) ) { mes "[Job Master]"; mes "You need "+ .cost_2nd +" zeny to proceed."; close; } else if( ( .@eac&EAJL_2_1 || .@eac&EAJL_2_2 ) && !(.@eac&EAJL_UPPER) && !( .@eac&EAJL_THIRD )) { mes "[Job Master]"; mes "It will cost "+ .cost_2nd +" zeny to proceed."; next; if( select( " ~ Proceed", " ~ Leave" ) -1 ) close; set Zeny, Zeny - .cost_2nd; } else if ( .@eac&EAJL_UPPER && Zeny < .cost_rebirth && !( .@eac&EAJL_THIRD ) && !( .@eac&EAJL_2 ) && Class != 4001 ) { mes "[Job Master]"; mes "You need "+ .cost_rebirth +" zeny to proceed."; close; } else if( .@eac&EAJL_UPPER && !( .@eac&EAJL_THIRD ) && !( .@eac&EAJL_2 ) && Class != 4001 ) { mes "[Job Master]"; mes "It will cost "+ .cost_rebirth +" zeny to proceed."; next; if( select( " ~ Proceed", " ~ Leave" ) -1 ) close; set Zeny, Zeny - .cost_rebirth; } else if ( .@eac&EAJL_THIRD && Zeny < .cost_3rd ) { mes "[Job Master]"; mes "You need "+ .cost_3rd +" zeny to proceed."; close; } else if( .@eac&EAJL_THIRD ) { mes "[Job Master]"; mes "It will cost "+ .cost_3rd +" zeny to proceed."; next; if( select( " ~ Proceed", " ~ Leave" ) -1 ) close; set Zeny, Zeny - .cost_3rd; } 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 .cost_2nd, 150000; // cost to pass 2nd job set .cost_3rd, 1000000; // cost to pass 3rd job set .cost_rebirth, 1285000; // cost to pass rebirth end; }
    1 point
  19. THERE YOU GO I didnt know how to upload this file in a website showing the whole text in the browser but my idnum2itemdesctable is full updated, well ordered in consecutive numbers, from 1 to the last. no gaps between numbers, no mixing up like SlashGeeGee link. The defense description of the footgears, armors, shield, garments and all helms are based in pre renewal data DOWNLOAD MY IDNUM2ITEMDESCTABLE in this link http://www.mediafire.com/view/?9g5amqg92gmgahv has everything in complete order, no missing any description
    1 point
  20. I was trying find the correct place 'where to place' to check sd->lang, but got nothing. yeah, the mmo only check when there is logged player, so only need to translate map_msg. And some lines of char_msg, maybe can works like map_msg Current Custom Translation by overwriting? //Custom translations import: conf/import/msg_conf.txt //Auction 200: Auction Manager 201: Auction 202: Thanks, you won the auction!. 203: Payment for your auction!. 204: No buyers have been found for your auction. 205: Auction canceled. 206: Auction closed. 207: Auction winner. 208: Someone has placed a higher bid. 209: You have placed a higher bid. 210: You have won the auction. 211: Payment for your auction!.
    1 point
  21. @Cydh So far, no change. I don't know how to not add an argument to a function msg_txt. I'll see today how to do this. Need to remake this all, because login server use msg_txt only for logs, not for players, my mistake... We must to add language support for map server only ( + char server's mail messages? ) I can give the russian translation of file map_msg.txt
    1 point
  22. No pretendo importunar, pero creo que no es posible. No tengo experiencia alguna en KPatcher, pero hasta donde he podido mirar, en las configuraciones solo se ofrece espacio para una sola web de noticias (es decir, un solo cuadro de noticias), y no veo que el código de este patcher esté disponible para hacerle una modificación, por lo que veo complicado que logres añadirle otro espacio para noticias. Si tu intención es mantenerte en KPatcher y añadir otro cuadro de noticias, te recomendaría que intentases contactar con el desarrollador de esta herramienta o si no buscar otro patcher. Eso sí, como lo normal en los patchers es un único espacio para noticias, casi con total seguridad tendrás que modificarlo personalmente (tienes que buscar un patcher de código abierto). Un saludo.
    1 point
  23. @Lilith, I saw your post has been edited, what's change? @topic btw, if the lang is decided by player in-game (with command @lang <lang_id> maybe), then it will stored on `login` table, `lang` field. is the login_msg still can be translated? example "Rejected from server", the player doesn't login at all, can't read sd->lang. (CMIIW)
    1 point
  24. I will post here later the last mod I did about aura system, using a /db/aura_db.txt to create your own auras without editing source.
    1 point
×
×
  • Create New...