Leaderboard
Popular Content
Showing content with the highest reputation on 04/11/20 in all areas
-
It's not already time to implement a foreach? for( .@i = 0; .@i < getarraysize(.@array); .@i++) { dispbotom "Val is " + .@array[.@i]; } We could use: foreach( .@val : .@array ) { dispbottom "Val is " + .@val; } I could try to implement this but the script parser it's a bit confuse to me and I think someone could implement this better than me2 points
-
Hello dear members, it has been a long time since my last login here, and I came back with my recent customization, it's damm good, that once finished in my test server confirmed that was 100% functional, with and with no issues , I decided to share.... This Skill provides the same function than the equipment swap tab, but instead of opening the inventory and aim with the cursor to the "change" button!, you can do the same even faster, with a custom skill icon and just one tip of your finger. ***------- Trunk Side -------*** 1- Go to your skill_db.txt and make sure to find the skill #5067. If you are using pre-renewal config, you may export the bellow skill line to the pre-re/skill_db.txt file instead. 5067,0,6,4,0,0x1,0,1,1,no,0,0x1,0,none,0,0x0, ALL_EQSWITCH,Equip Switch 2- Now that the skill is implemented, you need to add the timers in the db file skill_cast_db.txt, this can´t be ignored, you may add the skill line. I gave the skill 10 seconds cooldown, but you can do it at your like. //-- ALL_EQSWITCH 5067,0,0,0,0,0,10000 3- Most important part, can´t be ignored, add the skill line for every job in the skill_tree.txt file. just like this: //Novice 0,5067,1,0,0,0,0,0,0,0,0,0,0 //-- ALL_EQSWITCH#Equip Switch# //Swordman 1,5067,1,0,0,0,0,0,0,0,0,0,0 //-- ALL_EQSWITCH#Equip Switch# //Magician 2,5067,1,0,0,0,0,0,0,0,0,0,0 //-- ALL_EQSWITCH#Equip Switch# //Archer 3,5067,1,0,0,0,0,0,0,0,0,0,0 //-- ALL_EQSWITCH#Equip Switch# And keep going until you add the skill to every job available in your server. (watch out the job# id, for the copy paste, don´t forget to add the correct number). ***------- Client Side --------*** - You need the icon sprites for the skill and the item bmp, you can make a prettier one, in my case I recycled Taekwon skill icon Counter Kick Stance and recolored. You will find it attached, well, This .spr and .act files must be added inside the drop sprite folder the route is: data/sprite/¾ÆÀÌÅÛ ALL_EQSWITCH.act ALL_EQSWITCH.spr - Now for dragging the skill icon from the skill tab, you need the item bmp, also attached, and It has to be added inside the item folder. The route is: \data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\item ALL_EQSWITCH.bmp ---EDITING THE LUAS--- - The very first thing we are going to edit is the skilltreeview.lub this file is found inside the skillinfoz folder at this route: \data\luafiles514\lua files\skilltreeview.lub Please only add the skill for the novice tree, watch out the key and please note that there is not comma at the last line added skill, if you wonder about the #41 is the bottom right corner penultimate slot in the alt+s skill tab. SKILL_TREEVIEW_FOR_JOB = { [JOBID.JT_NOVICE] = { [0] = SKID.NV_BASIC, [7] = SKID.NV_FIRSTAID, [14] = SKID.NV_TRICKDEAD, [41] = SKID.ALL_EQSWITCH }, - Second Step editing the luas belongs to the file skillid.lub this file is found inside the skillinfoz folder at this route: \data\luafiles514\lua files\skillinfoz And you have to add the skill ALL_EQSWITCH = 5067 Example: WE_CALLALLFAMILY = 5063, WE_ONEFOREVER = 5064, WE_CHEERUP = 5065, ALL_EQSWITCH = 5067, - Third step for the luas, the skilldescript.lub This file is located in \data\luafiles514\lua files\skilldescript.lub In this file you have to create a description for the new skill implemented in this case the ALL_EQSWITCH This is an example of mine, watch out the keys and the commas, you can make a good description with your own taste.: [SKID.ALL_PRONTERA_RECALL] = { "Return to Prontera", "Max Level: 2", "Skill Form: ^339900Supportive^000000", "Description: ^777777Teleport to Prontera, 15 minutes after use delay.^000000" }, [SKID.ALL_EQSWITCH] = { "Switch Equipment", "Max Level: 1", "^CC3399Requirement: Finish Quest^000000", "Skill Form: ^339900Active^000000", "Target: ^777777Self^000000", "Description: ^777777Swap you actual equipment with the one placed in the alternative equip tab.^000000" }, [SKID.ALL_THANATOS_RECALL] = { "Return to Thanatos", "Max Level: 1", "Skill Form: ^339900Supportive^000000", "Description : ^777777Teleport to Thanatos, 5 minutes after use delay.^000000" }, - Finally the Last Step and most most most important, the skillinfolist.lub This file is located in \data\luafiles514\lua files\skillinfolist.lub We have to add the new skill to this file, EXAMPLE: [SKID.ALL_GLASTHEIM_RECALL] = { "ALL_GLASTHEIM_RECALL", SkillName = "Return to Glastheim", MaxLv = 1, SpAmount = { 0 }, bSeperateLv = false, AttackRange = { 1 } }, [SKID.ALL_EQSWITCH] = { "ALL_EQSWITCH", SkillName = "Equip Switch", MaxLv = 1, Type = "Quest", SpAmount = { 0 }, bSeperateLv = false, AttackRange = { 1 } } } - In this case I added the skill at the last in the bottom, so you watch out the keys and the commas placed properly to avoid client side error, VERY VERY VERY IMPORTANT, you see the Type = "Quest" bold in green? Please, do not ignore that line, ... That line is very very important, and the client use that line, to avoid investing job skill points in that quest skill. Now, for getting the skill active, you can edit the npc global funcion and add it to the platinium skills: in your trunk/npc/other/Global_Functions.txt Example: ////////////////////////////////////////////////////////////////////////////////// // Gives attached player their Platinum Skill based on their class. ////////////////////////////////////////////////////////////////////////////////// function script F_GetPlatinumSkills { skill "NV_FIRSTAID",1,SKILL_PERM; skill "ALL_EQSWITCH",1,SKILL_PERM; or make your own script to get the skill permantent. Now The Testing In Game: Party Ragnarok 2020-03-14 19-25-47.mp4 OPTION 2: For Experienced Users, if you want to save hours on this.... just go to the shortcut settings and add a shortcut to replace equip.2 points
-
2 points
-
this file affect drop rate too. db/re/level_penalty.txt#L43-L60 item_drop_common_min: 1 item_drop_common_max: 1000 this define the minimum and maximum drop rate .... from your settings, its 0.01% (min) ~ 10.00% (max) hence your Poring are probably dropping Jellopy at 10% max.1 point
-
use the doevent script command. add a label to your NPC, then use doevent(...) script command to trigger it. *doevent "<NPC object name>::<event label>"; This command will start a new execution thread in a specified NPC object at the specified label. The execution of the script running this command will not stop, and the event called by the 'doevent' command will not run until the invoking script has terminated. No parameters may be passed with a doevent call. The script of the NPC object invoked in this manner will run as if it's been invoked by the RID that was active in the script that issued a 'doevent'. As such, the command will not work if an RID is not attached. place,100,100,1%TAB%script%TAB%NPC%TAB%53,{ mes "This is what you will see when you click me"; close; OnLabel: mes "This is what you will see if the doevent is activated"; close; } .... doevent "NPC::OnLabel";1 point
-
That's a hard one to answer. Technically it's possible to use a client that's more than 10 years old, but in all honesty, I wouldn't. An awful lot of code has changed since those old clients were supported, so if something breaks you wouldn't find much in the way of support from anyone, unless one of us oldies slide into your topic because we used to have a server back then and remember how they're set-up1 point
-
- script sample -1,{ OnInit: setarray .@map$, "prtg_cas01", "prtg_cas02", "prtg_cas03", "prtg_cas04", "prtg_cas05", "payg_cas01", "payg_cas02", "payg_cas03", "payg_cas04", "payg_cas05", "gefg_cas01", "gefg_cas02", "gefg_cas03", "gefg_cas04", "gefg_cas05", "aldeg_cas01", "aldeg_cas02", "aldeg_cas03", "aldeg_cas04", "aldeg_cas05", .@size = getarraysize(.@map$); while (.@i < .@size) { setmapflag .@map$[.@i], mf_loadevent; .@i++; } end; OnPCLoadMapEvent: if (getgmlevel() >= 99) end; if (getmapflag(strcharinfo(3), mf_gvg_castle) && (agitcheck() || agitcheck2() || agitcheck3()) ) { warp "SavePoint",0,0; } end; }1 point
-
- script qwerty -1,{ OnPCLoadMapEvent: if (getgmlevel() > 98) end; if (agitcheck() || agitcheck2() || agitcheck3()) { .@s$ = implode(.m$, ","); if (compare(.@s$, strcharinfo(3))) warp "SavePoint",0,0; } end; OnInit: setarray .m$[0], "prtg_cas01", "prtg_cas02", "prtg_cas03"; .s = getarraysize(.m$); .@i = 0; while (.@i < .s) { setmapflag .m$[.@i], mf_loadevent; .@i++; } end; }1 point
-
@boldo Hello! Your question isn't related to the theme of the topic. So, the owner of license can talk with me in Skype.1 point
-
1 point
-
Hello everybody, I hope you're all doing well. Here in Brazil we're going fine, but i'm super afraid with the possible financial crisis that is comming here. The government has taken a series of actions in the labor laws to prevent unemployment in this time of crisis, reducing workload and wages by up to 70% and other things that, at other times, would have been unimaginable. I just hope that this crisis will pass soon, for the good of all. Stay safe!1 point
-
Well there is no setting like Akkarin said, but this change in map.cpp should allow you to walk on cell where the npcs are hidden/disabled/invisible (untested) @@ -553,6 +553,11 @@ int map_count_oncell(int16 m, int16 x, int16 y, int type, int flag) if (type&~BL_MOB) for( bl = mapdata->block[bx+by*mapdata->bxs] ; bl != NULL ; bl = bl->next ) if(bl->x == x && bl->y == y && bl->type&type) { + if (bl->type == BL_NPC) { + struct npc_data *nd = (struct npc_data *)bl; + if (nd && (nd->sc.option&(OPTION_INVISIBLE|OPTION_HIDE) || nd->class_ == JT_FAKENPC || nd->class_ == JT_HIDDEN_WARP_NPC)) + continue; + } if(flag&1) { struct unit_data *ud = unit_bl2ud(bl); if(!ud || ud->walktimer == INVALID_TIMER)1 point
-
https://github.com/rathena/rathena/blob/master/conf/channels.conf#L71 Change autojoin to true and rename #global to #main. Job done1 point
-
Simple answer: no. You'd need to completely disable the NPC before you can walk on that cell again. Objects in a cell aren't stackable. However, you can see the /src/config/core.hpp file for a workaround. Many moons ago there was a mod installed but left disabled by default to allow cell stacking. https://github.com/rathena/rathena/blob/master/src/config/core.hpp#L291 point
-
Version 1.0.0
116 downloads
sqlbackup A super simple and lightweight SQL Database Backup System. This auto backsup your database every 24 Hours or more. Can't go less. Requirements - NodeJS v12+ - Understanding Installation - Download the Code. (can use git) - Go to the main directory of the code using your terminal/cmd. (Where index.js is) // run $ node . // or $ node index How to run this 24/7? This will close when you close your terminal. I good way to keep this up without closing is using `pm2`. To install `pm2`, simply do the following. $ npm install pm2 -g // or $ yarn add pm2 -g How would i run it? $ pm2 start index.js (Make sure you're in the main directory of the code. Where index.js is) That would make it run 24/7 even when closing the terminal/cmd. Config Defaults: { "mysql": { "username": "username", "password": "password", "host": "localhost", "port": 3306, "databases": [ "rathena4444_rag", "rathena4444_log" ] }, "backupInterval": 86400 } config.mysql is where all your mysql data would be. *.username is what your mysql username is. *.password is the password for your mysql username. *.host is where the mysql server is hosted. 127.0.0.1 or localhost for the same host or vps. *.port is the port of the mysql host. *.databases[] an array of the name of the databases to backup. config.backupInterval is the amount of seconds to wait before creating a new backup. Default is 86400 (1 day). Take note that you can't go less than 86400. How does this work? I simply used child_process to create a new process and would run mysqldump to export Mysql databases. After exporting, the code closes the process of the ran command and then would wait for the interval to be finished, then repeat the process.Free1 point -
Evening all, I hope you're all well! I've decided to post this instead of send out a mass email, because I know most of you have opted not to receive them. Service Continuation For the most part, rAthena is, and will continue to operate as normal during these trying times. We understand that the need for isolation will undoubtedly cause more traffic to our forums, which we have been prepared for since February and additional measure have been put in place in case traffic sees a random surge. Our aim is to ensure that all the information is available to you when you need it. Risk of Fraud We are also aware that during a crisis, individuals will come out of the woodwork with a view to causing harm in the form of defrauding and scamming our users. Please be diligent before handing over any money to someone you don't know. You can check a list of our approved 3rd Party Services here that have been personally vetted before approval. Staff All of rAthena's staff are volunteers, giving up their free time working towards the betterment of the project. We're also all safe and well and hope you and your families are, too. At a time when parts of the world are stuck indoors, we're using this time to continue overhauling systems. The developers are working hard on their respective projects, be they database conversions to YAML or the refactoring of older mechanics, you can be sure they're busy! The moderators have been tasked with ensuring as many of the support topics as possible have the "Best Answer" post selected in an effort to aid users. Community Please use the search feature before posting new topics. I can assure you that 99% of questions have already been answered, usually twice within the last 3 months. The function of what a community is and what it's capable of is being tested and pushed to it's limits all around the world. Look after each other and be helpful. Home Life Please be sensible and use your common sense. Wash and/or sanitise your hands regularly. Especially your keyboard and mouse! Be kind to each other. Stay safe.1 point
-
La mejor guía para configurar un servidor desde 0 a mi parecer es esta: https://rathena.org/board/topic/111830-tutorial-video-edition-how-to-setup-rathena-and-run-ragnarok-updated-2018-7-28/ La guía se explica muy bien en vídeos, es solo seguir los pasos. Sobre clientes actualizados podrías utilizar este 2018-06-21aRagexeRE : https://mega.nz/#!Zcdk2C4L!z9SkS36VGhJWAaxD9cRf1sVhgC9I6gMm0k6Cld-lYOQ El proyecto de traducción te recomiendo en el Chriss: https://github.com/llchrisll/ROenglishRE Actualmente es más actualizado que el de Zack, como podrás ver ese proyecto cuenta con un Wiki muy pequeño, revíselo todo.1 point
-
Hello! Please, instead of keep spamming "up" could you detail more about the issue? Are you using rAthena latest version? Did you make any custom source modification that could have impact on it? Did you consider trying with a non GM account? What client version are you using? Are you using Pre-renewal or Renewal? You need to provide every information about your problem so we can help you.1 point
-
prontera,155,181,5 script Sample 4_F_KAFRA1,{ if (!quest_random) { quest_random = rand(1, 3); mes "You have been assigned with a new quest."; next; } switch(quest_random) { case 1: setarray .@reward, 4001, 1; setarray .@item, 512; setarray .@amount, 100; break; case 2: setarray .@reward, 4002, 1; setarray .@item, 501, 502, 503; setarray .@amount, 3, 1, 2; break; case 3: setarray .@reward, 4003, 1; setarray .@item, 512, 503; setarray .@amount, 300, 100; break; default: mes "invalid quest."; close; } mes "Quest Requirement(s):"; .@size = getarraysize(.@item); for (.@i = 0; .@i < .@size; .@i++) { mes " > "+.@amount[.@i]+"x "+getitemname(.@item[.@i]); if (countitem(.@item[.@i]) < .@amount[.@i]) .@fail++; } if (!.@fail) { next; if (select("Submit Quest", "Cancel") == 1) { for (.@i = 0; .@i < .@size; .@i++) delitem .@item[.@i], .@amount[.@i]; getitem .@reward[0], .@reward[1]; quest_random = 0; } } close; } try1 point