Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 01/19/2021 in all areas

  1. 2 points
    Try this script https://upaste.me/r/a04e54027f405c652
  2. 1 point
    Here's my own experience, still not a pro but, maybe it could be useful to you. SERVER HOSTING For Learning - Digital Ocean as they offer a $100 worth of free credits, good for 2 months. - Down side if you wish this to be your main hosting provider, I believe they don't offer DDOS protection and mitigation out of the bat - Another good thing is they charge you on a usage basis, so if you wish to destroy the VPS you are not charged for the remaining month. For Going Live - OVH, I highly recommend this as they offer DDOS Protection and auto mitigation upon your purchase - You are automatically charged for the full month DOMAIN and WEB HOSTING - There are alot of domain hosting providers out there, but I suggest since you are still learning, get a web hosting provider that offers monthly billing and of course free SSL, one is HostMantis who offers free SSL. - You will need this for your registration if you go live, hence you can just turn on creation of new accounts on your game login window on your conf setup. - Flux CPanel is Free. GAMEGUARD - You got no other option but Gepard, contact Functor. AVG of $255 one time payment. - If you are still developing, you don't need this. DEV - Check third party services ADVERTISEMENT - Facebook is one of the best, You control your reach and daily spending - You can advertise your server here on rAthena. - Ratemyserver is another - and the top gaming sites which I'm not sure if they are still effective.
  3. 1 point
    Hello and welcome to the continued English translation project, started by @zackdreaver. Many may know already that zackdreaver stopped with his project and that I continued with it since then. See here. First of all thanks to zackdreaver for his time and passion, which he contributed so far with his project. But since there was no one else who had a project like his or someone who took his/her time to do all this work, I thought I could take over and learned the way to do it. The result can be found at this link: https://github.com/llchrisll/ROenglishRE I made a lot of progress so far regarding translations, skill rebalances and 2020 client support. Lately I also added the required files for pre-renewal, which still follows the same format as zackdreaver's ROEnglishPRE repo, by overwriting the renewal project files with the pre-renewal files. I also have an discord server setup for faster support, issue reporting and more. Link can be found at the repo above. The difference between these two projects is also how it is installed, but to make things easier I setup a wiki: https://github.com/llchrisll/ROenglishRE/wiki The actual guide can be found here: https://github.com/llchrisll/ROenglishRE/wiki/Project-Guide If you experience any trouble using this project, please use the discord server because I rarely visit the rAthena forum. Best regards, llchrisll aka Houndeye
  4. 1 point
    Go to: data/luafiles514/lua files/datainfo/spriterobeid.lub || spriterobename.lub
  5. 1 point
    Check these changes. I managed to make this work. Made some updates. getequipid(8) == 6010 && getequipid(6) == 5009 /* Author Goddameit Version 2013/02/06 Web http://bit.ly/MDuQ9F */ function script Minner_Main { if( getarg(0) == 2 ) { undisguise; if( strcharinfo(3) == "manuk" ) warp "SavePoint",0,0; end; } else if( strcharinfo(3) == "manuk" && getequipid(8) == 6010 && getequipid(6) == 5009 ) { if( getarg(0) == 0 ) disguise 1169; if( getarg(0) == 1 ) { set [email protected], rand(1000); if( [email protected] < 700 ) getitem 1002,1; else if( [email protected] >= 700 && [email protected] < 990 ) getitem 757,1; else getitem 756,1; specialeffect2 154; }else ; return; } else ; return; } - script Minnerx -1,{OnLill: set [email protected],1;OnInit: if([email protected])set [email protected],100; monster "manuk",0,0,"--ja--",1907,[email protected],"Minnerx::OnLill"; end; } I updated the Pickaxe, from bonus bAtkRate, -100, to bonus bAtkRate, -99. 6010,Pickaxe,Pickaxe,4,10,,10,10,,1,0,0xFFFFFFFF,7,0,34,0,0,0,0,{ bonus bAspd,-30; bonus bCritical,100; bonus bAtkRate,-99; autobonus "{ callfunc \"Minner_Main\",1; }",10000,1,BF_WEAPON; },{ callfunc "Minner_Main",0; },{ callfunc "Minner_Main",2; }
  6. 1 point
    Question, what class are you trying to level up? cause if you check the error it might be a skill_db issue as the pc_checkskill said its an invalid skill id or maybe you change something inside the src on skill.cpp.
  7. 1 point
    This does not mute the player but you can use this https://github.com/rathena/rathena/blob/f350de1e3149b6a60fddf88268443e611c2b4412/conf/battle/client.conf#L14
  8. 1 point
    This event script is from Mabuhay. I just modified it for additional - Event Cash Variable 1 - Event Cash Variable 2 - Event Cash Variable 3 I added also @checkpoints to check your remaining Event Cash Variable if you want to remove Event Cash Variable 3 just Remove or Put // : //setd $event_var3$, getd($event_var3$)+$event_var_gain3; Remove or Put // : //dispbottom "You gained "+$event_var_gain3+" "+$event_var_name3$+". You now have "+getd($event_var3$)+" "+$event_var_name3$+"."; Remove or Put // : //dispbottom "You currently have " +$event_var_gain3+ " Event Cash Variable 3"; Credits to @Mabuhay for his Event Script. Modified Mabuhay Event.txt
  9. 1 point
    View File New ThunderStorm I did this effect some time ago, I think it would be cool to share it. Submitter Froost Submitted 01/07/2021 Category Skill Animations Video Content Author Frost  
  10. 1 point
  11. 1 point
    All renewal features is close to kRO specially the re item_db.yml
  12. 1 point
  13. 1 point

    Version 1.0.0

    31 downloads

    My take on the @restock command. This script allows you to set a list of item to restock from your storage, for example 100 blue gemstones and 300 white potions. When using the command, a ticket item will be consumed to get the specified items from storage. This script is so that you'll always have the needed quantity of items in the list. for example, if you have 22 gemstones in your inventory and you use @restock, you'll get the 78 gemstones missing to the full 100 any feedback is appreciated.

    Free

  14. 1 point
    if you're talking about a certain boss monster, like a quest monster or so you can spawn that monster with a script and execute the reward command on the death trigger for example: - script boss_summoner -1,{ OnMobDead: addrid(1); getitem 909,1; end; OnInit: monster .map$,"--ja--",1002,1,strnpcinfo(3)+"::OnMobDead"; end; } if you're talking about all the field & dungeon boss monsters that spawn naturally, then you can try this: - script boss_rewards -1,{ OnNPCKillEvent: if(getmonsterinfo(killedrid, MOB_MVPEXP) > 1) { addrid(1); getitem 909,1; } end; }
  15. 1 point
    Here https://rathena.org/board/files/file/2379-npc-auction-system/
  16. 1 point
    Olá a todos! por muito tempo me dediquei ao ragnarok, aprimorando-o de alguma forma e depois de vários anos ganhei experiência de todos os lados, consigo entender o cliente perfeitamente, modificar feitiço entre tantas outras coisas muito legais, no final decidi criar o meu Brinco com todas as coisas que aprendi, e hoje está em desenvolvimento, mas hoje colocarei aqui a maior vitrine de todas as coisas que terminei ou converti para RO. aqui você vai encontrar sprites, monstros, efeitos e outros .. alguns eu fiz a pedido de algum cliente outros foram feitos só para o meu jogo. Efeitos: Tags: Monstros: Hp Bar custom Efeitos de LevelUp: Temas de danos: Itens / Auras: Asas 3d Outros: Vou postar mais coisas legais! obrigado
  17. 1 point
  18. 1 point
    my bad. it's searchstores with 's' i edited the comment
  19. 1 point
    - script whosell -1,{ OnWhoSellACMD: searchstores 99,1; end; OnInit: bindatcmd "whosell",strnpcinfo(0)+"::OnWhoSellACMD"; end; }
  20. 1 point
    I have a custom command but not in gui. working on latest diff https://github.com/coookie1010/Server-Patches
  21. 1 point
    This is what i did to my part last time I put the path of renewal item to my . Item_db.yml so it will load also the renewal item but you need to load first the renewal so the pre-renewal will overwrite the renewal.. By doing this you will get a lot of error from the max defense if you are using pre-re. And Zeny bug like "If you sell phracon you will get 6000 but you can just buy it for 5000. So you will earn 1k for just buy and sell thru out NPC ? I remove it manually to make it work when the YML introduce to rAthena.. To give you a sneak peak.. This is what i did to my item_db.yml pre-re server Header: Type: ITEM_DB Version: 1 Footer: Imports: - Path: db/re/item_db_etc.yml - Path: db/re/item_db_equip.yml - Path: db/re/item_db_usable.yml - Path: db/pre-re/item_db_usable.yml - Path: db/pre-re/item_db_equip.yml - Path: db/pre-re/item_db_etc.yml
  22. 1 point
    Disable Doram on your Client : data\luafiles514\lua files\service_korea\ExternalSettings_kr.lub MakeableRace = { Doram = true } change to: MakeableRace = { Doram = false } Coming Soon - Doram Replace this BMP. FIND : data\texture\À¯ÀúÀÎÅÍÆäÀ̽º\make_character_ver2.bmp Replace make_character_ver2.bmp to this new make_character_ver2.bmp on your GRF. I modified it credit to the person who owns this. Download link : img_doram_comingsoon.bmp Example :
  23. 1 point
    If this one doesnt help you. Try this. refine.txt
  24. 1 point
    Using logical operator AND (&&) instead of OR (||) for this code. AND && Operator OR || Operator: if (countitem(7060) < 1 && Zeny < 3000) if both are true. it will do the bracket of the IF statement. if any is false. it will skip the bracket
  25. 1 point
    you type the command @warp "mapname"
  26. 1 point
    Are you trying to call a function on a player picking loots and will automatically equipped?
  27. 1 point

    Version 1.0.0

    49 downloads

    WOODEN BUCKLE CUSTOM SHIELD Greetings again, rAthena! It's Haziel again, is it possible that this is the return of freebies? Up to 127 new Shield appearances can be added to most clients using @Neo-Mind's WARP software and the updated Custom Shield patch available as of 2021/01/19. So, for everyone to try that patch out, I decided to release the simplest of Shields, intended to be just a bit more than a simple pot lid. This Shield is compatible with all classes (4th Jobs included) and both genders. If you're interested on my work, feel free to contact me through one of the channels below: By downloading this file, you agree with my Terms of Service: • YOU WILL NOT remove my signature from any of the included files. • YOU WILL NOT alter, edit, recolour any of my files unless for your personal use. • YOU WILL NOT repost, repass or mirror my work nor edited versions of it anywhere. • YOU WILL NOT sell, resell or in any manner, ask money or rewards using my work as exchange. • YOU WILL NOT claim my work as yours.

    Free

  28. 1 point
    That might be an font issue
  29. 1 point
    [email protected] = 10; monster "prontera",0,0,"Quest Poring",1002,[email protected],"NPCNAME::OnPoringKilled"; copyarray [email protected]_gid, [email protected], [email protected]; for ([email protected] = 0; [email protected] < [email protected]; [email protected]++) { getunitdata [email protected]_gid[[email protected]], [email protected]; if ([email protected][UMOB_MODE] & MD_AGGRESSIVE) setunitdata [email protected]_gid[[email protected]], UMOB_MODE, ([email protected][UMOB_MODE] - MD_AGGRESSIVE); }
  30. 1 point
    Hi everyone, It's been a while since I've published something. Today I'm releasing the code of a patcher I've been working on for some time. The idea was to make an open-source drop-in replacement for the Thor patcher while also bringing some improvements. The project has been developed in Rust and the UI is based on the webview project. The patcher's current features are the following: Customizable, web-based UI Cross-platform (Windows 7/8/10, Linux, macOS) Configurable through an external YAML file HTTP/HTTPS support GRF file patching (version 0x101, 0x102, 0x103 and 0x200) THOR patch format support Drop-in replacement for the Thor patcher SSO login support (i.e., can act as a launcher) The project's repository can be found here: https://github.com/L1nkZ/rpatchur (and documentation can be found here). Contributions are welcome! Releases v0.2.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.2.0 v0.1.0: https://github.com/L1nkZ/rpatchur/releases/tag/v0.1.0
  31. 1 point
    Hey @sader1992, In this bit (line 29), I think you mistakenly reused [email protected] where you could've used something else like [email protected] It is, obviously, causing some problems when the categories have an item reward. if(getd(".IRD_" + [email protected])){ for([email protected]=0;[email protected]<getarraysize(getd(".IRD_" + [email protected]));[email protected]++){ getitem(getd(".IRD_" + [email protected] + "[" + [email protected] + "]"),getd(".CRD_" + [email protected] + "[" + [email protected] + "]")); } } I appreciate you rewriting this script, though. I find it more flexible than the previous version.
  32. 1 point

    Version 1.0.0

    69 downloads

    I did this effect some time ago, I think it would be cool to share it.

    Free

  33. 1 point

    Version 1.0.0

    291 downloads

    Please - Do not remove credits - I do not authorize the sale of this launcher Content - Thor Patcher [CODED] - PSD Project - PHP Files Server Status + RSS Feed - This file has a configuration guide Guide.txt Buy me a Coffe *u* Support Discord: єℓƒιη#9444 Powered by @Aeomin & Design @Elfin Enjoy and happy holidays

    Free

  34. 1 point
    I will share this revert of magnum break duration2 effect. The ancient behavior of this mood is: The after-skill cast, provides a 10 seconds duration2 buff; this duration2 imbues the caster with a 20% Fire damage element "perfect hit" "(Never Miss)" "(Flee Ignoring)" . While fighting ghost monsters you may miss your total attack but you will hit with the 20% damage. While figthing high flee monsters like wanderman you can use magnum and buff youself, and then apply the stun with bash (fatalblow). Always hit, this is intended for pre-renewal servers. How to change? Go the scr/map/battle.cpp if (sc && sc->data[SC_WATK_ELEMENT] && (wd->damage || wd->damage2)) { // Descriptions indicate this means adding a percent of a normal attack in another element. [Skotlex] above the line 3015, this part: // Descriptions indicate this means adding a percent of a normal attack in another element. [Skotlex] remove "&& (wd->damage || wd->damage2)" It should end like this: if (sc && sc->data[SC_WATK_ELEMENT]) { // Descriptions indicate this means adding a percent of a normal attack in another element. [Skotlex] After this change is made, compile the server and test the reverted behavior, heres the picture, hitting ghost during the skill duration2.
  35. 1 point

    Version 1.1.1

    509 downloads

    Ehh since my event scripts are piling up, I decided to make an Event Manager // Basic Event Manager // By Mabuhay /*-=-=-=-=-=-=-=-=-=-=-=-=-=- Currently added are the ff : {#} NAME - "NPC_NAME" [1] Bombring - "Event_Bombring" [2] Dice - "Event_Dice" [3] Last Man Standing - "Event_LMS" [4] Novice V Zombie - "Event_NvZ" [5] Poring Catcher - "Poring_Catcher" [6] Poring Hunter - "Poring_Hunter" (Added 12-15-2019) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ // For easier management of Event NPCs ///////////////////////////////////// // NOTE: // ///////////////////////////////////// // I don't support any modifications unless I want to. // But if you want to change things especially the rewards, // Please refer to my F_Reward Functions // https://rathena.org/board/files/file/4068-itemvariablepoints-reward-function-for-beginners-or-lazy/ // You should be able to easily change the rewards // If you have basic scripting knowledge Header Settings: OnInit: // 1 = item reward // 2 = variable/cashpoints reward // If you want to set item and variable/cashpoints rewards, do 1|2. // If you only want 1, just choose between 1 or 2 $event_options = 1|2; // If item reward enabled // What items will be rewarded setarray $event_item_reward, 501, 10, 502, 5; // If variable reward.. set to your variable. // If cashpoints.. set to #CASHPOINTS / #KAFRAPOINTS (Free Cash Points) $event_var$ = "#EVENTVARIABLE"; // Variable name? // If cash points, set to Cash Points // If your custom var, set to the name of that thing. $event_var_name$ = "Custom Points"; // How much points gain if #VAR / #CASHPOINTS / #KAFRAPOINTS? $event_var_gain = 1; $event_item_arr = getarraysize($event_item_reward); // @eventstart for GM bindatcmd "eventstart", strnpcinfo(0)+"::OnStart",60,60; // @eventjoin bindatcmd "eventjoin", strnpcinfo(0)+"::OnJoinEvent"; end; You may now use @eventstart for GMs to select which ones to start. @eventjoin for players to enter and see which event is currently active Event timers / Clock are to be set here : // OnClock<hour><minute>: donpcevent "<npc_name>::OnStart"; OnClock0000: donpcevent "Event_Bombring::OnStart"; end; //----- 12 mn OnClock0100: donpcevent "Event_Dice::OnStart"; end; OnClock0200: donpcevent "Event_LMS::OnStart"; end; OnClock0300: donpcevent "Poring_Catcher::OnStart"; end; OnClock0400: donpcevent "Event_NvZ::OnStart"; end; OnClock0500: donpcevent "Poring_Hunter::OnStart"; end; OnClock0600: donpcevent "Event_Bombring::OnStart"; end; //----- 6 am OnClock0700: donpcevent "Event_Dice::OnStart"; end; OnClock0800: donpcevent "Event_LMS::OnStart"; end; OnClock0900: donpcevent "Poring_Catcher::OnStart"; end; OnClock1000: donpcevent "Event_NvZ::OnStart"; end; OnClock1100: donpcevent "Poring_Hunter::OnStart"; end; OnClock1200: donpcevent "Event_Bombring::OnStart"; end; //----- 12 nn OnClock1300: donpcevent "Event_Dice::OnStart"; end; OnClock1400: donpcevent "Event_LMS::OnStart"; end; OnClock1500: donpcevent "Poring_Catcher::OnStart"; end; OnClock1600: donpcevent "Event_NvZ::OnStart"; end; OnClock1700: donpcevent "::OnStart"; end; OnClock1800: donpcevent "Event_Bombring::OnStart"; end; //----- 6 pm OnClock1900: donpcevent "Event_Dice::OnStart"; end; OnClock2000: donpcevent "Event_LMS::OnStart"; end; OnClock2100: donpcevent "Poring_Catcher::OnStart"; end; OnClock2200: donpcevent "Event_NvZ::OnStart"; end; OnClock2300: donpcevent "Poring_Hunter::OnStart"; end; //----- 11 pm Currently I just alternately activate events per hour. You can change the event time as you wish. You may choose any of the ff: OnClock<hour><minute>: OnMinute<minute>: OnHour<hour>: On<weekday><hour><minute>: OnDay<month><day>: I hope this helps. If you want me to add more, just PM me on an event script that needs to be updated. Thank you. Compatibility is your responsibility. No backward Compatibility Support. Enjoy! NOTE : If you find this useful, please click the Upvote button to motivate me to do stuffs like this And you are welcome!

    Free

  36. 1 point
    HG files doesn't share the same with ROBE files. Unless you did do the first 5 steps correctly, you shouldn't have this problem.
  37. 1 point

    Version 1.0.0

    949 downloads

    SKIN; STATUS SERVER; RSS FEED; PSD; GUIDE RSSFEED Webfiles\status\inc\rssConfig.php 'news' => 'http://g1.globo.com/dynamo/carros/rss2.xml', 'event' => 'http://g1.globo.com/dynamo/ciencia-e-saude/rss2.xml', 'update' => 'http://g1.globo.com/dynamo/concursos-e-emprego/rss2.xml', STATUS SERVER Webfiles\status\status.php $status = new ServerStatus( "LOCALHOST", "LOCALHOST", "USERNAME", "PASSWORD", "DATABASE" ); Do not remove the credits, thank you. Please do not sell this product. Design Elfin

    Free

  38. 1 point
    Greetings, everyone. New content for Valentine's Day were added: Valentine's Day 32bit Headgear Auras All of them available in 12 colours. And if you haven't had the time, I've also recently added a new freebie:
  39. 1 point

    1,201 downloads

    Original Topics : TW Gamer Forum Give credits to original author in the forum / like their topics if you like their artworks.

    Free

  40. 1 point

    Version 1.1

    3,140 downloads

    Hey there, I thought this could come in handy for the people who like to use Notepad++. This is a custom Syntax Highlighter which I made for rAthena. For those who don't know what Notepad++ is, it is a text editor for Windows. It allows working with multiple files opened at once (in different tabs), and it's free. NEW UPDATED GUIDE FOR INSTALL & USE A screenshot of some code (green obfuscated text (I did it with an image editor) is string) Hope this comes in handy

    Free

  41. 1 point
  42. 1 point
    Okay, Here it is: Map data.rar Sprite sdata.rar Database database.rar Hmm? try @reloadscript Please report any bug or error found, Thank you!
  43. 1 point
    For the 2nd and third option you can use // Checks if the Turtle General Card is inside your inventory by seeing if the item count for the Item ID 4305 ( Turtle General Card ) is greater than zero. if(countitem(4305) > 0) { mes "Can't allow you to continue"; close; } // Checks if Equiped item has the turtle general card equiped for each individual slot ( 1-4 ) // If the ID of CARD SLOT of Equiped Item Position (2 = Weapon I believe ) is equal to 4035 ( Turtle General Card ID ) // I made it check all four card positions, First, Second, Third, and Fourth // If the the Equiped Item at Position 2 ( Weapon's Position ) Card Slot's Item ID is Equal to 4035 // I reworded this so that it matches the argument positions... if(getequipcardid(2,0) == 4305 || getequipcardid(2,1) == 4305 || getequipcardid(2,2) == 4305 || getequipcardid(2,3) == 4305) { mes "Can't allow you to continue"; close; } Script Command Information *getequipcardid(<equipment slot>,<card slot>) Returns value from equipped item slot in the indicated slot: getequipcardid(num,slot) where: num = equip position slot slot = 0,1,2,3 (Card Slot N) This func returns CARD ID, 255,254,-255 (for card 0, if the item is produced) it's useful when you want to check item cards or if it's signed. Useful for such quests as "Sign this refined item with players name" etc; Hat[0] +4 -> Player's Hat[0] +4 For your first one, you'd have to do an inventory check by using getinventorylist and have it check each individual item to see any of them has the card inside them. I think you would want to use these predefined arrays to search for them though. I'll test it myself later when I have time to see if it works. PREDEFINED ARRAYS @inventorylist_card1[] - These four arrays contain card data for the items. @inventorylist_card2[] These data slots are also used to store names @inventorylist_card3[] inscribed on the items, so you can explicitly check @inventorylist_card4[] if the character owns an item made by a specific ---> Edit I managed to find time and test the script for the getinventorylist This will check all items in your inventory if they have a card inside the card slots that is a Turtle General Card ( Item ID 4305 ) // While [email protected] is less than the amount of items inside your inventory... // Check if any of the items has the item ID 4305 inside card position 1; // Same goes for the rest of the positions. // set [email protected], [email protected] +1 to increment by one in value every time the while loop is run. ( 1... 2... 3... until value is GREATER than inventory count ) // The maximum times it will run is the amount of items you have inside your inventory. // Once the value of [email protected] is GREATER than the amount of items inside your inventory, // it'll break out of the loop and continue whatever additional script lines you add in. while ( [email protected] < @inventorylist_count ) { if (@inventorylist_card1[[email protected]] == 4305 || @inventorylist_card2[[email protected]] == 4305 || @inventorylist_card3[[email protected]] == 4305 || @inventorylist_card4[[email protected]] == 4305){ mes "Can't allow you to continue."; close; } set [email protected], [email protected] + 1; } // Once loop is finished, it will continue here. mes "Thank you Evelynn (:"; close; Sorry for making you read all this if you did. I am trying to explain to you what is going on inside the script so that you will be able to learn for future use. Other than that, good luck (:.
  44. 1 point
    I'd recommend displaying the item IDs as well as names in the window, and using 'input' instead of 'menu' since you'd likely get huge menus that are hard to find things in. xP mes "Your inventory:"; getinventorylist; for(set [email protected],0; [email protected]<@inventorylist_count; set [email protected],[email protected]+1) mes "[ "[email protected]_id[[email protected]]+" ] "+getitemname(@inventorylist_id[[email protected]])+" x"[email protected]_amount[[email protected]]; next; input [email protected]; if (getitemname([email protected]) != "null") { if (countitem([email protected])) { input [email protected]; if ([email protected] && countitem([email protected]) >= [email protected]) { delitem [email protected],[email protected]; mes getitemname([email protected])+" x"[email protected]+" deleted."; close; } else { mes "Invalid amount "[email protected]+"."; close; } } } mes "Invalid input "[email protected]+"."; close; Or better yet, invoke the atcommands @itemlist / @delitem if you want to save yourself work. (Not that it matters since I gave you the script, but in the future... XD)
  • Newsletter

    block_newsletter_signup
    Sign Up
×
×
  • Create New...

Important Information

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