Jump to content

Litro

Members
  • Content Count

    365
  • Joined

  • Last visited

  • Days Won

    4

Reputation Activity

  1. Upvote
    Litro got a reaction from mrlongshen in One click mining constant   
    now mining will only stop when the miner exhausted his mining tools supply, when the miner get nothing the mining process will not be stopped any more and you can set success rate again
     
    i have integrate the progress bar reduce time in the script below, look at the comment and make sure you put it right
     
    /*=========================================================Variant Miningby Glitch [Via]===========================================================Request: http://herc.ws/board/topic/1886-simple-mining/===========================================================Description:A simple mining system; allows for interacting players toexcavate minerals by "mining" them with special equipmentand tools.Configuration is done in arrays so that settings may bechanged with no modifications to the script. Keep in mindthat each array value is respective to their commented set.Duplicate in additional locations as needed.=========================================================*/pay_dun00,54,147,0 script Variant Mineral#1::mining 1907,{ disable_items; .@progress = .progress; // Check equipment for (.@i = 0; .@i < getarraysize(.equip); .@i++) { if (!isequipped(.equip[.@i])) { message strcharinfo(0), "You need to have '"+ getitemname(.equip[.@i]) +"' equipped to mine!"; .@unequipped++; } else .@progress -= .e_cast[.@i]; } // Show count of equipment not worn if (.@unequipped) { message strcharinfo(0), .@unequipped +" of "+ getarraysize(.equip) +" equipment has not been worn."; end; } while(1) { // Check tools for (.@i = 0; .@i < getarraysize(.tool); .@i++) { if (countitem(.tool[.@i]) < .inventory[.@i]) { message strcharinfo(0), "You need to bring "+ .inventory[.@i] +" "+ getitemname(.tool[.@i]) +" to mine!"; .@gearless++; } } // Show count of tools not in inventory if (.@gearless) { .@grammar$ = ((getarraysize(.tool) > 1) ? "tools were" : "tool was"); message strcharinfo(0), .@gearless +" of "+ getarraysize(.tool) +" "+ .@grammar$ +" not brought."; end; } // Progress message strcharinfo(0), "Mining in progress..."; progressbar "green", .@progress; // Delete tools for (.@i = 0; .@i < getarraysize(.tool); .@i++) delitem .tool[.@i], .inventory[.@i]; // Audio/visual effects soundeffect .sound$, 0; specialeffect .effect; // Drop random debris getmapxy(.@m$, .@x, .@y, 0); makeitem .debris, .scatter, .@m$, .@x + rand(2), .@y + rand(1,2); // Randomize target mineral to mine .@target = rand(getarraysize(.mineral)); // Max range of success .@range = .success[.@target * 2 + 1]; // Check if failed if(rand(1, .@range) != .success[.@target * 2]) { message strcharinfo(0), "Nothing valuable was excavated..."; // Get mineral(s) } else { getitem .mineral[.@target], .amount[.@target]; message strcharinfo(0), "You have successfully mined "+ .amount[.@target] +" "+ getitemname(.mineral[.@target]) +"!"; } } end; OnWhisperGlobal: // Whisper anything to initialize settings message strcharinfo(0), strnpcinfo(1) +" : 'OnInit' label has been intialized."; OnInit: // Minerals setarray .mineral[0], 985, 984, 6224, 6223; // Jejelopy, Elunium, Oridecon, Bradium, Cranium setarray .amount[0], 1, 1, 1, 1; // Amount to mine // Success rate: (x / y)% chance setarray .success[0], 1, 2, // 50% for Elunium 1, 2, // 50% for Oridecon 1, 4, // 25% Bradium 1, 4; // 25% Cranium //Example of calculation //1, 5, // 1/5 (20%) //1, 2, // 1/2 (50%) //4, 5, // 4/5 (80%) //1, 50; // 1/50 (2%) // Mining time (in seconds) - .progress need to be greater than from total .e_cast!! .progress = 3; // Equipment setarray .equip[0], 5009, 2218; // Safety Helmet, Flu Mask setarray .e_cast[0], 1, 1; // Progress bar reduce time. - .e_cast need to be smaller from total .progress!! // Tools setarray .tool[0], 7318, 7327; // Old Pick, Flashlight setarray .inventory[0], 1, 1; // Amount per tool // Audio/visual effects .sound$ = "chepet_attack.wav"; .effect = 4; // Debris .debris = 7049; // Stone .scatter = 5; // Debris amount end; }// Duplicatespay_dun00,55,147,0 duplicate(mining) Variant Mineral#2 1907pay_dun00,53,146,0 duplicate(mining) Variant Mineral#3 1907pay_dun00,53,145,0 duplicate(mining) Variant Mineral#4 1907pay_dun00,69,148,0 duplicate(mining) Variant Mineral#5 1907pay_dun00,70,147,0 duplicate(mining) Variant Mineral#6 1907pay_dun00,70,146,0 duplicate(mining) Variant Mineral#7 1907
  2. Upvote
    Litro got a reaction from mrlongshen in One click mining constant   
    try this, the part I added: while (1) from checking tools until the last proccess of mining and disable_items; in after the npc header
    /*=========================================================Variant Miningby Glitch [Via]===========================================================Request: http://herc.ws/board/topic/1886-simple-mining/===========================================================Description:A simple mining system; allows for interacting players toexcavate minerals by "mining" them with special equipmentand tools.Configuration is done in arrays so that settings may bechanged with no modifications to the script. Keep in mindthat each array value is respective to their commented set.Duplicate in additional locations as needed.=========================================================*/pay_dun00,54,147,0 script Variant Mineral#1::mining 1907,{ disable_items; // Check equipment for (.@i = 0; .@i < getarraysize(.equip); .@i++) { if (!isequipped(.equip[.@i])) { message strcharinfo(0), "You need to have '"+ getitemname(.equip[.@i]) +"' equipped to mine!"; .@unequipped++; } } // Show count of equipment not worn if (.@unequipped) { message strcharinfo(0), .@unequipped +" of "+ getarraysize(.equip) +" equipment has not been worn."; end; } while(1) { // Check tools for (.@i = 0; .@i < getarraysize(.tool); .@i++) { if (countitem(.tool[.@i]) < .inventory[.@i]) { message strcharinfo(0), "You need to bring "+ .inventory[.@i] +" "+ getitemname(.tool[.@i]) +" to mine!"; .@gearless++; } } // Show count of tools not in inventory if (.@gearless) { if (getarraysize(.tool) > 1) .@grammar$ = "tools were"; else .@grammar$ = "tool was"; message strcharinfo(0), .@gearless +" of "+ getarraysize(.tool) +" "+ .@grammar$ +" not brought."; end; } // Progress message strcharinfo(0), "Mining in progress..."; progressbar "green", .progress; // Delete tools for (.@i = 0; .@i < getarraysize(.tool); .@i++) delitem .tool[.@i], .inventory[.@i]; // Audio/visual effects soundeffect .sound$, 0; specialeffect .effect; // Drop random debris getmapxy(.@m$, .@x, .@y, 0); makeitem .debris, .scatter, .@m$, .@x + rand(2), .@y + rand(1,2); // Randomize target mineral to mine .@target = rand(getarraysize(.mineral)); // Max range of success .@range = .success[.@target * 2 + 1]; // Check if failed if(rand(1, .@range) != .success[.@target * 2]) { message strcharinfo(0), "Nothing valuable was excavated..."; end; } // Get mineral(s) getitem .mineral[.@target], .amount[.@target]; message strcharinfo(0), "You have successfully mined "+ .amount[.@target] +" "+ getitemname(.mineral[.@target]) +"!"; } end; OnWhisperGlobal: // Whisper anything to initialize settings message strcharinfo(0), strnpcinfo(1) +" : 'OnInit' label has been intialized."; OnInit: // Minerals setarray .mineral[0], 985, 984, 6224, 6223; // Jejelopy, Elunium, Oridecon, Bradium, Cranium setarray .amount[0], 1, 1, 1, 1; // Amount to mine // Success rate: (x / y)% chance setarray .success[0], 1, 2, // 50% for Elunium 1, 2, // 50% for Oridecon 1, 4, // 25% Bradium 1, 4; // 25% Cranium //Example of calculation //1, 5, // 1/5 (20%) //1, 2, // 1/2 (50%) //4, 5, // 4/5 (80%) //1, 50; // 1/50 (2%) // Equipment setarray .equip[0], 5009, 2218; // Safety Helmet, Flu Mask // Tools setarray .tool[0], 7318, 7327; // Old Pick, Flashlight setarray .inventory[0], 1, 1; // Amount per tool // Mining time (in seconds) .progress = 1; // Audio/visual effects .sound$ = "chepet_attack.wav"; .effect = 4; // Debris .debris = 7049; // Stone .scatter = 5; // Debris amount end; }// Duplicatespay_dun00,55,147,0 duplicate(mining) Variant Mineral#2 1907pay_dun00,53,146,0 duplicate(mining) Variant Mineral#3 1907pay_dun00,53,145,0 duplicate(mining) Variant Mineral#4 1907pay_dun00,69,148,0 duplicate(mining) Variant Mineral#5 1907pay_dun00,70,147,0 duplicate(mining) Variant Mineral#6 1907pay_dun00,70,146,0 duplicate(mining) Variant Mineral#7 1907
  3. Upvote
    Litro got a reaction from MikZ in NO ranger UNLIMIT SKILL   
    Server git revision: c35b94d
    - Server mode pre-renewal
     
    Client Files:
    - 2014.ini is Data.ini, Folder data & System is the latest pull from here

     
    SS:

  4. Upvote
    Litro got a reaction from minx123 in Help fix this script other one town invasion   
    set default value on the OnInit label
  5. Upvote
    Litro got a reaction from MikZ in NO ranger UNLIMIT SKILL   
    if you use it from there i sure you would get the updated version and it have the RA_UNLIMIT
    di you modify skill related file in db folder ? if yes check your skill_db.txt and skill_tree.conf if it was disabled or changed
  6. Upvote
    Litro got a reaction from MikZ in Modified IP Freebies   
    try this
    poring_w02,92,197,3 script Nadine#1 650,{ set .@n$, "[Nadine]"; setarray .@rwd[0], 25500, 1, 7; // Rewards: <item id>, <item amount>, <refine count> query_sql ("SELECT `last_ip` FROM `login` WHERE `account_id`=" + getcharid(3) + "", .@lip$); if ( getd("$" + .@lip$ + "_NG") > 0 || #NewbieGift > 0) { mes .@n$; mes "I'm sorry, the rewards are exclusively for new players."; mes "If your Playing in a Cafe Please do post your IGN in Shop Players section with your Group."; mes "Thank you!"; close; } mes .@n$; mes "Nice to meet you "+ strcharinfo (0) +", my name is Nadine"; mes "Welcome to ^E066FFFate RO!^000000"; mes "I see that you're new here so to help you out I'd like to give you these"; mes "items as a gift to show how much we appreciate you here!"; for ( set .@i, 0; .@i < getarraysize(.@rwd); set .@i, .@i + 3 ) mes .@rwd[.@i+1] + " x +"+.@rwd[.@i+2]"" + getitemname(.@rwd[.@i]); close2; set #NewbieGift, 1; setd "$" + .@lip$ + "_NG", getd("$" + .@lip$ + "_NG") + 1; // getitem2 <item id>,<amount>,<identify>,<refine>,<attribute>,<card1>,<card2>,<card3>,<card4>{,<account ID>}; for ( set .@i, 0; .@i < getarraysize(.@rwd); set .@i, .@i + 2 ) getitem2 .@rwd[.@i], .@rwd[.@i+1], 1, .@rwd[.@i+2], 0, 0, 0, 0, 0; announce "Let's welcome " + strcharinfo(0) + " for joining our server ! ",0; end;OnInit: waitingroom "Solo Pack Gift!",0; end;}
  7. Upvote
    Litro got a reaction from Like it~* in Rental NPC (with PAYMENT)   
    @@Quazi try this script: http://upaste.me/7bbc2166170cb9962
     
    - shop rental_shop -1,501:50prontera,150,150,4 script Rentals Shop 100,{ callshop "rental_shop", 1; npcshopattach "rental_shop"; end;OnBuyItem: dispbottom "Rentals Shop: You can only buy one item at once."; setarray .@q[0], @bought_nameid[0], @bought_quantity[0]; for (.@i = 0; .@i < getarraysize(.items_list); .@i++) { if (.@q[0] == .items_list[.@i]) { .@q[2] = .price_list[.@i]; } } mes .@npc_name$ = "[Rentals Shop]"; mes "Rental Item: "+getitemname(.@q[0]); mes "Rental Cost: "+.@q[2]+"x "+getitemname(.currency)+" for one day."; mes " "; mes "How many days do you want to rent it ?"; next; if (input(.@day, 1, 365)) { mes .@npc_name$; mes "Invalid input days.."; callsub ClearBought; close; } .@q[3] = .@day * .@q[2]; mes .@npc_name$; mes "Rental Item: "+getitemname(.@q[0]); mes "Rental Cost: "+.@q[3]+"x "+getitemname(.currency)+" for "+.@day+" day"+((.@day > 1) ? "s" : "")+"."; mes " "; mes "Still want to make the rent ?"; next; if (select("Yes:No") == 2) { mes .@npc_name$; mes "All right, "+callfunc("F_Bye"); callsub ClearBought; close; } if (countitem(.currency) < .@q[3]) { mes .@npc_name$; mes "I'm sorry, you haven't enought "+getitemname(.currency)+" to pay the rental"; callsub ClearBought; close; } if (!checkweight(.@q[0], .@q[1])) { mes .@npc_name$; mes "You need more space in your inventory."; callsub ClearBought; close; } delitem .currency, .@q[3]; // delete items rentitem .@q[0], .@day * 86400; // rent an items. 86400 = 1 day in seconds callsub ClearBought; end; ClearBought: deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); return;OnInit: // Configuration setarray .items_list, 1201, 1201, 1201; // items list that you want to sell. setarray .price_list, 100, 200, 300; // itens price that item you sell in the shop. .currency = 7227; // items that will be used as exchange currency // do not touch from here!! npcshopdelitem "rental_shop", 501; for (.@i = 0; .@i < getarraysize(.items_list); .@i++) npcshopadditem "rental_shop", .items_list[.@i], .price_list[.@i]; end;}
  8. Upvote
    Litro got a reaction from Kong in Plugin Collections   
    here the litle tips: all those s_xxxx.. annoying warnings in my plugin projects were disabled by me , coz I hate those by Angelmelody
  9. Upvote
    Litro reacted to shenhuyong in LuaDec for Lua 5.1.4 (A Easy and Super Powerful Lub->Lua Decompiler)   
    Hello everyone, now we can decompile 5.1.4 lub files to lua file by ourslaves.
    LuaDec for Lua 5.1.4, it's a easy and super powerful Lub->Lua decompiler, and it's a offline tool not like this one http://herc.ws/board/topic/2241-lub-lua-decompilernow-online/.
     
    step 1: Copy you lub file to the root directory.
    step 2: Using the notepad to edit “RUN ME.bat”, change the lub file's name as you copyied
    example: luadec accessoryid.lub > accessoryid.lua
    step 3: Save “RUN ME.bat” and close the notepad, run “RUN ME.bat”, you can find a decompiled lua file appear in the root directory.
     
    Download link:
    http://herc.ws/board/files/file/52-luadec-for-lua-514-a-easy-and-super-powerful-lub-lua-decompiler/
     
    Source code:
    http://code.google.com/p/luadec/
  10. Upvote
    Litro reacted to Dastgir in Plugin Collections   
    12th Ocotober:
    Added costumeitem plugin


    Update 2:
    Added Extended Vending System
    https://github.com/dastgir/HPM-plugins


    Edit: Forgot to mention,
    Extended Vending is autotrade persistent...
  11. Upvote
    Litro reacted to fxfreitas in [Showcase] FXFreitas Sprites   
    Hey there, no one known how I am here, but I'm a spriter and these are my Ragnarok Online Works:

    Zero (completaly made be Me)

     
    Valkyrie Project (almost complete, maybe in a close future I made a custom mob, Randgris Base)

     
    Berzebub (50% completed, Some bases are same ou similar has Hyperion Used on his version, like Weding Cloth)


    Diabolus Armor (PNG Version Lost)



    Half-Life RO Style (PNG Version Lost)

     
    Vesper-Mecha


    Vampire (Made be me and my brother)

     
    El Chapolin Colorado (homage)

     
    Mavis (fairy tail, one request from a Friend)


    Goku Head (original front view author missing, if you known or are him, tell me!)

     
    Evil Morocc Head (Human Version, from future ragnarok Episode)


    Yes I'm posting PNG images, Yes You can use it but give credits, No You can't claim it Yours. Diabolus Manteau can't be used for donate. Hairstyles can't be used for donate (hair change tickets, vip npc, etc)
  12. Upvote
    Litro reacted to ossi0110 in [Release] 2012-04-10 RagexeRE Full Client   
    Hello Hercules       im Realeasing a Full Client Package for the 2012-04-10     This Package Contains:   - Up to Date KRO Client ( updated till 2012-04-10 )   Can be found in Client Folder   Contains:   Latest Translation Files, Working AI Folders ,  YourRO.grf  with all importan Files , and a prediffed  YourRO.exe .  This exe is for testing . you can start the client whitout a error and ingame all is tranlated.     Data Folder contains a clientinfo.xml setted to localhost . but  best is to repack the YourRO.grf with your custom clientinfo.   All files inside this YourRO.grf are in a seperate folder called  YourRO.grf Data Stuff     - Tools Folder what contains all Importan files/Tools to create a Client.   contains:   ( Latest xDiffPatcher, Latest Nemo Patcher SVN , unbollox , ResHack , Mapcache Maker, grfbuilder , Undiffed Exe + Diffpatch)     - YourRO.grf Data Stuff Folder ,  where all importan Client files are in , Rdy to use lubs and translation ( All you need to get this client to work)     - I added a Profile for the Nemo patcher  with the name YourRO.log ,  this profile contains all important diffs to get this exe running.  How to use ?   ,  just open Nemo patcher  Load the exe and click on "Load Patches" , after that just click on "Load Profile" and select the YourRO.log file inside the Nemo folder , and  he will select all importan DIffs for you.             --------->DOWNLOAD HERE<----------    
  13. Upvote
    Litro got a reaction from zhaosin in How to protect Client ??   
    try reading this document it have explanation you need https://github.com/HerculesWS/Hercules/blob/master/doc/md5_hashcheck.txt
  14. Upvote
    Litro got a reaction from zhaosin in How to protect Client ??   
    you can use md5 hash feature to protect your game.exe being tampered
  15. Upvote
    Litro reacted to Tokeiburu in RO Installer Script (Inno Setup)   
    File Name: RO Installer Script (Inno Setup)
    File Submitter: Tokeiburu
    File Submitted: 17 Aug 2015
    File Category: Client Resources

    Heya!

    This 'release' is a very simple Inno Setup script to create Full or Lite client installers.

    It requires Inno Setup, which can be downloaded here : http://www.jrsoftware.org/isdl.php#stable. While installing Inno Setup, make sure the "Install Inno Setup Preprocessor" option is checked; otherwise you will get an "unknown option" error.

    How to make this work?
    Put your client files in either RO_Lite or RO_Full and then run the "_Make New Installer.bat" files. This will output a new installer called "YourRO Installer.exe".



    Customization
    Server name : open RO.iss and change the first line : #define ServerName "YourRO" The left image can be customized by editing background.bmp (or background.psd). The file format must remain a 24bit bmp. The wizard small image uses wizardSmallImage.bmp; the file format must remain 24bit as well. To add files to your installer, add them to the RO_Lite or RO_Full subfolders. Once you run the script, all the files in these folders will be packed in your installer. It can go over 2 GB, although if that's the case you might want to consider using the LZMA compression for your GRFs...! Install the VC++ Redistributable files (required by Harmony) silently. Open RO.iss and remove the semi-colon in front of "#define Harmony" to enable this option. By default, the necessary registry keys to start the game will be set if they aren't already. This is to avoid the "small window" issue people will have with older clients. The installer icon can be changed via installer.ico Uninstallating removes the entire RO folder, watch out (you can disable that). The default installer icon used comes from Lykos's icon pack, which can be found here : https://rathena.org/board/files/file/3190-s1-lykos-icon-pack/. It has been modified through hexing to allow the icon to be resizable by Windows Vista or more recent.

    Click here to download this file
  16. Upvote
    Litro got a reaction from u niver X in King Poring Recolor - First Time Recoloring   
    Hi everyone.. here my first time sprite recoloring work
     

     
    UPDATE:
    - Fix Die animation Recolor-king_poring.7z
    - adding King Ghostring
  17. Upvote
    Litro reacted to Emistry in Map Zone Expansion   
    { name: "Zone Name" disabled_skills: { RG_INTIMIDATE: "PLAYER" AL_TELEPORT: "PLAYER" SC_FATALMENACE: "PLAYER" SC_DIMENSIONDOOR: "PLAYER" } disabled_items: { Wing_Of_Fly: true } // Expansion of Classes limitation... (perhap based on BaseLevel would be good too?) disabled_classes: { Job_Knight: True Job_Blacksmith: True Job_Novie: True Job_Clown: True } // Expansion of Battle Conf settings ... battle_conf: { multi_level_up: yes base_exp_rate: 100000 job_exp_rate: 100000 mvp_exp_rate: 100000 quest_exp_rate: 100000 death_penalty_base: 100000 death_penalty_job: 100000 rare_drop_announce: 100 } },   
     
    I would like to suggest for map zone supporting these battle_conf and disabled_classes
    I think it's good to further customize settings and entry of a map.
     
    Example : Map A
    cant multi level up higher exp rate disabled novice enter etc Example : Map B
    can multi level up low exp rate only novice enter etc And yeah, some of these settings can be done by using mapflags, but some are not or it would be end up harder way to do it using npc script.
  18. Upvote
    Litro 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.

  19. Upvote
    Litro got a reaction from karazu in Remove delay of usable items?   
    isn't it there in battle conf ? in case it was, try to disable this https://github.com/HerculesWS/Hercules/blob/master/conf/battle/items.conf#L64
     
    // How much time must pass between item uses?// Only affects the delay between using items, prevents healing item abuse. Recommended ~500 ms// On officials this is 0, but it's set to 100ms as a measure against bots/macros.item_use_interval: 100
  20. Upvote
    Litro reacted to malufett in 'job_db1.txt' Redesign   
    @evilpunker
    sorry I've been busy this past days..if I have a chance next week I'll create a tool that will have many options for computing the table like:
    1st option use ea coefficient increase algorithm
    2nd option average increase algorithm
    3rd your own algorithm
     

  21. Upvote
    Litro reacted to malufett in 'job_db1.txt' Redesign   
    'job_db1.txt' Redesign
     
    What is it?
    The file has been upgrade to achieve 2 goals: make it easier for us to update the file and for our users to customize it better. The old hp/sp computation has been drop and replace by hp/sp tables. job_db.conf Format:
    Job_Name: { // Job names as in src/map/pc.c (they are hardcoded at the moment so if you want to add a new job you should add it there)     Inherit: ( "Other_Job_Name" );     // Base job from which this job will inherit its max weight, base ASPD set and HP/SP table.     InheritHP: ( "Other_Job_Name" );// Base job from which this job will inherit its HP table.     InheritSP: ( "Other_Job_Name" );// Base job from which this job will inherit its SP table.     Weight: Max Weight            (int, defaults to 20000, units in Weight/10)     BaseASPD: {                 // Base ASPD for specific weapon type         Fist: 0~200                (int, defaults to 200)         Dagger: 0~200            (int, defaults to 200)         Sword: 0~200            (int, defaults to 200)         TwoHandSword: 0~200        (int, defaults to 200)         Spear: 0~200            (int, defaults to 200)         TwoHandSpear: 0~200        (int, defaults to 200)         Axe: 0~200                (int, defaults to 200)         TwoHandAxe: 0~200        (int, defaults to 200)         Mace: 0~200                (int, defaults to 200)         TwoHandMace: 0~200        (int, defaults to 200)         Rod: 0~200                (int, defaults to 200)         Bow: 0~200                (int, defaults to 200)         Knuckle: 0~200            (int, defaults to 200)         Instrumen: 0~200        (int, defaults to 200)         Whip: 0~200                (int, defaults to 200)         Book: 0~200                (int, defaults to 200)         Katar: 0~200            (int, defaults to 200)         Revolver: 0~200            (int, defaults to 200)         Rifle: 0~200            (int, defaults to 200)         GatlingGun: 0~200        (int, defaults to 200)         Shotgun: 0~200            (int, defaults to 200)         GrenadeLauncher: 0~200    (int, defaults to 200)         FuumaShuriken: 0~200    (int, defaults to 200)         TwoHandRod: 0~200        (int, defaults to 200)         Shield: 0~200            (int, defaults to 0)     }     HPTable:[ 1, .... 150 ]        (int[]) Reference table for base HP per level      SPTable:[ 1, .... 150 ]        (int[]) Reference table for base SP per level     // Note: If table index size is smaller than the max level the server will automatically generate the missing index based on the average increase per level.} Benefit?
    You can now easily specify a class base weight, base aspd for specific weapon types and HP/SP per level. Lessen redundant entries and good for the eyes.. RE ASPD formula is improved to compatibly(less/no more conversion) accept aegis database. Tools?
    http://herc.ws/board/files/file/202-hercules-hpsp-table-generator/ Special Thanks to:
    Awesome @Yommy Best @Michi Incredible @Ind Nice @Beret Links
    Commit: https://github.com/HerculesWS/Hercules/commit/b59b9d1ab4c5a21081cdd2af126997ed7093d743 File: https://github.com/HerculesWS/Hercules/blob/master/db/re/job_db.conf
  22. Upvote
    Litro reacted to evilpuncker in 'job_db1.txt' Redesign   
    @@malufett
    any chance to make a config in order to we choose the old calculation instead? I guess that everyone that uses a higher level than the official one is having issues right now, or at least provide us a tool to generate new tables, or at least provide generated tables to 1000 lvl since our exp_db goes up to this...
     
    look what I'm talking about:
     
    vs 
  23. Upvote
    Litro got a reaction from estoudegreve in King Poring Recolor - First Time Recoloring   
    Hi everyone.. here my first time sprite recoloring work
     

     
    UPDATE:
    - Fix Die animation Recolor-king_poring.7z
    - adding King Ghostring
  24. Upvote
    Litro reacted to evilpuncker in Help how to remove Demon of the sun, moon and stars   
    I don't and I don't support getting advantage agains legal players xD
  25. Upvote
    Litro got a reaction from Yoh Asakura in Check item   
    try this if you want to..
    - script checkitem -1,{ end;OnPCLoadMapEvent: addtimer .timetocheck*1000,strnpcinfo(3)+"::OnCheckItem"; end;OnCheckItem: for (.@i = 0; .@i < getarraysize(.item_list); .@i++) { if (countitem(.item_list[.@i])) { mes "[^FF0000 Guard ^000000]"; mes "Sorry "+getitemname(.item_list[.@i])+" is not allowed in here!,"; close2; warp "prontera",150,150; end; } } addtimer .timetocheck*1000,strnpcinfo(3)+"::OnCheckItem"; end;OnInit: setarray .item_list, 607, 608; // add item you want to check here .timetocheck = 1; //Seconds after which idle is checked. end;}// Mapflagpvp_n_6-5 mapflag loadevent
×
×
  • Create New...

Important Information

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