Jump to content

iwillnot

Members
  • Posts

    51
  • Joined

  • Last visited

  • Days Won

    1

iwillnot last won the day on July 29 2021

iwillnot had the most liked content!

About iwillnot

  • Birthday 01/07/1993

Profile Information

  • Gender
    Male
  • Location
    PH

Recent Profile Visitors

5877 profile views

iwillnot's Achievements

Poring

Poring (1/15)

  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

23

Reputation

5

Community Answers

  1. Objective Load scripts not from your standard `rathena/npc` directory but instead, from a remote server via http/https. Design goals Parameters for NPC script loading would be: (a) remote http/https URL (b) support for request header for authorization purposes (e.g. API key) e.g. https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script?version=0 Authorization: Bearer <API token or key> The API token or key can be stored in a git ignored ENV file, so that unauthorized users don't have access to the source code Failure to download the script will result to no operation- warnings but not fatal server crashes The downloaded file must be a single `.txt` file The file is then hashed by the server, and cross-checked to ensure data consistency e.g. https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script?version=1.0.0&type=hash returns "70460b4b4aece5915caf5c68d12f560a9fe3e4" which should match the file's hash The file's existing supported versions can be checked (returns JSON array) e.g. https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script?type=versions returns ["1.0.0", "1.0.1", "1.1.0"] Caching - Can download the files into a git-ignored directory on the actual server for caching purposes If the requested file and version already exists in cache AND the file's hash matches the hash of the server, no need to download the file again NOTE: Not entirely sure yet if I want the download to be perform the caching, because it goes against the whole idea of "not having the source code on your server" aspect. Benefits By adding this source capability, we: enable RO developers who produce intellectual property (NPC scripts in this specific case) to have some control over their IP. NOTE: It is still possible for RO developer scammers to sell shady scripts/sell scripts that aren't theirs, grant their customers temporary access, and then remove access from their customers. enables RO developers to sell licenses to their IP, and revoke license (disable API token) after some validity period (e.g. 3 months). Opens up the opportunity for a monthly or yearly pricing of their NPC script licenses. enable RO developers to share their rAthena server folder to co-developers without risk of accidentally granting them access to other IP that they aren't supposed to share. e.g. RO Admin builds server. RO Admin buys 10 NPC scripts, with license to use in one RO. server. RO Admin hires RO Support dev. RO Support dev granted access to rAthena server files because they have work to do. RO Support dev now has access to npc scripts they didn't purchase, and is a vulnerability. Related source code Specifically, the following files need to be changed/extended: int npc_addsrcfile(const char* name, bool loadscript) - in src/map/npc.cpp Probably adding a new function called int npc_addremotesrcfile(const char* resource_url, char* resource_hash, char* resource_version, bool loadscript) - in src/map/npc.cpp Usage Potentially using it on an npc script would look like this: remotenpc: <URL> <VERSION> <HASH> remotenpc: https://some-ro-developer.com/servers/some-ro-server-1/scripts/my-private-script 1.0.0 70460b4b4aece5915caf5c68d12f560a9fe3e4 Thoughts I wanted to get the thoughts/vibe of the community before pushing through with this idea. I know that we're an open-source community that wants to encourage full-sharing of source code. But I think that the strict constraints that follows from that is something to consider. It limits the number of developers you can onboard onto your team, or needing to think about whether "you trust everyone". I think doing this (a) encourages developers to produce great NPC scripts, (b) enables developers to make good money on it, (c) positions rAthena or whoever to start up some kind of dependency management/NPC scripts platform (similar to npm, or composer) where server owners can shop for NPC scripts. Securely designed remote script access enable developers to focus on writing NPC scripts opportunity for NPC script customization layer developers can now easily scale up their marketing on some dependency management/NPC scripts platform well-paid developer happy developer more scripts happy community I will definitely be exploring this on my own, but I wanted to know what the community thinks about it. PS: Potentially a source of revenue as well for rAthena to sustain itself. I am open to the idea of assisting in the architecture design for that platform.
  2. This is really amazing work. Great job guys!
  3. I think this is an encoding issue. Make sure your text editor's encoding is set to EUC-KR before editing and saving. This is something you can configure on your text editor (notepad++, Visual Studio Code). I use VS Code (see the attachment). Change whatever encoding (e.g. UTF-8) into the appropriate LUA encoding (EUC-KR).
  4. Thanks for this. For those of you who are not familiar with how to apply patches, I did the following on my Windows machine: $ git apply "PATH/TO/FILE.patch" script_commands.txt | 14 ++++++++++++++ map/map.hpp | 1 + map/mob.cpp | 1 + map/npc.cpp | 4 ++++ map/npc.hpp | 1 + map/pc.cpp | 28 ++++++++++++++++++++++++++++ map/pc.hpp | 2 ++ map/script.cpp | 5 +++++ map/script.hpp | 1 + map/script_constants.hpp | 1 + 10 files changed, 58 insertions(+) Details: GNU patch 2.7.6. Further reading: How does a patch work?
  5. Thanks for the suggestion. You're right, I'm sure that'll work! Yeah, I'm trying to figure out the least amount of work to do first, before going into source editing. Solved: Only one skill is displayed on the user interface "STRIP HELM" but in fact, all the strip skills were triggered because of the high skill chance. This means that this is not a bug, and is in fact, working correctly. This means that when multiple skills occur at the same time, only the last skill will be displayed on the screen. This makes sense, as you cannot display 4 skill texts above the character's name at the same time.
  6. I have a headgear that uses the following onEquip scripts: .@r = getrefine(); .@rstatbonus = .@r / 4; .@rpctbonus = ( (.@r - 5) * 100); bonus bAgi,3 + .@rstatbonus; bonus bDex,2 + .@rstatbonus; bonus bLuk,1 + .@rstatbonus; if(BaseJob==Job_Rogue) { bonus4 bAutoSpell,"RG_BACKSTAP",1,max(1000,1000 + .@rpctbonus),1; bonus4 bAutoSpellWhenHit,"RG_RAID",1,max(3000,3000 + .@rpctbonus),1; } bonus4 bAutoSpell,"SU_ARCLOUSEDASH",1,max(500,500 + .@rpctbonus),1; bonus4 bAutoSpell,"RG_STRIPWEAPON",1,max(2500, 2500 + .@rpctbonus),1; bonus4 bAutoSpell,"RG_STRIPSHIELD",1,max(2500, 2500 + .@rpctbonus),1; bonus4 bAutoSpell,"RG_STRIPARMOR",1,max(2500, 2500 + .@rpctbonus),1; bonus4 bAutoSpell,"RG_STRIPHELM",1,max(2500, 2500 + .@rpctbonus),1; My problem is, it only triggers strip helm on attack. When I removed the last script (RG_STRIPHELM) only strip armor is triggered. Is there a rule that multiple occurrences of bonus bAutoSpell does not stack? Edit: Did a few more tests, turns out I can cast multiple skills if the bAutoSpell benefit comes from different items. (e.g. headgear top grants strip helm, headgear bottom grants pressure). Am I missing anything? How do I enable one item to grant multiple skills triggered?
  7. I was searching for NPCs that warp to Prontera. Suddenly, I found this piece of code. (npc/cities/yuno.txt) Breaking the immersion in RO lol. Stop being manipulated by virtual reality! Found it funny. Heh I love our community.
  8. Try to be more clear with your question, so that we know at which point you need help with. That way, we can help you better. Which ones are you confident you understand/were able to accomplish? Configuring and using PuTTY to connect to your server machine Installing GDB on your server machine (or checking if it is installed) Running char-server and login-server only. Running map-server through GDB. Reading and analyzing the crash log. Fixing the bug identified by the crash log. Re-compiling your server.
  9. You're having problems because (1) You're using a select function with only one menu option "Game of Thrones", and (2), you do not have balanced braces. Syntax error, expected ) switch(select("Game of Thrones"){ Has 2 open braces ( and only one close brace ) switch(select("Game of Thrones", "Option 2")){ Checking for multiple conditions You can check for multiple conditions using the conditional operators AND or OR. if (countitem(501) > 0 && countitem(601) > 0) { mes "You have red potion AND fly wing at the same time!"; } if (countitem(501) > 0 || countitem(601) > 0) { mes "You have red potion or a fly wing... or BOTH!"; } See doc/script_commands for a full guide on NPC and item scripting.
  10. @trickyloki3 Yes, I do mean comparing for the different flavor text. The last message you wrote was asking for help with regard to Flavor text, and that's what I was concerned with. The problem: scaling up generation of item descriptions for flavor text Your program is about automation which excites me, but I am not sure how to scale up/automate the Flavor text part. That is big chunk of work you'll need to do to make sure each item's complete description (including flavor text) is reliable. It's either we do checking manually (which Asheraf, Zackdreaver, and community contributors already do) or we go with the fundamental idea of your work: automating the item descriptions. I like the path you're taking: automate it. We already have very few volunteers in the community. Better to make good use of their time and automate what we can. We already have existing reliable and high quality datasets for item descriptions (Asheraf, Zackdreaver). We frame the task of item descriptions generation as a dataset generation problem, and the goal is to achieve similar quality as that of the gold standard: Human-processed manually checked item descriptions. To compare the similarity between two things, we need a measure. Coming up with some statistical measure can help you be more confident that your generated item descriptions are indeed semantically equivalent to the item. What good would a statistical measure do? How can it be useful? Having a statistical measure, like edit distance, can allow us to see statistics between the datasets. This is illustrated in an example below: Asheraf Translation vs. trickyloki AutoGen DB to Item Description 15,000 items automatically generated from item_db.conf and item_db2.conf 13,000 items compared between the two data translations. Average edit distance: 4 characters (means that your automatically generated descriptions only vary with asheraf's translation by 4 characters on the average). Zackdreaver Translation vs. trickyloki AutoGen DB to Item Description 15,000 items automatically generated from item_db.conf and item_db2.conf 12,000 items compared between the two data translations. Average edit distance: 12 characters (means that your automatically generated descriptions only vary with zackdreaver's translation by 12 characters on the average. This is curious, and since this is all automated, you can easily query which items had high edit distances and study why they varied, so you can better tailor your description algorithm). In the end, you're not aiming to be perfectly close to Asheraf or Zackdreaver, but to generate not only high quality item script descriptions but also still have reliable flavor text that we all love to read while playing RO. These are only ideas and suggestions; it is your project sir, and I wish you all the best. Thank you for your generous contribution to the community!
  11. You're talking about hyperlinks in the programming language HTML. <a href="https://www.google.com">Click me to go to Google</a> Good luck! Note: Also, this thread should be under Third Party Programs Support, not Client Support.
  12. I recommend using my fork of User Feefty's Flux CP Addons VoteForPoints. He last updated his code in 2015. I've fixed some bugs and tested that it works as of this date (Dec 2018). https://github.com/darrensapalo/FluxCP_Addons-VoteForPoints
  13. Portuguese Esse addon foi enviado em 2012 e atualizado em 2012. Eu recomendo usar o User Feefty Vote no Point Flux CP Addon que ele atualizou pela última vez em 2015. No entanto, sua cópia do código ainda apresenta alguns problemas relatados por vários usuários (1, 2). Eu recomendo usar o fork do código dele, que testei e funciona a partir desta data (dezembro de 2018). https://github.com/darrensapalo/FluxCP_Addons-VoteForPoints Perdoe-me, eu uso o Google Translate. English That addon was uploaded on 2012, and updated in 2012. I recommend using User Feefty's Vote for Point Flux CP Addon which he last updated in 2015 . However, his copy of the code still has some problems reported by various users ( 1 , 2 ). I recommend using my fork of his code , which I have tested and works as of this date (December 2018).
×
×
  • Create New...