Jump to content

Tranquility

Members
  • Content Count

    102
  • Joined

  • Last visited


Reputation Activity

  1. Upvote
    Tranquility got a reaction from Legend in [Script] storage{mod}item   
    File Name: [script] storage{mod}item
    File Submitter: Tranquility
    File Submitted: 23 Oct 2015
    File Category: Plugins
     
    Greetings!
     
    The past week I've been messing around with processing how to utilise the storage better for my in-game NPCs & scripts.
    Coming from rA, I noticed we didn't have the script commands "storageadditem", "storagecountitem", "storagedelitem".
    Because of that I thought I should give it a try and aim to develop a plugin or a means, to make it possible to use this functionality again.
     
    How to use:
    you can use storageadditem to add an item name or itemid to a players storage.
    storageadditem <item id>, <amount>{, <account id>}
    storageadditem<item name>, <amount>{, <account id>}
    Example: storageadditem(501,10);
    you can use storagecountitem to count a specific item name or itemid in a players storage.
    storagecountitem(nameID,{accountID})
    returns number of items that meet the conditions
    Example: .@pots = storagecountitem(501);
    you can use storagedeltitem to delete a specific item name or itemid in a players storage.
    storagedelitem <item id>,<amount>{,<account id>}
    storagedelitem "<item name>",<amount>{,<account id>}
    Deletes items from the target/attached player.
    Example: storagedelitem(501,.@pots);

    Read the Hercules Plugin Manager wiki page if you don't know how to add this functionality to your server.
    If you have any questions, suggestions or notice any bugs, kindly let me know and I'll see what I can do about it.
     
    Uploaded to my Git Repo now for easier access.
     
    Click here to download this file
  2. Upvote
    Tranquility got a reaction from vykimo in [Script] storage{mod}item   
    It is partially working now, will update the files once I fixed the bugs.
     
    Edit: fixed. Uploaded the new file, awaiting approval. Already available on my github repository.
  3. Upvote
    Tranquility got a reaction from MikZ in WOE DAMAGE   
    That one is pretty accurate. Use a hexing program (XVI or Hexworkshop are the ones I've used in the past). Search for that bolded hex in your client, replace the "74" with "EB" and then save your changes.
    You'll have to enable WoE damage in your server settings too though.
  4. Upvote
    Tranquility got a reaction from astralprojection in server status   
    There is another way, however, you'll require some tweaks to pull it off.
     
    I personally have separated the information in two files (one config, one navigation), however, you can merge it into one.
    Alter the $host, $user, $pwd & $db variables as needed.
    Here's the config file:
    // Server Timedate_default_timezone_set('America/Chicago'); //Change your timezone to your server's timezone.$today = date("H:i", time());// Server configuration$host = "SERVER_IP";$user = "SQL_USER";$pwd = "SQL_PASS";$db = "SQL_DATABASE";// Login, Char & Map Server ports$login = 6900;$char = 6121;$map = 5121;//PHP Data Objects -> onlinePlayersCount & serverOnline// Players Online$server = new PDO("mysql:host={$host};dbname={$db}",$user,$pwd);$sql = "SELECT COUNT(*) AS players_online FROM main.char WHERE online > 0";$onlinePlayersCount = $server->query($sql)->fetchColumn();// Server Statusfunction getServerStatus() { //global $host,$login,$char,$map; $host = "SERVER_IP"; $login = 6900; $char = 6121; $map = 5121; $loginStatus = @fsockopen($host,$login,$errno,$errstr); $charStatus = @fsockopen($host,$char,$errno,$errstr); $mapStatus = @fsockopen($host,$map,$errno,$errstr); if($loginStatus == false || $charStatus == false || $mapStatus == false){ return false; }else{ fclose($loginStatus); fclose($charStatus); fclose($mapStatus); return true; }}$serverOnline = getServerStatus();?> And here's my navigation file:
    <?phprequire_once('serv_config.php');?><ul class="pull-right"> <li>Time: <?php echo $today; ?></li> <li><span>Players: <?php echo $onlinePlayersCount; ?></span></li> <li><span>Server: <span id="<?php if($serverOnline == true) { echo "server-online";} else {echo "server-offline";}?>"><?php if($serverOnline == true) {echo "Online";} else {echo "Offline";} ?></span></span></li></ul> <!-- pull-right --> The CSS for the online/offline indicators (green&red):
    .main-navigation #server-online { color: green;}.main-navigation #server-offline { color: red;} All these tweaks I have applied to Herc's FluxCP with the emphaino theme. There's more CSS involved with this, however, it's not relevant for the code you wanted and just visual positioning etc.
    Good luck.
  5. Upvote
    Tranquility reacted to Dastgir in Community Help Needed for Quick Development.   
    Hello all,
     
    You might see we don't have quite a lot npc scripts(from official servers), thats mostly because of lack of info, not due to lack of active scripters..
    So what can be done?
    Well, alot of people does play official servers(iRO,kRO, or any other) and most script matches even if its iRO,jRO,idRO,kRO...
    So we can boost the development with your help.
     
    Someone might wonder if what would happen if some npc/instances are exclusive to jRO only or any other server, well, we might still need those, those may/may not be added to repository, but that will make a nice release over script release section.
     
    Almost all servers have Replay System, we can record the gameplay of any official script, so that can help us get all info we want...
     
    So I request you (if you want new official scripts), (and if you play ANY official server), that either record a video or start the replay, and share the replay/video file, so we can get it quickly converted, and release it..
     
    Or some of your friends might play those servers?, you can ask them for videos/replays?
     
     
    If you don't want to share the replay/video publicly, you can PM me as well with the file.
     
    I bet, that we will try our best to implement it quickly.
  6. Upvote
    Tranquility got a reaction from vykimo in [Script] storage{mod}item   
    Haven't thought about that one to be honest, since I haven't used that idea for scripting yet!
    I'll see what I can do
  7. Upvote
    Tranquility reacted to AnnieRuru in [REQ] top leader custom mvp hunter.   
    reference ....
    http://herc.ws/board/topic/4552-mvp-ladder-script-enhancement/
     
    so ...
    /*alter table `char` add column custom_mvp_rank int(11) default 0 after hotkey_rowshift, add index (custom_mvp_rank);*/- script ajdhkasdj FAKE_NPC,{OnInit: if ( $mvp_ladder_last_given == atoi( gettime(7) +""+ gettime(6) ) ) end; goto L_give;OnClock0000: if ( gettime(5) != 1 ) end;L_give: .@nb = query_sql( "select char_id, name, custom_mvp_rank from `char` where custom_mvp_rank > 0 order by custom_mvp_rank desc limit 5", .@cid, .@name$, .@killed ); if ( !.@nb ) end; setarray .@reward, 501, 502, 503, 504, 505; // <1st place>, <2nd place>, <3rd place> ... setarray .@amount, 10, 9, 8, 7, 6; for ( .@i = 0; .@i < .@nb; .@i++ ) query_sql "insert into mail ( send_name, dest_id, title, message, nameid, amount, identify, zeny, time ) values ( '"+ escape_sql( .@name$[.@i] ) +"', "+ .@cid[.@i] +", '[MVP RANK]', 'Congratulations for earning No. "+( .@i +1 )+" position in killing Custom MVPs. Here is your reward.', "+ .@reward[.@i] +", "+ .@amount[.@i] +", 1, 0, unix_timestamp( now() ) )"; query_sql "update `char` set custom_mvp_rank = 0"; // reset the ladder $mvp_ladder_last_given = atoi( gettime(7) +""+ gettime(6) ); end;OnNPCKillEvent: if ( killedrid == G_RANDGRIS ) // 1765 query_sql "update `char` set custom_mvp_rank = custom_mvp_rank +1 where char_id = "+ getcharid(0); end;}
  8. Upvote
    Tranquility got a reaction from Garr in [Script] storage{mod}item   
    File Name: [script] storage{mod}item
    File Submitter: Tranquility
    File Submitted: 23 Oct 2015
    File Category: Plugins
     
    Greetings!
     
    The past week I've been messing around with processing how to utilise the storage better for my in-game NPCs & scripts.
    Coming from rA, I noticed we didn't have the script commands "storageadditem", "storagecountitem", "storagedelitem".
    Because of that I thought I should give it a try and aim to develop a plugin or a means, to make it possible to use this functionality again.
     
    How to use:
    you can use storageadditem to add an item name or itemid to a players storage.
    storageadditem <item id>, <amount>{, <account id>}
    storageadditem<item name>, <amount>{, <account id>}
    Example: storageadditem(501,10);
    you can use storagecountitem to count a specific item name or itemid in a players storage.
    storagecountitem(nameID,{accountID})
    returns number of items that meet the conditions
    Example: .@pots = storagecountitem(501);
    you can use storagedeltitem to delete a specific item name or itemid in a players storage.
    storagedelitem <item id>,<amount>{,<account id>}
    storagedelitem "<item name>",<amount>{,<account id>}
    Deletes items from the target/attached player.
    Example: storagedelitem(501,.@pots);

    Read the Hercules Plugin Manager wiki page if you don't know how to add this functionality to your server.
    If you have any questions, suggestions or notice any bugs, kindly let me know and I'll see what I can do about it.
     
    Uploaded to my Git Repo now for easier access.
     
    Click here to download this file
  9. Upvote
    Tranquility got a reaction from Alexandria in npc checks your credits (flux cp table)   
    Think it could be something like:
    set .redeemTable$,"cp_credits";query_sql("SELECT `balance` FROM `" + escape_sql(.redeemTable$) + "` WHERE `account_id` = " + getcharid(3) + " LIMIT 0,30", .@credits);mes "You have "+ .@credits + " donation credits";
  10. Upvote
    Tranquility reacted to Conflicts in RagnaShield Beta 1.0.8   
    RagnaShield Beta – Introduction
     

     
    Installation guide


    Features - Clientside


    Hardware IDs
    Every time a player connects to his account, various hardware IDs are retrieved from the computer, such as the MAC Address, the CPU ID, Disk ID and Motherboard ID. This information is then sent to the server and stored in the `login` table. The purpose of this feature is to create a fingerprint of the player's computer capable of ensuring you they will not come back after a hardware ban. The player's hardware IDs are then compared to the ban list to see how much of a match they are. This setting can be modified from ragnashield.conf with ban_sensitivity. 

    Advanced File Hashing (including those inside GRFs)
    You can hash as many files as you wish within your RO folder or your GRFs. RagnaHosting already provides a default list to prevent no-delay sprites by protecting the default job sprites,
    this GRF will take the highest priority and will be named JobSprites.grf. To customize this list and include your own files or sprites, contact the RagnaHosting Networks with the necessary information.
    If any of your hashed files fails the check, the client will show an error and it wont launch. This behavior cannot be changed.
    * This protection currently does not take into account the order in which your files are being loaded. If this becomes necessary, you might want to protect your DATA.INI as well.

    Dual Clienting
    By default, only up to two clients can run simultaneously. The choice of two clients is to allow your players to trade between their accounts. This feature can be modified as per user request.
     
    Hiding clientinfo.xml
    Your clientinfo.xml has been embedded to your RagnaShield protection components and the client will disallow any connection bypassing the one provided.
    This would protect you from most of those people trying to find your IP for some malicious intentions. This also ensures that you'll only be able to use this protection when you're hosted with us.
     
    Better compression (LZMA support)
    LZMA is a compression method allowing you to significantly reduce the size of your GRF files.
    The idea of this feature was introduced by Curiosity, for more information visit the following thread on rAthena : https://rathena.org/board/topic/95086-lessgrf-slim-down-your-grf.
    RagnaHosting uses this compression by default on your GRF files. As you may have noticed, the size of a fully patched Full Client is only about 1.4GB, the one RagnaHosting provides.
    In GRF Editor, you can use this custom compression by going in Tools > Settings > General > Compression method > Custom compression... and select the cps.dll provided in the thread mentioned above.
    * Do not attempt to load the custom cps.dll provided by RagnaShield in GRF Editor, you will crash and may end up having to reinstall the application.
     
    File Encryption (Unique GRF Editor keys)
    RagnaShield allows you to encrypt your GRF files' content using GRF Editor's encryption. You will receive a key.grfkey file which can be used directly by GRF Editor to encrypt or decrypt your content.
     
    File Encryption (RagnaHosting Shared Encryption)
    By being part of RagnaHosting, you will gain access to free or cheaper custom content for your server. This content is encrypted and will only work on ALL servers using RagnaShield as their protection. If you decide to leave the host however, you will no longer be able to use them. This feature itself warrants a post of its own, I'll be explaining in details how this works.
     
    Splash Screen
    Pretty self explanatory, RagnaShield will display a splash screen 250px by 150px in size when your client launches, and closes it as soon as the client fully loads up (the login screen appears).

    Third-party program restriction / blocking
    This feature is in constant development and there are already a handful of softwares being blocked by the game guard. You can choose whether or not you want to allow tools such as RCX to run on your server. Other programs such as CheatEngine will automatically be blocked. This feature is fully customizable as well to fit every server's needs. We do encourage you to submit cheat tools so we could block them for everyone. We believe there's no reliable way to block macros, and we want to make it clear that we're not advertising RagnaShield to be able to do that.
     
    What about bots?
    Blocking bots or other similar tools is not part of RagnaShield's protection. To prevent those, we recommend you use newer clients allowing packet obfuscation; it will block bots better than any features we could add to our game guard. By default, we'll include packet obfuscation support on the client we'll provide you, it'll use fully qualified keys, and it'll be unique for each server.

    Features - Severside

     
    Banning system
    It is important to understand the difference between an account ban, an IP ban and a hardware ban.

     
    Knowing when to use which can be a bit confusing at first, however RagnaShield's ban commands are more straightforward because they combine these together nicely.
    Banning a player bans both their hardware IDs and their account at the same time. Our custom bans take into account the level (group id) of the GM who is issuing the ban.
    As such, it is only possible for a GM to ban an account with a lower group id than his own. Therefore admins (group 99) can never be banned. The hardware ban, which is always
    applied regardless of the group id of the target, can be bypassed if the account's owner has a higher group id.
     
    Configuration file (ragnashield.conf)
    The configuration file is found at conf/ragnashield.conf.

     
    Hardware IDs
    Hardware IDs are stored on the server side when a player attempts to log in. All the info are also added to the loginlog table. RagnaHosting lists 4 kinds of Hardware IDs, namely;
    MAC Address, CPU ID, Drive ID and Motherboard ID. There's a 5th and special kind of ID which combines the latter 3 into a unique hashed ID, which can make it easier for you to
    integrate on your scripts. All of these information are added to the `login` and `loginlog` tables.
     
    Ingame @commands
    @ragnaban / @ban2
    usage: @ragnaban <time> <player_name> {<reason>}
    ex   : @ragnaban 1d "test player" Stole gears.
    Similar to @ban, this command does both a regular @ban and a hardware ban. The computer of the player will no longer be able to connect to your server.
    If the account ban's time is greater than the one given by the command, it will keep the longest one. When a player's name contains spaces, you must use quotes,
    otherwise it's not needed. The reason given for the ban is also optional but it is recommended.
     
    @ragnafullban / @fullban
    usage: @ragnafullban <time> <player_name> {<reason>}
    ex   : @ragnafullban 1d "test player" Stole gears.
    This is the same as the previous command, except it will also ban all the accounts related to the player. It bans the accounts based on the last person who logged into them.
     
    @ragnaunban / @unban2
    usage: @ragnaunban <player_name> 
    ex   : @ragnaunban "test player"
    This command removes the hardware ban of a player as well as removing the account ban of the player mentioned.
     
    @ragnafullunban / @fullunban
    usage: @ragnafullunban <player_name> 
    ex   : @ragnafullunban "test player"
    Same as the previous ban, except it unbans all the accounts connected with the player (using the hardware IDs of the person who logged into the account last).
     
    @showmacban
    usage: @showmacban
    Shows the current MAC addresses banned.
     
    @execute <system_command>
    usage: @execute echo Hello world!
    Executes a command on the server's VPS. This command allows you to customize server tasks outside of the game. The example command will display "Hello world!" in the map-server console. You could use it to recompile or restart your server, create a backup, etc. The possibilities are limitless for this command. We'll be writing scripts for everyone for you to make use of Linux commands and utilities from inside the game! This means you can tell your GM to type @execute sqldump before he hosts his event, just in case something goes wrong. Feel free to send us suggestions of what commands you want to see on here.
     
    @ping {<player_name>}
    usage: @ping
    This command asks the server to ping yourself or another player. The task is put on a background thread and you will have to wait a few seconds to retrieve the ping statistics. To retrieve the pong info, you'll have to type @ping again. Each ping has a hard delay of 10 seconds and the statistics will be erased from your server's VPS after 30 seconds. By default, players cannot use @ping <player_name>. If you want to allow lower GMs to use the latter command, you must give them the @ping2 atcommand permission ("ping2: true" in groups.conf).

    Script methods
    The following script methods are shortcuts to simplify your custom scripts.
     
    getcharmac({<account ID>/<character ID>/<character name>})
    usage: getcharmac();
    usage: getcharmac("test_player");
    If no argument is specified, the currently attached player's RID will be used to retrieve the MAC address.
     
    gethardwareid(<type> {,<account ID>/<character ID>/<character name>})
    usage: .@id$ = gethardwareid(0);
    usage: .@id$ = gethardwareid(4, "test_player");
    Type 0 – MAC address
    Type 1 – CPU ID
    Type 2 – Disk drive ID
    Type 3 – Motherboard ID
    Type 4 – Unique ID (combines types 1-2-3)
    This command retrieves the hardware information from a player.
     
    Credits
    Conflicts - Project manager, started this whole project and gathered the team. Helped test the features thoroughly. Kept pushing for more features, and will keep doing that for the foreseeable future.
    Nanakiwurtz - Ported the source code for both rAthena and rAmod, scripted the sample scripts as well as general testing of the features.  She will be taking care of your protection component customization requests.
    Tokeiburu -Responsible for the tools used for the generation of the game guard files. He's being humble though, to put it simply, RagnaShield wouldn't have been possible without him.
     
    Updates:
    Version 1.0.1
    Added shared encryption key. Added GRF file hashing. The RagnaShield logo on startup now closes once the client's main window shows up.

    Version 1.0.4
    Fixed packet conflicts between RagnaShield and the packet obfuscation feature. This error would show up in your emulator's map-server console as "unsupported packet : 22 or 26 in length". Updated startup logo. Other minor bug fixes.

    Version 1.0.6 Improved RagnaShield's CPU usage down to almost 0%. The usage was already pretty low, except now it uses Windows' events to detect new process creation. This means it no longer needs to scan your process list at every specific interval of time. Fixed a bug regarding the third-party protection blocking false-positive process. Hidden processes are now detected.

    Version 1.0.7 Fixed a bug regarding the GRF hashing process; this bug would crash your exe without any warning. The third-party protection module for Windows XP was unable to launch properly, this has been fixed. Improved overall customization : clientinfo.xml is no longer hidden within the game guard. To edit the content, you must open RagnaShieldRagnaShield.xml, then it's just like a regular clientinfo.xml. This was changed to allow admins to add more GM accounts without us having to rebuild your client files. You will notice that the IP fields are protected as well the port fields (so the security is still the same as before). The allowed IP tags are "#PRIMARY", "#FILTERED" and "#LOCALHOST". The last one allows you to test your server on a local network. DATA.INI is no longer embedded within the client. You can edit the content and add as many custom GRFs as you want. The first two entries are reserved for RagnaShield The data folder can be read safely without having an impact on our protected sprites (job sprites). This blocks no-delay skills while allowing you to test custom changes.
    [*]
    Common errors are now displayed in a more friendly manner (replaced some of the 0xF#####87 errors). [*]Introducing a new file signature protection. This fully blocks any unauthorized processes from being executed at the same time as your client.

    Version 1.0.8
    Added file version to the game guard to track down further issues. Added a custom crash report to help track down further issues and which will quite possibly help you solve other issues. The file is stored in ClientCrash.log Huge update on RagnaShield's third-party protection. It is planned to be improved, but newer cheat softwares should have a harder time to work. WMI errors will now show up in hexadecimal, this will be easier to track them down as well. Pressing Ctrl-Del ingame will crash the client and generate a crash log on purpose. Security upgrade regarding macro'ing softwares. Updated third-party definitions and rules.

  11. Upvote
    Tranquility got a reaction from apuadofrancisco in Client wont open after patching kRO   
    You might need the file: ½ºÅ²Á¦À۸Ŵº¾ó.txt (probably could just make an empty text file named like that, if not see attachment)
    And/or replace your skin folder with a working one. I thought that was the issue with NickyZai's corrupt download.
    ½ºÅ²Á¦À۸Ŵº¾ó.txt
  12. Upvote
    Tranquility got a reaction from Tio Akima in map size   
    Thanks, it is easier
  13. Upvote
    Tranquility got a reaction from Tio Akima in map size   
    Yes it's possible.
     
    In Browedit, create a new map with the dimensions you want it to have.
    Lets say you had 100x100 and now you want it to be 150x150, you'll create a new map with that size.
    Next you open the original map of 100x100, you can then select the whole map after pressing F2 (just drag from top-left to lower right). You might want to use View > Top Camera for this to make it easier.
    To reduce the strain, you can toggle lightmaps and objects by pressing "l" and "o".
     
    Then press CTRL + C to copy (you should see the map 'stuck' to your mouse movements), TAB to your other map and then place it on the right spot accordingly.
  14. Upvote
    Tranquility got a reaction from Chemical Crush in Custom map problem   
    Have you rebuild your mapcache and added it the appropriate manner in your server files?
    Couldn't directly find a Hercules source, but do it accordingly to this: https://rathena.org/wiki/Custom_Maps#Adding_Custom_Maps
    Use mapcache.exe and/or recompile server after backing up mapcache.dat in your database (db) directory and renaming/removing it.
  15. Upvote
    Tranquility got a reaction from Aurora in Custom mob help   
    He mentioned that your client and server side ID's don't match.
    Looking at your NPCidentity.lua you see that the number there isn't equal to what you have in mob_db2.
    Change the value in your lua files to what you have in your mob_db2.
     
    The maximum mob_id you can use is 3999 from your current range, if you need more ID's, you'll need to continue from 25000
  16. Upvote
    Tranquility reacted to Tokeiburu in GRF Editor   
    You will need the latest version from the mediafire link (1.6.7.5) : http://www.mediafire.com/download/aflylbhblrzpz0h
     
    There are two ways to encrypt files, but first, you'll want to setup your client.
    Go in Tools > GRF Encryption
    Put your encryption password in the first box (you can save the credentials to a .grfkey format if you plan on using the encryption often, but make sure this file is not shared with anyone else).
    Select your client executable (the name of the executable cannot be changed afterwards).
    Put your new cps.dll name. This cannot exceed 7 characters. You can simply leave it as "cps.dll", which won't require an edited client.
    Click on Generate files. If everything went well, a window should show up with your new cps.dll file selected (and the client, if it needed modifications).
    Screenshot below after you generate your client files.
    Copy the new generated files to your client folder.

     

     
     
    That's it for the client configuration.
     
    As for the GRF actual encryption now... Open your GRF in GRF Editor. If you want to encrypt your entire GRF, go in Tools > GRF Encryption, click on Encrypt GRF (might ask you for your password). The process should be rather quick, the output GRF is your new encrypted GRF.
     
    You can also encrypt specific files if you want : right-click the items you want to encrypt and use Encryption > Encrypt. Save your GRF.
     

     
     
    Encrypted files will show in orange. When opening up an encrypted GRF, GRF Editor will prompt you for your credentials (hence why it's useful to save your password somewhere, then you can quickly load it with Key... > Load recent > your key.grfkey) :

     
     
    To make encrypted Thor patches, create a new Thor file from File > New > New Thor. Add a data folder and add your files in there. This is the same process as above : right-click, Encryption > Encrypt. Make sure you use the same password/key. Go in the Container options tab and set your target GRF (as shown below). Once saving, you will no longer be able to modify your encrypted Thor patch though (the files will become unreadable). Also, always test your Thor patches to make sure everything is working fine.

     
    That should cover most of it xD! If you have further questions, go ahead.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.