Jump to content

AnnieRuru

Script Developers
  • Content Count

    1677
  • Joined

  • Last visited

  • Days Won

    245

Reputation Activity

  1. Upvote
    AnnieRuru got a reaction from MikZ in Gvg Event convert to Hercules   
    https://gist.github.com/AnnieRuru/834aac8736731d45877e7f85d2666969
    I don't have gepard, so I turned it off
     
    bruh ... I just wanted to convert this script I just made in rathena yesterday
    then I see a VERY similar script shows up here in hercules <_<
  2. Like
    AnnieRuru reacted to evilpuncker in Just trying to figure out. Anyone knows which client is this?   
    Use client 2019-05-30 and you should be fine, I'm using 2020-02-06aRagexe right now with no issues btw
     
    you can download them here:
    http://nemo.herc.ws/
  3. Like
    AnnieRuru reacted to Ai4rei in Hex to enable /nc in WoE   
    As per private request, patches for 2015-09-16aRagexe (unpacked):
    // long jmp (1) F:85C00F85????FFFF6A11 R:85C00F85000000006A11 // short jmp (3) F:85C075??6A11 R:85C075006A11 Which is basically the same, as above, except that the long jmp is negative. For wild-card impaired hex-editors the patches are:
    F:85C0752F6A11 R:85C075006A11 F:85C075396A11 R:85C075006A11 F:85C00F8528FEFFFF6A11 R:85C00F85000000006A11 F:85C0752F6A11 R:85C075006A11 The key sequence for this patch is:
    CALL <150916A.CSession::IsSiegeMode> TEST EAX,EAX JNZ <150916A.+??> PUSH 11 ; /Key = VK_CONTROL CALL NEAR EBX ; \GetAsyncKeyState Where the call to GetAsyncKeyState may take various forms.
  4. Like
    AnnieRuru got a reaction from Naruto in skill mob rate not working properly   
    { Id: 1001 SpriteName: "SCORPION" Name: "Scorpion" Lv: 16 Hp: 153 Sp: 1 Exp: 108 JExp: 81 AttackRange: 1 Attack: [33, 7] Def: 16 Mdef: 5 Stats: { Str: 12 Agi: 15 Vit: 10 Int: 5 Dex: 19 Luk: 5 } ViewRange: 10 ChaseRange: 12 Size: "Size_Small" Race: "RC_Insect" Element: ("Ele_Fire", 1) Mode: { CanMove: true CastSensorIdle: true CanAttack: true Detector: true ChangeTargetMelee: true ChangeTargetChase: true } MoveSpeed: 200 AttackDelay: 1 AttackMotion: 1 DamageMotion: 1 MvpExp: 0 Drops: { Boody_Red: 70 Scorpions_Tail: 5500 Elunium_Stone: 57 Solid_Shell: 210 Fine_Grit: 100 Yellow_Herb: 200 Lusty_Iron: 20 Scorpion_Card: 1 } }, SCORPION: { NPC_FIREATTACK: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 2000 Delay: 5000 Cancelable: true SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } NPC_POISON: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 500 CastTime: 800 Delay: 5000 SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } NPC_POISONATTACK: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 500 CastTime: 300 Delay: 5000 SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } MO_EXTREMITYFIST: { SkillState: "MSS_ANY" SkillLevel: 5 Rate: 10000 CastTime: 0 Delay: 0 SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } } you also need to lower monster's AttackDelay and AttackMotion for the monster to cast skill faster too
  5. Upvote
    AnnieRuru reacted to xJhay in Freebie npc with unique id   
    //===== rAthena Script ======================================= //= Freebies NPC with Gepard Function supported //===== By: ================================================== //= BeWan //https://rathena.org/board/profile/62232-bewan/ //===== Current Version: ===================================== //= 1.0 //===== Description: ========================================= //= this freebies npc is supported gepard function " unique_id " //= you can add multiple reward items //============================================================ prontera,150,150,4 script Freebies NPC 123,{ .@unique_id$ = get_unique_id(); if(getd("$ID_" + .@unique_id$) > 0 || #FreebiesReward > 0){ mes "[Freebies NPC]"; mes "You have already claimed your Freebies."; close; } mes "[Freebies NPC]"; mes "Here's your Freebies. Have a nice day!"; setd "$ID_" + .@unique_id$,1; #FreebiesReward = 1; $freebies_count -= 1; for (.@i = 0; .@i < getarraysize(.items); .@i += 2) getitem .items[.@i],.items[.@i+1]; if ($freebies_count == 0) $reward_status = 1; end; OnInit: setarray .items, 501,10,502,10; end; }  
    I see this one on rathena, maybe he's referring to this one.
  6. Like
    AnnieRuru reacted to Hadeszeus in Just trying to figure out. Anyone knows which client is this?   
    Thanks for answering. Glad to know you're still here and active @evilpuncker. Still remember you! Hahah thanks!
  7. Like
    AnnieRuru got a reaction from Hadeszeus in skill mob rate not working properly   
    { Id: 1001 SpriteName: "SCORPION" Name: "Scorpion" Lv: 16 Hp: 153 Sp: 1 Exp: 108 JExp: 81 AttackRange: 1 Attack: [33, 7] Def: 16 Mdef: 5 Stats: { Str: 12 Agi: 15 Vit: 10 Int: 5 Dex: 19 Luk: 5 } ViewRange: 10 ChaseRange: 12 Size: "Size_Small" Race: "RC_Insect" Element: ("Ele_Fire", 1) Mode: { CanMove: true CastSensorIdle: true CanAttack: true Detector: true ChangeTargetMelee: true ChangeTargetChase: true } MoveSpeed: 200 AttackDelay: 1 AttackMotion: 1 DamageMotion: 1 MvpExp: 0 Drops: { Boody_Red: 70 Scorpions_Tail: 5500 Elunium_Stone: 57 Solid_Shell: 210 Fine_Grit: 100 Yellow_Herb: 200 Lusty_Iron: 20 Scorpion_Card: 1 } }, SCORPION: { NPC_FIREATTACK: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 2000 Delay: 5000 Cancelable: true SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } NPC_POISON: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 500 CastTime: 800 Delay: 5000 SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } NPC_POISONATTACK: { SkillState: "MSS_BERSERK" SkillLevel: 1 Rate: 500 CastTime: 300 Delay: 5000 SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } MO_EXTREMITYFIST: { SkillState: "MSS_ANY" SkillLevel: 5 Rate: 10000 CastTime: 0 Delay: 0 SkillTarget: "MST_TARGET" CastCondition: "MSC_ALWAYS" } } you also need to lower monster's AttackDelay and AttackMotion for the monster to cast skill faster too
  8. Upvote
    AnnieRuru got a reaction from Kuroyama in No treasure box when using @reloadscript   
    https://gist.github.com/AnnieRuru/aef19ddbaf2bd1f432bd53ea78a32d5d
    this should work, didn't test though
  9. Like
    AnnieRuru reacted to raPalooza~ in [Showcase] Custom mob HP bar   
    It's not only data modification but a whole lot of code behind it ^^ just to clarify. 

    Forgot i posted this here. Ive done a bunch of iterations on this project.
    The coding part is very easy, You could just change the clif_ where the original HP is updated checking for mob hp and load the hateffect id on the mob....

    I think the most dificult part is .lua + design of the bars itself.



     
  10. Like
    AnnieRuru got a reaction from evilpuncker in Two small requests about mob_dead function   
    plugin ... please no source edit, hercules member please don't edit source code by any means necessary
    https://github.com/AnnieRuru/Release/blob/master/plugins/rare_drop_announce.c
     
     
    try write a plugin yourself ?
  11. Like
    AnnieRuru got a reaction from evilpuncker in Item drop with random refine level/card   
    update plugin -> https://github.com/AnnieRuru/Release/blob/master/plugins/addrefinedrop/addrefinedrop_0.3.c
    along with healer script for testing -> https://github.com/AnnieRuru/Release/blob/master/scripts/Utility/healer/healer_1.2.txt
     
    nope, but we can just struct item_data of the nameid to get the data of that item
    1.4 - https://github.com/AnnieRuru/Release/blob/master/plugins/addrefinedrop/addrefinedrop_0.4.c
    - if the item is non-refine-able, it doesn't drop refined items
  12. Like
    AnnieRuru got a reaction from evilpuncker in Item drop with random refine level/card   
    the cards can be done by retrieve the card ID from `item_db` SQL table, its not that hard to do
    https://github.com/AnnieRuru/Release/blob/master/plugins/addrefinedrop/addrefinedrop_0.2.c
    btw, this is simple stuffs ....
    PS: when testing, I turned on autoloot and using custom identifier script
  13. Like
    AnnieRuru got a reaction from evilpuncker in Promotional Code Script   
    you mean something like
    the first 500 players who redeem this code will get freebies !!
     
    this reminds me in real life e-wallet
    the first 100,000 customer who use this coupon code will get a discount when do online purchase
    terms and conditions apply blah blah
     
    once expire ... how ? can't redeem again even for other player ?
    isn't this feels stupid ... the code only used once ... if the GM advertise the code, everyone sees the code, but the code only use once .... =/
  14. Like
    AnnieRuru reacted to evilpuncker in Promotional Code Script   
    A few suggestions in case someone is going to make this script in the future:
     
    - redeem log viewer
    - 2 types of codes: one that can be used multiple times by different accounts, and one that can be used just once only by one account
    - add expiration date to codes, with default date to expire (i.e. 1 month) or undefined (infinite)
    - add announce (yes/no) when player redeem code
    - add delay to use npc (good to prevent multiple code uses and prevent spam/give chance to slower players)
    - better code generation (maybe even saving them on .txt file) being able to chose from random letters and numbers, to anything you want (i.e. mycode2020)
    - rewrite everything to getitembound as @AnnieRuru said
    - something like this:
    -> talk to npc
    -> chose code style (random generated or user input)
    -> chose code amount (amount of uses that it can be used)
    -> chose code type (by account or unique use)
    -> (if unique use: we need to add a "group" to the codes, for example: we generate a group of 5 unique codes, they all belong to a group (something to make them unique), so a player can only use one of the 5 codes from THAT group (we need this to make sure that a player alone doesn't use all the codes at once and others player don't have a chance) and the other 4 codes can still be used by other players)
    -> chose code reward (itemID - amount)
    - no more ideas
     
  15. Like
    AnnieRuru got a reaction from evilpuncker in Promotional Code Script   
    https://rathena.org/board/topic/115232-script-doesnt-recognize-spaces/?do=findComment&comment=344440
     
    seriously this is getting on my nerve whenever somebody bring this script up
    can't everyone just recognize this script is just bug as hell ?
     
    and promotion code can always bypass by players no matter how hard you try
    block by IP is just plain stupid
    better use getitembound instead of getitem so players will realize the reward item is bound to the account only
     
    and when the script made as getitembound, means this VERY OLD script is invalid to use in today's script method
     
    -------------------------------
     
    ok enough being grumpy,
    1. the SQL table has to be case-sensitive
    2. use varchar
    CREATE TABLE IF NOT EXISTS `reward_logs` ( `account_id` int unsigned NOT NULL default '0', `last_ip` varchar(16) NOT NULL, `code` VARCHAR(26) NOT NULL, `redeem_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `claim` INT NOT NULL, PRIMARY KEY (`code`) ) ENGINE = MYISAM; and I'm not fixing this script
     
    better just write a new one with *getitembound
  16. Like
    AnnieRuru got a reaction from Naruto in Promotional Code Script   
    https://rathena.org/board/topic/115232-script-doesnt-recognize-spaces/?do=findComment&comment=344440
     
    seriously this is getting on my nerve whenever somebody bring this script up
    can't everyone just recognize this script is just bug as hell ?
     
    and promotion code can always bypass by players no matter how hard you try
    block by IP is just plain stupid
    better use getitembound instead of getitem so players will realize the reward item is bound to the account only
     
    and when the script made as getitembound, means this VERY OLD script is invalid to use in today's script method
     
    -------------------------------
     
    ok enough being grumpy,
    1. the SQL table has to be case-sensitive
    2. use varchar
    CREATE TABLE IF NOT EXISTS `reward_logs` ( `account_id` int unsigned NOT NULL default '0', `last_ip` varchar(16) NOT NULL, `code` VARCHAR(26) NOT NULL, `redeem_time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `claim` INT NOT NULL, PRIMARY KEY (`code`) ) ENGINE = MYISAM; and I'm not fixing this script
     
    better just write a new one with *getitembound
  17. Upvote
    AnnieRuru got a reaction from Bringer in gold_rank not working (rathena)   
    so many rathena members here ... at least please put it on your profile so people like us don't have to do convert it again to rathena blah blah
     
    so many mistakes on your script
    1. the checkweight should check from the variable from the *input, if you put check on goldPoint then if players actually farm high amount they might forever said being overweight
    2. the overall ranking you put it this way
    for (.@i = 0; .@i < .@nb; ++.@i) mes "[ ^C6A518Gold Room Assistant^000000 ]"; mes (.@i +1)+". "+ .@name$[.@i] +" - "+ .@ppk[.@i] +" Kills"; should be this way
    mes "[ ^C6A518Gold Room Assistant^000000 ]"; for (.@i = 0; .@i < .@nb; ++.@i) mes (.@i +1)+". "+ .@name$[.@i] +" - "+ .@ppk[.@i] +" Kills"; 3. and the "your current rank" can be found on the pinned topic
    4. rathena don't support strcharinfo(PC_MAP), it just strcharinfo(3)
    5. finally its `Points` not `Kills`, this script gives random 1~3 points per kill, and the SQL table log in points not kills
     
    https://gist.github.com/AnnieRuru/88e558b500a6e4afe00b559e7dcacd1b
  18. Like
    AnnieRuru got a reaction from Bringer in Advance SQL commands   
    6. How to show the current rank of the player
    Question : This is the part of the script, output as below
    .@nb = query_sql("SELECT `name`, `kills` FROM `pvpladder` ORDER BY `kills` DESC LIMIT 5", .@name$, .@kills); for ( .@i = 0; .@i < .@nb; .@i++ ) mes "No."+(.@i+1)+" ["+ .@name$[.@i] +"] ~ "+ .@kills[.@i] +" kills"; No.1 [Alice] ~ 19 kills No.2 [Emily] ~ 11 kills No.3 [Irene] ~ 11 kills No.4 [Brittany] ~ 8 kills No.5 [Fiona] ~ 7 kills  2nd place and 3rd place has the same amount of kills, how do I make both of them display as 2nd place like this ?
    No.1 [Alice] ~ 19 kills No.2 [Emily] ~ 11 kills No.2 [Irene] ~ 11 kills No.4 [Brittany] ~ 8 kills No.5 [Fiona] ~ 7 kills  
    Answer :
    Method no.1: Convert the table into InnoDB will return the result faster. Allow to use OFFSET
    .@nb = query_sql("SELECT `name`, `kills`, FIND_IN_SET(`kills`, (SELECT GROUP_CONCAT(`kills` ORDER BY `kills` DESC) FROM `pvpladder`)) FROM `pvpladder` ORDER BY `kills` DESC LIMIT 5", .@name$, .@kills, .@rank); for ( .@i = 0; .@i < .@nb; ++.@i ) mes "No."+ .@rank[.@i] +" ["+ .@name$[.@i] +"] ~ "+ .@kills[.@i] +" kills"; Method no.2: This method return result faster than method 1 in huge table. Not allow to use OFFSET
    .@query$ = "SELECT `name`, IF(@d=t.`kills`, @r, @r:=@i), @d:=t.`kills`, @i:=@i+1 "; .@query$ += "FROM `pvpladder` t, (SELECT @d:=0, @r:=0, @i:=1)q "; .@query$ += "ORDER BY `kills` DESC LIMIT 5"; .@nb = query_sql(.@query$, .@name$, .@rank, .@kills, .@dummy); for ( .@i = 0; .@i < .@nb; ++.@i ) mes "No."+ .@rank[.@i] +" ["+ .@name$[.@i] +"] ~ "+ .@kills[.@i] +" kills"; .
    .
    Question : How do I show the current ranking of the player ?
    mes "Your kills -> "+ .@kills; mes "Your rank -> "+ .@rank; Answer :
    query_sql "SELECT `kills`, 1+(SELECT COUNT(1) FROM `pvpladder` t1 WHERE t1.`kills` > t2.`kills`) FROM `pvpladder` t2 WHERE `char_id` = "+ getcharid(0), .@kills, .@rank; Remember to index the `kills` field
     
    Reference : https://dba.stackexchange.com/questions/13703/get-the-rank-of-a-user-in-a-score-table
    .
     
  19. Like
    AnnieRuru reacted to evilpuncker in novice not available soul link   
    sorry, it has been way TOO LONG since I left RO 😁 I forgot about everything
  20. Like
    AnnieRuru got a reaction from evilpuncker in novice not available soul link   
    if(Class==Job_Novice || Class==Job_Novice_High) { mes "[ ^C6A518Linker^000000 ]"; mes "Sorry, not available to novice."; close; } what what ??
    Rebirth Spirit CAN be use on Novice High
    I just tested a soul linker can use Rebirth Spirit on a Level 40 Rebirth Novice, all stats adds +29
     
    it should be
    if (Class == Job_Novice || Class == Job_Baby) {  
  21. Like
    AnnieRuru reacted to Kuroyama in noitem plugin   
    Memory leak:

  22. Like
    AnnieRuru got a reaction from IndieRO in How to setup OFFLINE server for personal development use   
    Make your (offline) RO server in more than 5 hours - pun intended
    Hercules Link
    This Guide is intended for
    - Windows users
    windows sux, but 90% of the community still using windows, so I am targeting the majority of the members here
    - You want to contribute something back to the community
    if you just want to have fun by yourself, of course it's fine to use that 5 minute instant noodle guide
    BUT if you want to contribute to the community, you have to use LATEST server and software available
    ... which makes this guide outdated very fast
     
    Prelude: Determine your Windows Operating System type
    a. Windows Key -> Right Click on My Computer -> Select Properties
    https://github.com/AnnieRuru/customs/blob/master/server setup/prelude-1.png

    b. Determine your Operating System type
    I'm using Windows 7 Ultimate 64-bit system
    https://github.com/AnnieRuru/customs/blob/master/server setup/prelude-2.png
     
    Step 1: Download and Install TortoiseGit

    1a. Download TortoiseGit
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 1a.png
     
    1b. Installation
    next... next... next.. next... next.. next.. Install !!!
     
    1c. Create 2 new folders
    1 for Hercules, 1 for rAthena
    Right-click -> TortoiseGit -> Clone
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 1c.png
     
    1d. Download git 2.20.1
    you'll get this warning message
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 1d.png
    Open Git for Windows Website, Download it
    next... next... next.. next... next.. next.. Install !!!
     
    1e. Reposition git.exe
    This time go to TortoiseGit -> Settings
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 1e.png
    General tab -> Git.exe path
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 1e2.png
    C:\Program Files\Git\bin  
    1f. Download Hercules and rAthena
    Right Click on the folder, TortoiseGit -> Clone
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 1f.png
    https://github.com/HerculesWS/Hercules https://github.com/rathena/rathena  
    Problems might encounter during Step 1c,
    when it ask for a git.exe, you have to go to that git for windows site, and download that thing
    Problems might encounter during Step 1e,
    sometimes even though you have already install git2.20.1.exe, but it still couldn't find the git.exe file
    to solve it, Right-click -> TortoiseGit -> Settings, you get a warning, Click Ignore, then follow Step 1e
     
    Step 2: Download and Install Microsoft Visual Studio 2017
    Step 2a. Download Microsoft Visual Studio
    https://visualstudio.microsoft.com/downloads/
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2a.png
     
    Step 2b. Downloading ...
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2b.png
     
    Step 2c. Click Install Visual Studio Community 2017
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2c.png
     
    Step 2d. Load Hercules Project
    Double click Hercules-15.sln
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2d.png
    it says missing Windows 10 SDK 10.0.15063 ...
     
    Step 2e. Install individual component
    you can either let Visual Studio do its magic, or ...
    manually go to visual studio downloader ... click modify
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2e.png
    then select the component to install manually
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2e2.png
     
    Step 2f. Load rAthena Project
    Do the same thing by double clicking rAthena.sln,
    but this time rAthena project needs Windows 8.1 SDK and Windows Universal CRT SDK
     
    Both emulator has been compiled
     
    Problems might encounter during Step 2c
    if using Windows 7/8, after the download is complete, it install a windows update that might crash all the programs in your operating system
    this Parasite MUST be remove !!
    To do this, go to Control Panel -> Program and Features
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2g.png
    Click View Install Update tab
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2g1.png
    then find KB2882822 and remove this parasite from your computer immediately before restarting your computer
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2g2.png
    IF you are the unlucky soul and you can't start any .exe file .... there's still a fix
    Restart the computer in Safe Mode ...
    many answer around the Internet tells you to press F8 when Windows Logo shows up, but this doesn't work for me, I have USB keyboard
    so I found another method ... run System Configuration
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2h.png
    Select the [Boot] tab, then select Safe Mode.
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2h2.png
    this will make your windows always restart in safe mode until you turn it off
    then follow the above process, uninstall that windows update, deselect safe mode, restart computer again, now it should be back to normal
     
    Problems might encounter during Step 2f
    During compiling, if you see this in your Visual Studio
    fatal error C1083: Cannot open include file: 'corecrt.h': No such file or directory this means you are missing a component Windows Universal CRT SDK
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 2f.png
     
    Step 3: Download and Install MySQL 8.0
    Step 3a: Download MySQL 8.0
    https://dev.mysql.com/downloads/mysql/
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3a.png
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3a2.png
    actually, you can just click this -> https://dev.mysql.com/downloads/file/?id=480824
    I have 64-bit operating system, but this 32-bit installer works fine for me
     
    Step 3b. Install MySQL 8.0
    Select Custom
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3b1.png
    We only need 2 products, MySQL 8.0 and MySQL Workbench
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3b2.png
    Ready to Install
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3b3.png
    next... next.. Execute !! next.. next.. next..
    Account and Roles, type "1234" as password
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3b4.png
    click [Check]... next... next.. next... DONE !!
     
    Step 3c. Run MySQL Workbench
    Welcome to MySQL Workbench
    Double click the icon -> Click Connect
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3c.png
     
    Step 3d. Create a Schema
    Right click at the left side of the window
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3d.png
    and create a Database call Hercules. Remember change charset/collation to utf8
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3d2.png
     
    Step 3e. Install SQL Script for Hercules
    Set Hercules as default Schema
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3e.png
    load hercules/sql-files/main.sql file
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3e2.png
    copy into Query field, then Press Execute button
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 3e3.png
    repeat the same process again for log.sql file
     
    Step 3f. Install SQL Script for rAthena
    Set rAthena as default Schema
    install rAthena/sql-files/main.sql and the log.sql
     
    Problems might encounter during Step 3e.
    If you got a warning message that `ipbanlist` table creation failed, this has been reported -> hercules & rAthena
    that's why now we can only use utf8 charset
     
    Step 4: Connect MySQL to Hercules and rAthena
    Step 4a. Connect Hercules to MySQL
    Copy paste the import-tmpl folder, and rename it into import
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 4a.png
    then open each individual files and modify each one of them
    conf/import/char_server.conf
    char_configuration: { // Server name, use alternative character such as ASCII 160 for spaces. // NOTE: Do not use spaces or any of these characters which are not allowed in // Windows filenames \/:*?"<>| // ... or else guild emblems won't work client-side! server_name: "Hercules" // Information related to inter-server behavior inter: { // Server Communication username and password. userid: "qwer" passwd: "asdf" // Login Server IP // The character server connects to the login server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. login_ip: "127.0.0.1" // Character Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. char_ip: "127.0.0.1" } pincode: { enabled: false } } conf/import/map-server.conf
    map_configuration: { // Information related to inter-server behavior inter: { // Interserver communication passwords, set in the login server database userid: "qwer" passwd: "asdf" // Map Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. map_ip: "127.0.0.1" // Character Server IP // The map server connects to the character server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. char_ip: "127.0.0.1" } } conf/global/sql_connections.conf
    sql_connection: { // [INTER] You can specify the codepage to use in your mySQL tables here. // (Note that this feature requires MySQL 4.1+) //default_codepage: "" // [LOGIN] Is `userid` in account_db case sensitive? //case_sensitive: false // For IPs, ideally under linux, you want to use localhost instead of 127.0.0.1. // Under windows, you want to use 127.0.0.1. If you see a message like // "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)" // and you have localhost, switch it to 127.0.0.1 db_hostname: "127.0.0.1" db_port: 3306 db_username: "root" db_password: "1234" db_database: "hercules" //codepage:"" }  
    Step 4b. Change s1/p1 inter server connection password
    since hercules server hates you for using s1/p1, I change it into qwer/asdf then
    Here's how to do it ... Open MySQL Workbench, double click your current running MySQL connection
    Type "SELECT * FROM `login`;" , edit the field s1/p1, then click [Apply]
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 4b2.png
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 4b3.png
     
    Step 4c. connect rAthena to MySQL
    Copy paste the import-tmpl folder, and rename it into import
    then open each individual files and modify each one of them
    conf/import/char-conf.txt
    // Server name, use alternative character such as ASCII 160 for spaces. // NOTE: Do not use spaces or any of these characters which are not allowed in // Windows filenames \/:*?"<>| // ... or else guild emblems won't work client-side! server_name: rAthena // Login Server IP // The character server connects to the login server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. login_ip: 127.0.0.1 // The character server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. bind_ip: 127.0.0.1 // Character Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. char_ip: 127.0.0.1 // NOTE: Requires client 2011-03-09aragexeRE or newer. // A window is opened before you can select your character and you will have to enter a pincode by using only your mouse. // Default: yes pincode_enabled: no conf/import/inter-conf.txt
    // MySQL Login server login_server_ip: 127.0.0.1 login_server_port: 3306 login_server_id: root login_server_pw: 1234 login_server_db: rathena login_codepage: login_case_sensitive: no ipban_db_ip: 127.0.0.1 ipban_db_port: 3306 ipban_db_id: root ipban_db_pw: 1234 ipban_db_db: rathena ipban_codepage: // MySQL Character server char_server_ip: 127.0.0.1 char_server_port: 3306 char_server_id: root char_server_pw: 1234 char_server_db: rathena // MySQL Map Server map_server_ip: 127.0.0.1 map_server_port: 3306 map_server_id: root map_server_pw: 1234 map_server_db: rathena // MySQL Log Database log_db_ip: 127.0.0.1 log_db_port: 3306 log_db_id: root log_db_pw: 1234 log_db_db: rathena log_codepage: log_login_db: loginlog conf/import/login_conf.txt
    // The login server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. bind_ip: 127.0.0.1 conf/import/map_conf.txt
    // Character Server IP // The map server connects to the character server using this IP address. // NOTE: This is useful when you are running behind a firewall or are on // a machine with multiple interfaces. char_ip: 127.0.0.1 // The map server listens on the interface with this IP address. // NOTE: This allows you to run multiple servers on multiple interfaces // while using the same ports for each server. bind_ip: 127.0.0.1 // Map Server IP // The IP address which clients will use to connect. // Set this to what your server's public IP address is. map_ip: 127.0.0.1  
    Note: you can do the same for rAthena, change s1/p1 into qwer/asdf. rAthena doesn't *BEEP* when you use s1/p1 though
    simply add this line in both conf/import/char-conf.txt and conf/import/map_conf.txt then change it in MySQL Workbench
    // Server Communication username and password. userid: s1 passwd: p1  
    Read Also: What is Import folder, just scroll down to the bottom and read it
     
     
    Before going into next step, I want to stress enough and make sure you can get your server to connect to MySQL
    so try running run-server.bat to connect your hercules --OR-- rathena server to MySQL
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 4.5.png
    if you can't do it right, Open a New Topic in General Server Support
     
     
    problem might encounter during this step
    [SQL]: Client does not support authentication protocol requested by server; consider upgrading MySQL client This happens if you have previous version of MySQL installed on your computer, and upgrade into MySQL 8.0
    to fix this issue, run MySQL command line Client from start menu
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 4.5a.png
    then run these 2 commands seperately
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234'; FLUSH PRIVILEGES; https://github.com/AnnieRuru/customs/blob/master/server setup/Step 4.5b.png
     
    5. Download latest KRO Client and client translation files
    Step 5a. Download latest KRO from
    http://herc.ws/board/topic/15592-collection-official-full-clients-latest-kro/
    https://rathena.org/board/topic/106413-kro-full-client-2018-08-13-includes-bgm-rsu/ <-- I pick this
     
    // ========== THIS PART IS CONTROVERSIAL ===== BUT IT WORKS FOR ME ========
    Step 5b. Create another 2 folders
    let's name it Asheraf and zackdreaver ... the author of making client translation
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 5b.png
    then download their translation files by git clone them
    https://github.com/Asheraf/Translation https://github.com/zackdreaver/ROenglishRE  
    Step 5c. Download GRF Editor
    http://www.mediafire.com/file/aflylbhblrzpz0h/GRF+Editor+v1.8.2.7.zip <-- author forgot to update in that topic, mediafire link is latest one
     
    Step 5d. Compile GRF Editor
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 5d.png
    double click GRFEditor.sln
     
    Step 5e. Open GRF Editor file
    Navigate to the directory  \GRF Editor Sources v1.8.2.7\GRF Editor\GRFEditor\bin\Release and open GRF Editor.exe
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 5e.png
    I also wondering why the author makes the execution files hide so deep inside
     
    Step 5f. Drag the data folder from Asheraf client translation to new.grf
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 5f.png
    then save it as Asheraf.grf
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 5f2.png
     
    Step 5g. Repeat the process for zackdreaver translation
    Close Grf. New -> Grf, Drag the data folder from zackdreaver/Ragnarok/data to new.grf, then save it as zackdreaver.grf
     
    Now you have learn how to pack your own grf. You should have 2 new grf in client folder
     
    Step 5h. open data.ini in your ragnarok client and edit DATA.INI
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 5h.png
    [Data] 1=Asheraf.grf 2=zackdreaver.grf 3=rdata.grf 4=data.grf  
    Step 5i. Replace Asheraf/system folder into client/system folder
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 5i.png
     
    // ========== CONTROVERSIAL PART ENDS HERE ===== I'm sure many client experts having your doubts why I do like this ========
     
    A lot of problems can appear in this step, these problems also recent and changes with every client
     
    6. Create your own patch client
    Step 6a. Download latest nemo
    create another folder name nemo
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6a.png
    then git clone from this site
    https://gitlab.com/4144/Nemo  
    Step 6b. Find a suitable client patches
    http://nemo.herc.ws/downloads/
    Since I download KRO 20180813, I chose 2018-06-20eRagexeRe
     
    Step 6c. Open nemo.exe
    Click Browse to select your downloaded client patch, then select Load Client
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6c.png
     
    Step 6d. Use Recommend Settings
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6d.png
    1. forget the "Always call SelectKoreaClientInfo" error
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6d1.png
    2. DATA.INI
    3. system/itemInfo_Sak.lub <--- note: the Capital letter of Info_Sak ... nemo doesn't auto-detect capital letters
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6d3.png
    4. Always Load Korea ExternalSetting lua files
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6d4.png
    5. Read Data Folder first
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6d5.png
    6. Apply Selected
    Step 6e. Copy 2018-06-20eRagexeRE_patched.exe to the KRO client folder
     
     
    By this step, you should be able to load your own hexed client without throwing any error
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 6.5.png
    if you having problem in this Step 5 & 6, Open a New Topic in Client Support
     
    FINAL STEP - change PACKEVER
    #define PACKETVER 20180620  
    Hercules -> src\common\mmo.h
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 7a.png
     
    rAthena ->
    src\config\packets.hpp <--- original directory, don't edit here
    src\custom\defines_pre.hpp
    https://github.com/AnnieRuru/customs/blob/master/server setup/Step 7b.png
     
    Then Compile for a Final time
     
     
    After thought, there are still some minor annoyance and adjustment
    client/data/msgstringtable.txt (unpack it or just put at client/data/ folder)
    line 3262 Smooth# line 3458 There was an error when loading the data account settings. (Please restart to retry.)# change them into just a #
     
    Frequently Asked Question:
    Change Renewal into Pre-Renewal
    Hercules -> src/config/renewal.h
    rAthena -> src/config/renewal.hpp
     
    This guide will be feature and pin only for a few months ... while it last .... I guess
  23. Like
    AnnieRuru got a reaction from gidzdlcrz in View current token quest script   
    and what is token quest exactly ?
     
    this kind of topic .... I usually lock them up immediately because there are not enough explanation ...
     
     
    https://rathena.org/board/topic/124678-treasure-hunter-quests-regarding-the-taken-quest/
    I went over to rathena forum, you also just say "gimme your token quest script I saw on other server pls help" but you never say how your players gonna get token in the first place
  24. Like
    AnnieRuru got a reaction from raPalooza~ in @packetfilter   
    actually normal hit a monster send multiple packets
     
    let's put a ShowDebug on clif->send function
    src/map/clif.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/map/clif.c b/src/map/clif.c index 54c9869c3..38ac2ea1e 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -449,7 +449,7 @@ static bool clif_send(const void *buf, int len, struct block_list *bl, enum send else if (type == AREA_WOS || type == BG_WOS || type == BG_AREA_WOS) return true; } - +ShowDebug("source:%s buf:%d send_target:%d\n", (sd != NULL)? sd->status.name : "NULL", RBUFW(buf, 0), type); switch(type) { case ALL_CLIENT: //All player clients. iter = mapit_getallusers(); `@monster poporing` and hit it once, and here is what I get
    [Debug]: source:NULL buf:2248 send_target:2 [Debug]: source:AnnieRuru buf:156 send_target:2 [Debug]: source:NULL buf:2557 send_target:2 [Debug]: source:AnnieRuru buf:2248 send_target:2 [Debug]: source:NULL buf:156 send_target:2 [Debug]: source:AnnieRuru buf:2248 send_target:2 [Debug]: source:NULL buf:156 send_target:2 [Debug]: source:AnnieRuru buf:2248 send_target:2 analyze the packet
    2248 hex 0x8C8 is ZC_NOTIFY_ACT2 came from clif_damage function
    /// Sends a 'damage' packet (src performs action on dst) /// 008a <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.W <div>.W <type>.B <damage2>.W (ZC_NOTIFY_ACT) /// 02e1 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2) /// 08c8 <src ID>.L <dst ID>.L <server tick>.L <src speed>.L <dst speed>.L <damage>.L <IsSPDamage>.B <div>.W <type>.B <damage2>.L (ZC_NOTIFY_ACT2) /// type: @see enum battle_dmg_type /// for BDT_NORMAL: [ damage: total damage, div: amount of hits, damage2: assassin dual-wield damage ] static int clif_damage(struct block_list *src, struct block_list *dst, int sdelay, int ddelay, int64 in_damage, short div, enum battle_dmg_type type, int64 in_damage2) 156 hex 0x9c is ZC_CHANGE_DIRECTION came from clif_changed_dir function
    /// Updates body and head direction of an object (ZC_CHANGE_DIRECTION). /// 009c <id>.L <head dir>.W <dir>.B /// head dir: /// 0 = straight /// 1 = turned CW /// 2 = turned CCW /// dir: @see enum unit_dir static void clif_changed_dir(struct block_list *bl, enum send_target target) 2557 hex 0x9fd is unit_walkingType (src\map\packet_struct.h) ... couldn't find where this came from ... I rather don't touch this at the moment
     
    this means, whenever I attack something, it sends an attack animation and also updates the client to face the attacking source enemy
     
    so if we block ZC_CHANGE_DIRECTION for the monster, this will cause rogue's backstab to not function properly
     
    the answer is YES, block ZC_NOTIFY_ACT2
    here's the plugin `@filterattack`
    https://github.com/AnnieRuru/Release/blob/master/plugins/packetfilter/filterattack.c
     
    after tested it, `@filterattack 63` looks like everyone is standing still facing each other (remember ZC_CHANGE_DIRECTION packet is still sent)
     
     
  25. Like
    AnnieRuru got a reaction from evilpuncker in About dead / bloody branches   
    wait, I thought I answered this on rathena forum already ?
    https://rathena.org/board/topic/126009-deadbloody-branch-timer/
    same user name, I actually thought I helped a rathena member there
    if you come here and ask the same question again it means you are actually hercules user ?
     
    anyway hercules has plugin system that rathena don't, and rathena still hasn't implement plugin system yet, so here goes
    https://github.com/AnnieRuru/Release/blob/master/plugins/deadbranch_timerdelete/deadbranch_timerdelete.c
×
×
  • Create New...

Important Information

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