Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 08/25/21 in all areas

  1. these are mostly unpopular scripts that probably not getting a lot of replies more popular ones will be in separated topics getitemname2 function for the moment use version 2.4 Global Function PS: why am I getting rep even before I make any release ? O.O
    1 point
  2. 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.
    1 point
  3. prontera,164,173,3 script Refiner 826,{ mes "^3355FF[%100 Refiner]^000000"; mes "This Lets you refine your item to the max"; mes " You Need "+.amount+"x "+getitemname(.item_id)+" to use my Service"; next; mes "Choose the item to refine"; mes "Choose Wisely"; mes "Dont Ask For refine"; mes "On GameMasters"; mes "Think Before you refine an item"; next; for (.@i = 0; .@i < .eqi_size; .@i++) { if (getequipid(.eqi[.@i]) != -1) .@menu$ = .@menu$ + F_getpositionname(.eqi[.@i]) + " - " +getitemname(getequipid(.eqi[.@i])); .@menu$ += ":"; } .@i = select(.@menu$) - 1; .@refine = getequiprefinerycnt(.eqi[.@i]); if (countitem(.item_id) < .amount) { mes "You didnt have enough "+.amount+"x "+getitemname(.item_id); } else if (.@refine >= 20) { mes "Your item already reached max refine."; } else { delitem .item_id, .amount; if (.@refine < 10) { successrefitem .eqi[.@i], (10 - .@refine); } else { successrefitem .eqi[.@i]; } announce "["+strcharinfo(0)+"], Thanks for using my great service :)).", bc_self; } close; OnInit: .item_id = 7179; .amount = 10; setarray .eqi, EQI_HEAD_TOP, EQI_HEAD_MID, EQI_HEAD_LOW, EQI_ARMOR, EQI_HAND_L, EQI_HAND_R, EQI_GARMENT, EQI_SHOES, EQI_ACC_L, EQI_ACC_R; .eqi_size = getarraysize(.eqi); end; }
    1 point
  4. use the updated version which allow non-equip to bulk purchase depend on your max stack setting. https://github.com/rathena/rathena/blob/master/npc/custom/quests/quest_shop.txt
    1 point
  5. for ( .@i = 0; .@i < .itemsize[.@r]; ++.@i ) { getitem .@itemid[.@i], .@itemamount[.@i]; if (getd( ".p"+ .@r +"[0]" ) < 10) announce "<Lotti> "+strcharinfo(0)+" obtained "+.@itemamount[.@i]+"x "+getitemname(.@itemid[.@i]), bc_all; // <----- THIS LINE } only announce 10% or below. for ( .@i = 0; .@i < .itemsize[.@r]; ++.@i ) { getitem .@itemid[.@i], .@itemamount[.@i]; announce "<Lotti> "+strcharinfo(0)+" obtained "+.@itemamount[.@i]+"x "+getitemname(.@itemid[.@i]), bc_all; // <----- THIS LINE } announce all items
    1 point
  6. https://github.com/rathena/rathena/pull/4348
    1 point
  7. I've played both games to the endgame (can do Lucid & Will on MapleStory). I think MapleStory's endgame lacks the competitive part while RO provides WoE and PvP. Both have its chore (instances and bosses dailies), but RO gives me more satisfaction with each WoE while MapleStory boss fights get more boring each time you do it. btw I play Kinesis, I love torturing myself.
    1 point
  8. Version 1.0

    10256 downloads

    These files are not created by me. I just found someone share a complete package of it on facebook. Thank him/her for collecting all these Skin across the world wide web, I believe some skin files was updated or fixed by him/her. So, I'll just provide a text file that contain the link to download these files from my dummy OneDrive Folder. Album Preview : http://imgur.com/a/b1MHG Installation Guide : Pick any RO Skin that you like and Download it to your PC/Laptop. Extract the files using 7-Zip / WinRar / WinZip / etc. Copy and paste the extracted files into the %System%/kRO/Skin/ folder. Again, I don't own any of these files. I just sharing the files. None of these are commercial items. Please insert / remain the credits in case you know who're them. Thank you.
    Free
    1 point
  9. conf/msg_conf/map.msg.conf Line: 541 541: '%s' got %s's %s (chance: %0.02f%%) Before: 541: '%s' got %s's %s (chance: %0.02f%%) After: 541: [ '%s' ] got [ %s' ] the item [ %s ] with (chance: %0.02f%%) Save and @reload msgconf.
    1 point
×
×
  • Create New...