-
Posts
696 -
Joined
-
Last visited
-
Days Won
102
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Tokei
-
Hmmm, that script won't work though, it will be shown on the character instead of the NPC. It looks like I modified the script command to work with any input and I've added an extra parameter for the player_gid. My bad! So... it doesn't seem possible to achieve the original goal without modifying your function in the source...! The closest you'll get to is the latest option: harboro1,215,212,3 script #rockno04 111,5,5,{ end; OnTouch: showscript "West: The Inn, East: The Sheriff's Office", getnpcid(0); end; } It's visible by other players, but it's not a huge deal for what you're trying to do.
-
You're looking for showscript: harboro1,215,212,3 script #rockno04 111,5,5,{ end; OnTouch: showscript "West: The Inn, East: The Sheriff's Office", getnpcid(0, "#rockno04"), SELF, getcharid(3); end; } If you want others to see it as well, then you'd use: harboro1,215,212,3 script #rockno04 111,5,5,{ end; OnTouch: showscript "West: The Inn, East: The Sheriff's Office", getnpcid(0, "#rockno04"); end; }
-
Nightmareish Jitterbug (Episode 14.3)
Tokei replied to Nova's topic in Game, Event, Quest Script Releases
The script is from 2016, you'll have to use the newest rAthena standards and update the functions if you want to use this script. -
There's... probably a solution that will work, but I would recommend adding new script functions instead to make your life much easier: static int script_foreach_sub_va_bl(struct block_list* bl, va_list args) { const char* label = va_arg(args, const char*); return script_foreach_sub((TBL_PC*)bl, label); } // void foreachinmap "<npc_label>", "<map name>" BUILDIN_FUNC(foreachinmap) { const char* label = script_getstr(st,2); const char* mapname = script_getstr(st,3); TBL_NPC* nd = map_id2nd(st->oid); int16 m = (nd && strcmp(mapname, "this") == 0) ? nd->bl.m : map_mapname2mapid(mapname); if (m < 0) { return SCRIPT_CMD_SUCCESS; } map_foreachinmap(script_foreach_sub_va_bl, m, BL_PC, label); return SCRIPT_CMD_SUCCESS; } /// void foreachinarea "<npc_label>", "<map_name>", <x1>, <y1>, <x2>, <y2> BUILDIN_FUNC(foreachinarea) { const char* label = script_getstr(st,2); const char* mapname = script_getstr(st,3); int x1 = script_getnum(st,4); int y1 = script_getnum(st,5); int x2 = script_getnum(st,6); int y2 = script_getnum(st,7); TBL_NPC* nd = map_id2nd(st->oid); int16 m = (nd && strcmp(mapname, "this") == 0) ? nd->bl.m : map_mapname2mapid(mapname); if (m < 0) { return SCRIPT_CMD_SUCCESS; } map_foreachinarea(script_foreach_sub_va_bl, m, x1, y1, x2, y2, BL_PC, label); return SCRIPT_CMD_SUCCESS; } // defs BUILDIN_DEF(foreachinmap,"ss"), BUILDIN_DEF(foreachinarea,"ssiiii"), Then your script would be: prontera,156,188,0 script dummy_script 77,{ // ... OnScriptEnd: // not sure where you get the winner from! foreachinarea(strnpcinfo(0) + "::OnReward", "this", 36, 63, 63, 36); if (.consolation) { foreachinmap(strnpcinfo(0) + "::OnConsolation", "this"); } sleep 5000; announce "Thank you for playing..."; end; OnReward: for (.@i = 0; .@i < getarraysize(.prize); .@i++) { getitem .prize[.@i], .prize[.@i]; // ^ this won't work, you either need two arrays, or use .@i += 2 instead of .@i++ } announce .npcName$ + " : We have a winner. " + strcharinfo(0) + " wins the death by dice event round "+ .diceRound +".",0; // ^ This will be announced multiple times if you have more than one player remaining in that area, the winner announce // should be moved to "OnScriptEnd", but you didn't post your full script. end; OnConsolation: for (.@i = 0; .@i < getarraysize(.consolation); .@i++) { getitem .consolation[.@i], .consolation[.@i]; // ^ this won't work, you either need two arrays, or use .@i += 2 instead of .@i++ } end; } Using addrid is kind of a nightmare, and you lose the main script control which is very annoying.
-
You should be using a function for your item instead (and don't use attachrid), something along the lines of: getitem 57000,1; callfunc("summonfunction", 2); function script summonfunction { .@homunsummoned = getarg(0); // ... close/return; }
-
Heya, Here is the issue with any GRF encryption. No matter how strong it is, no matter how complex it gets, If someone is really willing to decrypt a GRF (and has enough knowledge), they'll be able to. The problem is that the protection is client-sided and your client needs to be able to decrypt the content to be able to access your files. So the deciphering code is in 'plain sight' on your computer. And no, __encryption.info doesn't do anything, it's simply a file to let GRF Editor know the GRF is encrypted and that it should scan the files when you open it. Deleting it wouldn't change anything and hiding it wouldn't achieve much either. And another no, GRF Editor encrypts the files you select entirely, not just the file header. Your client needs to be able to access the filename table to know where it is in your GRF. It's possible to encrypt the table, but then it makes it impossible to patch these GRFs (Thor Patcher needs to know your file positions in the GRF). Not that it would change much either way, it's simply more convenient to not encrypt the file table.
-
Someone pls help me Msgstringtable error language...
Tokei replied to zerovsnd's question in Client-side Support
Hello, GRF Editor forces the text file display back to what you have in the Settings > General > Display encoding (it does this on purpose to prevent you from doing mistakes). Your text file is encoded as UTF-8, which is not supported by your client and which will show up as what you see in GRF Editor. You have to change your text file encoding to Thai (Encoding > Character sets > Thai). In your case, you'll want to do it by "tricking" Notepad++ : Make a new text file, change the encoding to Thai. Copy your whole msgstringtable.txt file > paste it to your new file. Use your new file as msgstringtable.txt instead. As for what you'll see in GRF Editor, it should be the common 'gibberish' (unless you change it manually from Settings > General > Display encoding > Custom... > Thai is... 874). -
GRF Luafiles514 and Lua files datainfo || question
Tokei replied to AinsLord's question in General Support
The luafiles514 folder is meant for the newer compiled lub format (version 514 = 0x202). kRO upgraded to the new version quite a while ago, what's left in the data\lua files folder should no longer be used and it can be entirely removed. I see you have both the lua and lub file formats in there though. Depending on how you diffed your client, it will attempt to read the lua/lub before the lub/lua, so make sure you're editing the corret files. -
I'm a bit confused as to what you're trying to achieve. From my understanding, you wanted to retrieve the account ID from a deleted character ID, to which the following did the work: select `account_id` from `charlog` where `char_msg` like 'Deleted char (CID 1369541%' But now you're joining tables and I don't really see why you would want to do that. (Side note, joining the picklog table is a death wish, you should never do that.)
-
You can use: select * from `charlog` where `char_msg` like '%150368%' (The table could use some updates though.)
-
That would be charlog on your main SQL database. Or your map-server logs (assuming you log the servers' console outputs).
-
Well, I've updated the version to 1.1.0, the Alt-Move should now work. Bunch of other changes as well, looks like I forgot to push the updates for this software (I got pretty busy!). Although I'll just mention that this was always possible via scripting: Script > Script Runner... > act[selectedActionIndex].Translate(0, -100); or // Translates by 100 up for the whole act file act.Translate(0, -100);
-
You cannot use GPF's packing for LZMA compression. Use version 0x200 and don't forget to use Curiosity's DLL afterwards.
-
The files are encrypted. You cannot open them unless you use their client.
-
Have you tried holding down alt + moving the image? I reallyyy need to remake that software.
-
Well if the file is encrypted then you won't be able to view its content (or extract it). Otherwise it would be a permission issue that prevents the software from extracting the files. Or perhaps the extraction path has a problem, so try to use "Extract..." instead.
-
Well you'll have to provide more details than that.
-
You... must have the wrong files somewhere ;O. This issue doesn't happen on my end. If you see black squares like that, it means you didn't import the generated textures to your data\texture folder. But you shouldn't be seeing this on a map generated with no options checked (unless you're using a previous generated map and that you forgot to copy the new map textures, which is what I'm assuming happened here). The tool should be generating a maps.grf file; copy paste the file in your ragnarok folder and then extract it if you want to use the data folder. Make sure the file has the payon map files inside the GRF though. Or just modify your data.ini to read maps.grf first and then clear your data folder from any map in there.
-
These are meant to further customize the flat maps creation. If you uncheck Remove all objects, you must also uncheck Make the ground flat. This is meant to keep the objects while only changing the textures and it would create the map shown below. Otherwise you would have objects floating in mid-air. Making gat cells stick to the ground will be the difference between the left screenshot and the right screenshot. The gat cells are usually on top of objects so that you can walk over them. Obviously this doesn't apply if Make the ground flat is checked as you'd be walking on air otherwise. As far as the lightmap and shadowmap goes, I'd have to refer you to https://en.wikipedia.org/wiki/Lightmap and https://en.wikipedia.org/wiki/Shadow_mapping . The difference can be seen here I guess, if you keep the lightmaps: As for the global lighting, that's a setting used on some maps to dim the ambient light. Not many maps use this, but it is best to remove it when making flat maps. Using the default options would be best for a regular usage of course.
-
Make sure you're up to date:
-
Heya, You can use GRF Editor (version 1.8.2.4) and then use File > New > New Thor, then just drag and drop your BGM files. By default it's already set to what you need, but if you want to merge into your GRF in the future, click on root > Container options > Patching mode > Merge into GRF.
-
As the error mentions, the function (mobcount) doesn't have enough argument: *mobcount("<map name>","<event label>"). Refer to: https://github.com/rathena/rathena/blob/d770de8015afd31be89e1b125a8c3615a0453f88/doc/script_commands.txt#L5974 for more info. mobcount(instance_mapname("prt_fild08"), instance_npcname("monster_death")+"::OnMobKill")
-
Achievements Doubt - What is the use of 'Score'
Tokei replied to Litro Endemic's question in Database Support
Well, I don't know if you have to as far as parsing the file goes, but a big part of the purpose of completing achievements is getting those points and increasing your rank. The server does need to know the scores to show them properly on the client side, but you can put whatever value you want to there. The default score value is around 20. -
Achievements Doubt - What is the use of 'Score'
Tokei replied to Litro Endemic's question in Database Support
Your score for each achievement you've completed is added together (top left of the achievement window). When you have enough points, you go up to the next achievement rank. Each time you 'level up', you get another achievement (Achievement Rank 5, for example). But other than that, it's pretty much useless. -
Hmm, I believe the following would be easier to maintain: prontera,153,193,6 script Fake_Npc 123,{ .@menu$ = implode(.tmenu$, ":"); .@option = select(.@menu$ + ":Info") - 1; if (.@option < getarraysize(.tmenu$)) { Var1 = .@option; } else { dispbottom "Test"; dispbottom .tmenu$[Var1]; } end; OnInit: setarray .tmenu$, "Dog", "Cat"; end; }