-
Content Count
1677 -
Joined
-
Last visited
-
Days Won
245
Reputation Activity
-
AnnieRuru got a reaction from kalabasa in Cluckers npc/custom/events
need to stretch my scripting skills a little bit, too long since I done any scripting
https://gist.github.com/AnnieRuru/4a87e0ab7451e671d0e3056aedd2a086
-
AnnieRuru got a reaction from IndieRO in Sample Questlog & Achievement script
this has nothing to do with stylist script, nor the showscript script command,
but rather the *setquestinfo script command
and I reproduce the problem with this topic, so move the post over here
https://github.com/HerculesWS/Hercules/issues/2431
and also can only reproduce with "@reloadscript" so it isn't ... too severe I guess,
because live server shouldn't use "@reloadscript" at all
-
AnnieRuru got a reaction from kalabasa in NPC with a Promo Code
hmm .. then how do the official server actually preventing players from using the SAME promotion code for multiple accounts ?
because when I was fixing the script on rathena forum... I already noticed this
1. each account can only clam once
2. each IP can only claim once <-- not safe
3. use *getitembound ... ok I have no objection
so I can abuse the system with,
1. after I got a promotion code, that can claim 10 times,
2. login an account, claim once ....
3. logout the game, restart the modem, shuffle your IP address
4. login another account, claim again
repeat 10 times
ok, let's say generate 100 different codes for 100 different donors... so they can use each code only once (limit 100 times)
means generating 100 different codes for each player ... this only makes the GMs confused which code has been used b4 ...
instead give out some gibberish word that you have sure which code is available, why not just give the item to them by let the player click on the npc ?
unless I can clear out these doubts, I'm not going to make this scripts ... seems exploitable ...
or maybe someone who actually has used this system b4, know how this system works, release a script for it so I can take a peek ...
because all the promotion npc on the forum(hercules/rathena) can be exploit in some way
prontera,155,185,5 script Reward/Compensation 1_F_MARIA,{ if ( #Compensation_June2018 ) { mes "you have claimed compensation"; close; } mes "We apologize for blah blah blah"; mes "so I give you a candy"; if ( !checkweight(Candy,1) ) { mes "hahaha you don't even has enough space to claim a candy hahaha"; close; } getitembound Candy, 1, 1; #Compensation_June2018 = 1; close; OnInit: OnHour00: if ( gettime(GETTIME_MONTH) == JUNE && gettime(GETTIME_DAYOFMONTH) >= 9 && gettime(GETTIME_DAYOFMONTH) <= 15 ) enablenpc strnpcinfo(0); else disablenpc strnpcinfo(0); end; } for me its a simple script ...
but now you actually struct me with an idea to actually write one that can configure the time and the prize given.......
-
AnnieRuru got a reaction from kalabasa in Castle Guild Member Limit
oh ok, you are partially right when it kick excess guild members
but it isn't the way you claimed that it count from other guild members
upon close inspection, @astralprojection script has 2 problems which is
1. if the player has multiple characters from the same account join the same guild, it count multiple times instead of 1, it doesn't extend the isloggedin into $@guildmembercid check
2. it checks as long as the guild member enter ANY CASTLE map, not that particular castle map
try this one
https://gist.github.com/AnnieRuru/339e268a8be5370fa7ae1aa2f856ca28
-
AnnieRuru got a reaction from futureknight in Dota PVP Ladder
yeah I bet everyone still using version 2.9, that outdated version from eathena
honestly there isn't much change with previous version, version 2.9 still works fine if you know how to fix it
Download: 3.6
hercules - script
rathena - script
soundeffect
if your server has custom animation sprite, remember to set .fix_custom_sprite to true
Questions:
when people ask to make modification to this script, it always comes down to these 2
1. monthly/weekly reset
ladder will reset monthly or weekly ... self explain
2. "@dotaannounce" off
hmm ... after talked to some people, they want the announcement set to global, but then some players want to see who are dead, and some players doesn't bother
and I also saw this is a custom modification ... can be made into this script but ... nah ... I'll do it when I feel like it
-
AnnieRuru got a reaction from Hyroshima in Change Equipment Skin
https://rathena.org/board/topic/117831-showcase-weapon-skin/.
https://github.com/rathena/rathena/issues/1779
got people ask how to do that ...
so I write a plugin for it
Download: 1.1
plugin
also need to add a file in conf/import/change_equipment_skin.conf
change_equipment_skin: ( { Type: "LOOK_WEAPON" ItemID: 24001 SkinID: 1238 }, //{ // Type: "LOOK_SHIELD" // ItemID: 24002 // SkinID: 2101 //}, ) When player equip a shadow weapon ID 24001, will show the weapon look 1238, which is Zeny_Knife
"@reloadequipmentskin" will reload this file ...
Note: yes, the clif->sendlook is extremely messy, I attempt to make this support change shield skin
but for dunno what reason, equip a shield telling the client changing LOOK_WEAPON ... WTF !!
if anybody knows how to make it support shield, I'm open to suggestion
-
AnnieRuru got a reaction from Hyroshima in hosting Hercules on Google Cloud with CentOS 8
Over the last few days I have been playing with Google Cloud services
because Google cloud currently offers $300 free credit upon signing up
yes, FREE $300 credit
and thus my journey trying to host hercules server on a VPS has begun
all you need is a valid Debit/Credit card number ...
of course you have to be an adult to try the hosting service ... right ?
oh and, don't worry, you can always cancel it anytime
after playing with it, I found the Windows option is too expensive, and thus trying to learn the Linux option
This guide is actually demonstrate by using a trash gmail account that can throw away later
I don't mind all the credentials are shown in the screenshot, when I click the Open topic button I have deleted this project on Google Cloud
Step 1. Download Putty and WinCP
https://www.putty.org/.
https://winscp.net/eng/download.php
Step 2. Run Google Cloud
2.1 login to your Google cloud project
https://github.com/AnnieRuru/customs/blob/master/server hosting/2.png
2.2 first you need to link your credit card to this google cloud
https://github.com/AnnieRuru/customs/blob/master/server hosting/3.png.
https://github.com/AnnieRuru/customs/blob/master/server hosting/4.png
select the billing option to the debit/credit number you input earlier
https://github.com/AnnieRuru/customs/blob/master/server hosting/5.png
this billing information is very important, you need to check this once in a while to stop unwanted services <-- please scroll to the right
2.3 pin these 3
- billing
- compute engine
- VPC network
https://github.com/AnnieRuru/customs/blob/master/server hosting/6.png
2.4 now time to create a VPS, select Compute Engine
https://github.com/AnnieRuru/customs/blob/master/server hosting/7.png
2.4.1
enter all the necessary information
1. the Virtual machine name
2. your nearest location
3. the spec of the machine
https://github.com/AnnieRuru/customs/blob/master/server hosting/8.png
PS: I tested the cheapest option, N1 series, f1 micro 614MB memory and E2 micro, 1GB memory
when compiling hercules later, putty just stop ... I think it run out of memory
... hercules should have mention a recommendation needs at least 2GB memory to run
2.4.2
4. Select Boot Disk as CentOS 8
https://github.com/AnnieRuru/customs/blob/master/server hosting/9.png
5. select allow HTTP and HTTPS
https://github.com/AnnieRuru/customs/blob/master/server hosting/10.png
2.4.3
6. Click Security tab
https://github.com/AnnieRuru/customs/blob/master/server hosting/11.png
needs to 'Enter public SSH key'
run Putty Key Generator and click Generate
https://github.com/AnnieRuru/customs/blob/master/server hosting/12.png
1. change the 'key comment' as it will become user name
2. save private key to desktop
3. copy the field
https://github.com/AnnieRuru/customs/blob/master/server hosting/13.png
paste into Google cloud
https://github.com/AnnieRuru/customs/blob/master/server hosting/14.png
2.4.4
select Networking tab
https://github.com/AnnieRuru/customs/blob/master/server hosting/15.png
create a static IP address
https://github.com/AnnieRuru/customs/blob/master/server hosting/16.png
choose standard tier
after everything done click [Confirm]
https://github.com/AnnieRuru/customs/blob/master/server hosting/17.png
and you get your virtual machine running
https://github.com/AnnieRuru/customs/blob/master/server hosting/18.png
2.5
once your server up and running
run Putty to connect to this server
https://github.com/AnnieRuru/customs/blob/master/server hosting/19.png
1. scroll down, expand 'SSH' to select 'Auth',
2. then load the file you saved earlier by PuttyGen
https://github.com/AnnieRuru/customs/blob/master/server hosting/20.png
3. enter the public IP address,
4. then click open
https://github.com/AnnieRuru/customs/blob/master/server hosting/21.png
it will prompt you with security alert, just click yes
2.6
login with your user name
https://github.com/AnnieRuru/customs/blob/master/server hosting/22.png
The very first command you should run is change the password
sudo passwd root ok Windows Users, don't freak out like me
there are no ******** when you input the password, this is Linux not Windows
just input normally ... and press Enter key, it works that way
https://github.com/AnnieRuru/customs/blob/master/server hosting/23.png
then do the same with your username
sudo passwd annie
3. update the OS and install all necessary product
3.1 run all these commands
sudo yum update sudo yum install gcc make mysql mysql-devel mysql-server pcre-devel git zlib-devel Transaction Summary ================================================================================ Install 89 Packages Total download size: 108 M Installed size: 395 M Is this ok [y/N]: Press 'Y' key
3.2
in the meantime, while this might take awhile, try login WinCP
https://github.com/AnnieRuru/customs/blob/master/server hosting/24.png
click new session, then click advance
https://github.com/AnnieRuru/customs/blob/master/server hosting/25.png
select 'Authentication' and load the Putty Gen file again
https://github.com/AnnieRuru/customs/blob/master/server hosting/26.png
just another warning
https://github.com/AnnieRuru/customs/blob/master/server hosting/27.png
3.3 Download Hercules
git clone https://github.com/HerculesWS/Hercules.git ~/Hercules
4. SQL
4.1 Start SQL service
sudo systemctl start mysqld.service
4.2 login as root
mysql -u root -p Enter password, just press enter
default centOS 8 preinstalled MySQL, root has no password
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.21 Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.3 create database
CREATE DATABASE hercules; 4.4 select hercules database as default
USE `hercules`; 4.5 create another user, not recommend to connect as root
CREATE USER 'annie'@'localhost' IDENTIFIED BY '1234'; 4.6 grant this user privilege
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'annie'@'localhost'; 4.7 then quit
quit it should show like this
mysql> quit Bye [annie@centos ~]$ 4.8 goto sql-files directory
cd /home/annie/Hercules/sql-files/ and run all these
mysql -u root -p hercules < main.sql mysql -u root -p hercules < logs.sql mysql -u root -p hercules < item_db_re.sql mysql -u root -p hercules < mob_db_re.sql mysql -u root -p hercules < mob_skill_db_re.sql it should show like this
[annie@centos ~]$ cd /home/annie/Hercules/sql-files/ [annie@centos sql-files]$ mysql -u root -p hercules < main.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < logs.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < item_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql Enter password: [annie@centos sql-files]$ 4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf
mysql -u root -p and
UPDATE `hercules`.`login` SET `userid` = 'qwer', `user_pass` = 'asdf' WHERE `account_id` = 1;
5. Compile Hercules
go back to annie/hercules folder
cd /home/annie/Hercules/ 5.1 type ./configure
./configure
OK STOP, many things can go wrong here, I stuck here for a few days and searching on both rathena and hercules forum for answers
the correct output from putty should be this
checking mysql.h presence... yes checking for mysql.h... yes checking whether my_bool is supported (MySQL)... no (converting my_bool to bool) checking MySQL library (required)... yes (8.0.21) checking PCRE library... checking pcre.h usability... yes checking pcre.h presence... yes checking for pcre.h... yes checking for library containing pcre_study... -lpcre checking for doxygen... no checking for perl... yes configure: creating ./config.status config.status: creating Makefile config.status: creating src/common/Makefile config.status: creating 3rdparty/mt19937ar/Makefile config.status: creating 3rdparty/libconfig/Makefile config.status: creating 3rdparty/libbacktrace/Makefile config.status: creating 3rdparty/libbacktrace/backtrace-supported.h config.status: creating src/char/Makefile config.status: creating src/login/Makefile config.status: creating src/map/Makefile config.status: creating src/plugins/Makefile config.status: creating src/test/Makefile config.status: creating tools/HPMHookGen/Makefile config.status: creating tools/doxygen/Makefile [annie@centos Hercules]$ if it doesn't show config.status: at the end, open a new topic in Linux support
if it's the same as mine, then can proceed with
5.2 compile hercules
make sql finally compile should show like this
CC party.c CC path.c CC pc.c CC pc_groups.c CC pet.c CC quest.c CC refine.c CC rodex.c CC script.c CC searchstore.c CC skill.c CC status.c CC storage.c CC stylist.c CC trade.c CC unit.c CC vending.c LD map-server make[1]: Leaving directory '/home/annie/Hercules/src/map' building conf/import folder... [annie@centos Hercules]$
6. configure Hercules
6.1 start hercules by
./athena-start start https://github.com/AnnieRuru/customs/blob/master/server hosting/28.png
of course the reason why connect to SQL failed is because haven't configure Hercules so ....
stop it from running for a moment
./athena-start stop
6.2 login to WinCP
https://github.com/AnnieRuru/customs/blob/master/server hosting/29.png
... I will assume you know how to change your public IP address on hercules
the file you should change are
map-server.conf
- userid: "qwer"
- passwd: "asdf"
- map_ip: "35.213.138.42"
- char_ip: "35.213.138.42" char-server.conf
- userid: "qwer"
- passwd: "asdf"
- login_ip: "35.213.138.42"
- char_ip: "35.213.138.42" conf\global\sql_connections.conf
-db_hostname: "localhost"
- db_port: 3306
- db_username: "annie"
- db_password: "1234"
- db_database: "hercules" conf\network.conf
.....<let me test this thing again> ....
<--- I will assume everyone reading this guide already know how to host an offline server, if not click here -->
now run ./athena-start start again, and this time map-server couldn't connect to char-server
7. Configure firewall
7.1 run these 3 commands
sudo firewall-cmd --permanent --add-port 6900/tcp sudo firewall-cmd --permanent --add-port 6121/tcp sudo firewall-cmd --permanent --add-port 5121/tcp 7.2 reload the firewall settings
sudo firewall-cmd --reload 7.3 go back to Google Cloud,
https://github.com/AnnieRuru/customs/blob/master/server hosting/30.png
to create firewall
https://github.com/AnnieRuru/customs/blob/master/server hosting/31.png
configure the firewall
https://github.com/AnnieRuru/customs/blob/master/server hosting/32.png
2. & 3. configure firewall only to this project
https://github.com/AnnieRuru/customs/blob/master/server hosting/33.png
4. at 'tcp:' tab, only allow these 3 ports
https://github.com/AnnieRuru/customs/blob/master/server hosting/34.png
7.4
run ./athena-start start again.
then goto https://portchecker.co/ and check your port is open
https://github.com/AnnieRuru/customs/blob/master/server hosting/35.png
And Finally go to your client edit data/sclientinfo.xml to the WAN IP and
VIOLA !! DONE !!
I can connect my client to google cloud
PS: the port checker website only shows Port 6900 is OPEN. only if fulfill these 3 conditions
1. enable firewall setting on CentOS
2. enable firewall setting on Google Cloud
3. run the emulator by ./athena-start
Ok now you can start worry about security issue like adding additional user in CentOS
https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-a-centos-7-server
google cloud doesn't seem to allow login that way -> https://stackoverflow.com/questions/52503453/how-to-login-gcp-console-without-ssh
and mysql root account password change ...
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234'; etc...etc...
need more research
Connect to MySQL in CentOS 8 using Window's MySQL Workbench
1. add another connection
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql1.png
2. under 'Connection Method', select 'Standard TCP/IP over SSH'
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql2.png
3. configure these fields
3.1 SSH hostname is the server IP address
3.2 SSH username is the name you created with PuttyGen
3.3 SSH keyfile needs a conversion with PuttyGen
3.4 and Click [Test Connection]
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql3.png
4. the SSH keyfile needs to be convert from PuttyGen
4.1 load existing private key, in this case was 'annie.ppk'
4.2 click conversion and save as 'annie' without file extension
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql4.png
5. if successful it will show like this
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql5.png
then you can login into MySQL in CentOS
did I forgot to mention needs to open the port 3306 in CentOS and Google Cloud ? refer back to step 7
Reference: https://stackoverflow.com/questions/21527743/mysql-workbench-version-6-0-8-ssh-authentication-issue
After thought :
Overall I'm very satisfy with Google Cloud service,
1. free $300 credit to spend
2. can always register trash gmail account to make the credit infinite
- of course the IP will always change if you do so
3. very low latency from Malaysia connect to Singapore - just 30~40ms ping
I haven't try OVH which everybody is recommending, but they doesn't offer immediate free credit for me to test so meh .....
and I notice Hercules's wiki CentOS guide is broken, maybe I'll fix it
https://github.com/HerculesWS/Hercules/wiki/Installation-(CentOS)
- offtopic -
over last few days playing with google cloud, when I visit Youtube, all my advertisement become Monday.com etc etc group project stuffs
google really knows how to collect my data
-
AnnieRuru got a reaction from IndieRO in Deprecated Features
Related commit: https://github.com/HerculesWS/Hercules/pull/2391
this is part of *setunitdata script command clean-up
the UDT_MAPIDXY and UDT_WALKTOXY constant has been deprecated so this script command only dealing with 1 INTEGER value
now it has been standardize, all (int) has been removed from the documentation
Example 1 : setunitdata UDT_MAPIDXY (old)
.@mobgid = monster("this", -1,-1, "--ja--", PORING, 1); setunitdata(.@mobgid, UDT_MAPIDXY, "guild_vs2", 50,50); now should be
.@mobgid = monster("this", -1,-1, "--ja--", PORING, 1); unitwarp(.@mobgid, "guild_vs2", 50,50);
Example 2 : getunitdata UDT_MAPIDXY (old)
.@mobgid = monster("this", -1,-1, "--ja--", PORING, 1); getunitdata(.@mobgid, UDT_MAPIDXY, .@pos); dispbottom(sprintf("%d %d %d", .@pos[0], .@pos[1], .@pos[2])); // apparently we don't have *mapid2name script command ... doesn't matter anymore now should be
.@mobgid = monster("this", -1,-1, "--ja--", PORING, 1); getmapxy(.@map$, .@x, .@y, UNITTYPE_MOB, .@mobgid); dispbottom(sprintf("%s %d %d", .@map$, .@x, .@y));
Example 3 : setunitdata UDT_WALKTOXY (old)
.@mobgid = monster("this", -1,-1, "--ja--", PORING, 1); setunitdata(.@mobgid, UDT_WALKTOXY, 158,185); now should be
.@mobgid = monster("this", -1,-1, "--ja--", PORING, 1); unitwalk(.@mobgid, 158, 185);
-
AnnieRuru got a reaction from nomade in @market clone
Download: 1.9
plugin
Create a market clone, to leave a message for other players
while the player can go hunting/questing/events
@market "<Title>" "<Message>" <Color> create a market clone with a chat room titled -> "<Title>"
when players tries to join the chat room, it refuse the joining, but instead leave a message -> "<Message>"
with 1.4 update,
player can now choose their own favorite color for their AFK message
the <Color> field is optional
I was struggling to use array for the color list ...
but in the end, I guess the simplicity is the best
so you guys can guess how to add in your own list easily
@marketkill kill the market clone without logging off
when a GM do @killmonster @killmonster2, or *killmonster *kilmonsterall script command will not remove the clone
but @reloadscript, however, will remove it
feels like I just copy paste from the description
whatever ...
Credit : remember to rep Dastgir's topic because I mostly copy his codes
-
AnnieRuru got a reaction from evilpuncker in Opening OBB (and any similar consumables)
merge all separate topics into one
`@allowobbdrop`
https://github.com/AnnieRuru/Release/blob/master/plugins/allowobbdrop.c
-
AnnieRuru got a reaction from IndieRO in Error when getunitdata from died unit
yeah we don't have *unitexists script command like rathena
although I am also not sure want to implement or not
because since the monster is set with a variable
upon the monster died, the event label can reset the variable back to 0
EDIT: ... maybe implement it then,
with *unitexists script command maybe the .mobid there can become .@mobid
PS: the script command setunitdata/getunitdata has more than 70% are not functioning,
https://github.com/HerculesWS/Hercules/compare/stable...AnnieRuru:34-setunitdata
and its not yet complete
-
AnnieRuru got a reaction from IndieRO in get mob id on event
prontera,155,185,5 script jsdfksdjf 1_F_MARIA,{ if ( .mobid ) end; .mobid = monster( "this", -1, -1, "--ja--", 1002, 1, strnpcinfo(3)+"::Onaaa" ); setunitdata .mobid, UDT_MAXHP, 1000000; setunitdata .mobid, UDT_HP, 1000000; while ( .mobid ) { npctalk "Poring HP is now "+( getunitdata( .mobid, UDT_HP ) / 10000 )+"%"; sleep 2000; } end; Onaaa: .mobid = 0; end; } ... although this script is working but ... my map-server.exe spam error ...
check the script command in script.c
... Line 19671 } break; default: ShowError("buildin_getunitdata: Unknown object!\n"); script_pushint(st, 0); return false; } // end of bl->type switch #undef getunitdata_sub return false; <<----- WTF PUT A RETURN FALSE FOR WHAT REASON !!! }
-
-
AnnieRuru got a reaction from IndieRO in @packetfilter
PLEASE GIVE ME YOUR COMPILER
I want my visual studio 2019 also display error like yours
btw I'm guessing that's CentOS, this happened before on my OnPCUseSkillEvent
0.3 - plugin
- add missing FILTER_CLAN flag
- implement block_item type 'I' flag
- fix FILTER_OTHER not working properly when the player doesn't have a party or guild
- fix [C]hat type shouldn't able to filter self, since the client always shows you are talking anyway
- and attempt to fix the above stupid error that doesn't show on Visual Studio
-
AnnieRuru got a reaction from evilpuncker in Stylist
all right, I post up my custom stylist
Download: 2.1
script
this one use CSV format
setd ".@"+ Job_Rune_Knight +"_"+ LOOK_CLOTHES_COLOR +"$[1]", "0-5,11-18,20-23"; setd ".@"+ Job_Summoner +"_"+ LOOK_CLOTHES_COLOR +"$[0]", "0-3"; This means, the ID range for Job_Rune_Knight at bodystyle number (1) is 0,1,2,3,4,5,11,12,13,14,15,16,17,18,20,21,22,23
2nd line means Summoner job can only use clothing range between 0 to 3, this prevent crash client due to human and doram race doesn't share the same palette
From version 2.0 onwards, now you don't have to scratch your head about missing palette due to different bodystyle
this script can handle that
-
AnnieRuru got a reaction from kalabasa in About the mushroom_event
OnMinute40: if (mobcount(.Map$, strnpcinfo(0)+"::OnMobKilled") == 0) end; killmonster .Map$, strnpcinfo(0)+"::OnMobKilled"; announce "All left over mushroom has been removed", bc_all; end;
I don't use rAthena but should work
-
AnnieRuru got a reaction from akbare in [Suggestion] displaybottom & message colors
ok, I'm noob
lilith's post is the correct answer
hercules/rathena already have clif_colormes
https://github.com/HerculesWS/Hercules/blob/master/src/map/clif.c#L8352
so just need to tweak the script command a little bit and it shall be done
BUILDIN_FUNC(dispbottom2) { TBL_PC *sd; if ( script_hasdata(st,4) ) { if ( data_isstring( script_getdata(st,4) ) ) sd = map_nick2sd( script_getstr(st,4) ); else sd = map_id2sd( script_getnum(st,4) ); } else sd = script_rid2sd(st); if ( sd ) { unsigned int colorcode; if ( script_hasdata(st,3) ) colorcode = script_getnum(st,3); else colorcode = 0xbbffbb; clif_colormes( sd, colorcode, script_getstr(st,2) ); } return 0;} huh ? why not ? it looks cool ! xD
I have tried to do message2 which display color message overhead your character
however I have found no known way to display a color message on top of your own head
it seems possible for other players to see your color message, but not by your own
-
AnnieRuru got a reaction from akbare in [Suggestion] displaybottom & message colors
OMFG !!totally forgotten about channel system
you are right, NO LIMITATION
I used rathena emulator to get this working fine
BUILDIN_FUNC(dispbottom) { TBL_PC *sd; if ( script_hasdata(st,4) ) { if ( data_isstring( script_getdata(st,4) ) ) sd = map_nick2sd( script_getstr(st,4) ); else sd = map_id2sd( script_getnum(st,4) ); } else sd = script_rid2sd(st); if ( sd ) { const char* msg = script_getstr(st,2); unsigned short msg_len = strlen( msg ) +1; unsigned int colorcode; if ( script_hasdata(st,3) ) colorcode = script_getnum(st,3); else colorcode = 0xbbffbb; WFIFOHEAD( sd->fd, msg_len + 12 ); WFIFOW(sd->fd,0) = 0x2C1; WFIFOW(sd->fd,2) = msg_len + 12; WFIFOL(sd->fd,4) = 0; WFIFOL(sd->fd,8) = colorcode; safestrncpy((char*)WFIFOP(sd->fd,12), msg, msg_len); WFIFOSET( sd->fd, msg_len + 12 ); } return 0;} BUILDIN_DEF(dispbottom,"s??"),it works !prontera,162,180,5 script kjsdfhksdjf 100,{ dispbottom "test color"; dispbottom "test color", 0xff0000; dispbottom "test color", 0x0000ff; dispbottom "test color", 0xffffff; dispbottom "test color", 0xff00ff; end;} -
AnnieRuru got a reaction from Syrisone in R>Old Hunter Job Change Quest
my signature ... click on the right heart ...
old rubbish -> eAthena-TXT-9909[Stable].rar
-
AnnieRuru got a reaction from bWolfie in @packetfilter
No more Work in Progress, Please report if there are any bug
Download: 1.0a [Complete]
plugin
What is `@packetfilter` ?
`@packetfilter` is a custom mod originate from eamod
https://github.com/zephyrus-cr/eamod/blob/master/Servers/rAthena/conf/groups.conf#L418-L422
it can actually reduce lag on your live server during woe depends on how many players activate it
it totally depends on the player's side, community effort that every player should together turn on the `@packetfilter` to reduce massive lag during woe
this modification is actually very famous and there are members willingly to pay for it
https://rathena.org/board/topic/121200-packetfilter-battleinfo/
https://rathena.org/board/topic/123203-battleinfo-packetfilter/
https://rathena.org/board/topic/111797-packetfilter-zepyhrus-ramod/
https://rathena.org/board/topic/79995-buy-noactnodelay-partybuff-src-as-it-was-on-pro-ro-or-packetfilter/
this `@packetfilter` is unlike the one you are having, or that is circulating on rathena forum
this one has been written entirely from scratch and added some other flags that the original don't
for example,
`@packetfilter COHM EOHM`
allow block normal chat and emotion from non-related players, pets, homunculus and monsters
but this doesn't block normal chat from party/guild members
a full list of flags are
C = ignore normal Chat, including Dancer's scream, Bard's frost joke, and pet's talk (pet start to talk when intimacy > 900) E = ignore emotion, including monster and pet emotion (but NOT pet performance) I = ignore Item use effect A = ignore normal Attack animation (based on receiving side), your own attack animation are always shown B = Buffing skill animations (based on receiving side), your own casting animation are always shown S = Status effect T = offensive single Target skill/spell animations (based on receiving side), your own casting animation are always shown G = Ground based skills (eg:storm gust), your own casting animation are always shown M = Music dance/songs from Bard/Dancer D = Direction. Recommend filter on Party/Guild type and not enemies. Highly Recommend for supportive type Class. after the Main type, also support additional flags
S = Self P = Party G = Guild B = Battleground C = Clan O = Other players, none of the above H = Homunculus/pets/elementals/mercenary and player's @summon M = Monsters
Why This plugin doesn't block Kaite or Energy Coat ?
2 reasons
No.1 - currently there is a bug with plugin,
struct packet_spawn_unit *p = (struct packet_spawn_unit*)RBUFP(buf, 0); this line will throw error on Linux
so no choice, maybe I'll make a bug report
this bug also has been reported on Dastgir's `@noview`
No.2 - just set p->virtue = 0; isn't really blocking the packet
this goes against the very principle of this plugin, which is NOT send certain packet to the client
OPT3 (including OPT3_KAITE | OPT3_ENERGYCOAT | OPT3_SOULLINK) is part of the idle_unitType, unit_walkingType and spawn_unitType function
and blocking those 3 packet entirely is stupid
in case you don't understand, look under clif_set_unit_walking and clif_set_unit_idle function inside src\map\clif.c file
p.GUID = g_id; p.GEmblemVer = status->get_emblem_id(bl); p.honor = (sd) ? sd->status.manner : 0; // p.virtue = (sc) ? sc->opt3 : 0; <-- change this line p.virtue = 0; p.isPKModeON = (sd && sd->status.karma) ? 1 : 0; p.sex = vd->sex;
Note: about [D]irection type packet
try add a ShowDebug inside clif->send
src/map/clif.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/map/clif.c b/src/map/clif.c index ab3c4422a..9e245f335 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -450,6 +450,7 @@ static bool clif_send(const void *buf, int len, struct block_list *bl, enum send return true; } +ShowDebug("source:%s buf:0x%x 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(); you will find 0x9c is being send repeatedly on every attack and every skill cast , getting attack etc
this direction update packet isn't just send by Shift-click, but also including all the actions above
this packet is very spam-able and I think can be safely block on party/guild/clan/bg flags
for supportive class, I also think can block all of them since supportive class doesn't need information from enemies
-
AnnieRuru got a reaction from o5jees in Lotti Girl
There are MANY variations of Lotti Girl script, even me too, have made several of them
so today I try to gather them all, and make a release with ALL features from all the topics gathered
Download:
script
Feature no.1 -> show the percentage chance
chinese government has a rule that all lottery system must show the percentage chance to the public
hence the script should show the lottery chance in percent
Feature no.2 -> Roll Repeatedly
imagine if you have 500 tickets, and you want to spend them all,
all other scripts available on rathena board will force the player to spend them 1 by 1
this script can roll up to 100 times on the fly, effectively save player's time
Feature no.3 -> Lotti shop
even if you spend a lot of tickets and still getting all the trash items, you still collecting points, and able buy them in Lotti Shop
Feature no.4 -> Lotti ladder
compete with other players and see who has the highest Lotti Rank !
oh and ... HULD compatible == rAthena members can't use this
-
AnnieRuru got a reaction from IndieRO in Blacksmith Weapon Refine
@bOinkz
@Helena
@Xanthin
src/map/skill.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/map/skill.c b/src/map/skill.c index 6eacde8..c246e1f 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -16200,6 +16200,11 @@ void skill_weaponrefine (struct map_session_data *sd, int idx) break; } } + { + char message[CHAT_SIZE_MAX]; + safesnprintf( message, CHAT_SIZE_MAX, "+%d %s Item Obtained.", item->refine, ditem->jname ); + clif->message( sd->fd, message ); + } } else { item->refine = 0; if(item->equip)
-
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
-
AnnieRuru got a reaction from ljsb in hosting Hercules on Google Cloud with CentOS 8
Over the last few days I have been playing with Google Cloud services
because Google cloud currently offers $300 free credit upon signing up
yes, FREE $300 credit
and thus my journey trying to host hercules server on a VPS has begun
all you need is a valid Debit/Credit card number ...
of course you have to be an adult to try the hosting service ... right ?
oh and, don't worry, you can always cancel it anytime
after playing with it, I found the Windows option is too expensive, and thus trying to learn the Linux option
This guide is actually demonstrate by using a trash gmail account that can throw away later
I don't mind all the credentials are shown in the screenshot, when I click the Open topic button I have deleted this project on Google Cloud
Step 1. Download Putty and WinCP
https://www.putty.org/.
https://winscp.net/eng/download.php
Step 2. Run Google Cloud
2.1 login to your Google cloud project
https://github.com/AnnieRuru/customs/blob/master/server hosting/2.png
2.2 first you need to link your credit card to this google cloud
https://github.com/AnnieRuru/customs/blob/master/server hosting/3.png.
https://github.com/AnnieRuru/customs/blob/master/server hosting/4.png
select the billing option to the debit/credit number you input earlier
https://github.com/AnnieRuru/customs/blob/master/server hosting/5.png
this billing information is very important, you need to check this once in a while to stop unwanted services <-- please scroll to the right
2.3 pin these 3
- billing
- compute engine
- VPC network
https://github.com/AnnieRuru/customs/blob/master/server hosting/6.png
2.4 now time to create a VPS, select Compute Engine
https://github.com/AnnieRuru/customs/blob/master/server hosting/7.png
2.4.1
enter all the necessary information
1. the Virtual machine name
2. your nearest location
3. the spec of the machine
https://github.com/AnnieRuru/customs/blob/master/server hosting/8.png
PS: I tested the cheapest option, N1 series, f1 micro 614MB memory and E2 micro, 1GB memory
when compiling hercules later, putty just stop ... I think it run out of memory
... hercules should have mention a recommendation needs at least 2GB memory to run
2.4.2
4. Select Boot Disk as CentOS 8
https://github.com/AnnieRuru/customs/blob/master/server hosting/9.png
5. select allow HTTP and HTTPS
https://github.com/AnnieRuru/customs/blob/master/server hosting/10.png
2.4.3
6. Click Security tab
https://github.com/AnnieRuru/customs/blob/master/server hosting/11.png
needs to 'Enter public SSH key'
run Putty Key Generator and click Generate
https://github.com/AnnieRuru/customs/blob/master/server hosting/12.png
1. change the 'key comment' as it will become user name
2. save private key to desktop
3. copy the field
https://github.com/AnnieRuru/customs/blob/master/server hosting/13.png
paste into Google cloud
https://github.com/AnnieRuru/customs/blob/master/server hosting/14.png
2.4.4
select Networking tab
https://github.com/AnnieRuru/customs/blob/master/server hosting/15.png
create a static IP address
https://github.com/AnnieRuru/customs/blob/master/server hosting/16.png
choose standard tier
after everything done click [Confirm]
https://github.com/AnnieRuru/customs/blob/master/server hosting/17.png
and you get your virtual machine running
https://github.com/AnnieRuru/customs/blob/master/server hosting/18.png
2.5
once your server up and running
run Putty to connect to this server
https://github.com/AnnieRuru/customs/blob/master/server hosting/19.png
1. scroll down, expand 'SSH' to select 'Auth',
2. then load the file you saved earlier by PuttyGen
https://github.com/AnnieRuru/customs/blob/master/server hosting/20.png
3. enter the public IP address,
4. then click open
https://github.com/AnnieRuru/customs/blob/master/server hosting/21.png
it will prompt you with security alert, just click yes
2.6
login with your user name
https://github.com/AnnieRuru/customs/blob/master/server hosting/22.png
The very first command you should run is change the password
sudo passwd root ok Windows Users, don't freak out like me
there are no ******** when you input the password, this is Linux not Windows
just input normally ... and press Enter key, it works that way
https://github.com/AnnieRuru/customs/blob/master/server hosting/23.png
then do the same with your username
sudo passwd annie
3. update the OS and install all necessary product
3.1 run all these commands
sudo yum update sudo yum install gcc make mysql mysql-devel mysql-server pcre-devel git zlib-devel Transaction Summary ================================================================================ Install 89 Packages Total download size: 108 M Installed size: 395 M Is this ok [y/N]: Press 'Y' key
3.2
in the meantime, while this might take awhile, try login WinCP
https://github.com/AnnieRuru/customs/blob/master/server hosting/24.png
click new session, then click advance
https://github.com/AnnieRuru/customs/blob/master/server hosting/25.png
select 'Authentication' and load the Putty Gen file again
https://github.com/AnnieRuru/customs/blob/master/server hosting/26.png
just another warning
https://github.com/AnnieRuru/customs/blob/master/server hosting/27.png
3.3 Download Hercules
git clone https://github.com/HerculesWS/Hercules.git ~/Hercules
4. SQL
4.1 Start SQL service
sudo systemctl start mysqld.service
4.2 login as root
mysql -u root -p Enter password, just press enter
default centOS 8 preinstalled MySQL, root has no password
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 Server version: 8.0.21 Source distribution Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 4.3 create database
CREATE DATABASE hercules; 4.4 select hercules database as default
USE `hercules`; 4.5 create another user, not recommend to connect as root
CREATE USER 'annie'@'localhost' IDENTIFIED BY '1234'; 4.6 grant this user privilege
GRANT SELECT,INSERT,UPDATE,DELETE ON * TO 'annie'@'localhost'; 4.7 then quit
quit it should show like this
mysql> quit Bye [annie@centos ~]$ 4.8 goto sql-files directory
cd /home/annie/Hercules/sql-files/ and run all these
mysql -u root -p hercules < main.sql mysql -u root -p hercules < logs.sql mysql -u root -p hercules < item_db_re.sql mysql -u root -p hercules < mob_db_re.sql mysql -u root -p hercules < mob_skill_db_re.sql it should show like this
[annie@centos ~]$ cd /home/annie/Hercules/sql-files/ [annie@centos sql-files]$ mysql -u root -p hercules < main.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < logs.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < item_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_db_re.sql Enter password: [annie@centos sql-files]$ mysql -u root -p hercules < mob_skill_db_re.sql Enter password: [annie@centos sql-files]$ 4.9 go back login mysql and change inter-server connection password from s1/p1 into qwer/asdf
mysql -u root -p and
UPDATE `hercules`.`login` SET `userid` = 'qwer', `user_pass` = 'asdf' WHERE `account_id` = 1;
5. Compile Hercules
go back to annie/hercules folder
cd /home/annie/Hercules/ 5.1 type ./configure
./configure
OK STOP, many things can go wrong here, I stuck here for a few days and searching on both rathena and hercules forum for answers
the correct output from putty should be this
checking mysql.h presence... yes checking for mysql.h... yes checking whether my_bool is supported (MySQL)... no (converting my_bool to bool) checking MySQL library (required)... yes (8.0.21) checking PCRE library... checking pcre.h usability... yes checking pcre.h presence... yes checking for pcre.h... yes checking for library containing pcre_study... -lpcre checking for doxygen... no checking for perl... yes configure: creating ./config.status config.status: creating Makefile config.status: creating src/common/Makefile config.status: creating 3rdparty/mt19937ar/Makefile config.status: creating 3rdparty/libconfig/Makefile config.status: creating 3rdparty/libbacktrace/Makefile config.status: creating 3rdparty/libbacktrace/backtrace-supported.h config.status: creating src/char/Makefile config.status: creating src/login/Makefile config.status: creating src/map/Makefile config.status: creating src/plugins/Makefile config.status: creating src/test/Makefile config.status: creating tools/HPMHookGen/Makefile config.status: creating tools/doxygen/Makefile [annie@centos Hercules]$ if it doesn't show config.status: at the end, open a new topic in Linux support
if it's the same as mine, then can proceed with
5.2 compile hercules
make sql finally compile should show like this
CC party.c CC path.c CC pc.c CC pc_groups.c CC pet.c CC quest.c CC refine.c CC rodex.c CC script.c CC searchstore.c CC skill.c CC status.c CC storage.c CC stylist.c CC trade.c CC unit.c CC vending.c LD map-server make[1]: Leaving directory '/home/annie/Hercules/src/map' building conf/import folder... [annie@centos Hercules]$
6. configure Hercules
6.1 start hercules by
./athena-start start https://github.com/AnnieRuru/customs/blob/master/server hosting/28.png
of course the reason why connect to SQL failed is because haven't configure Hercules so ....
stop it from running for a moment
./athena-start stop
6.2 login to WinCP
https://github.com/AnnieRuru/customs/blob/master/server hosting/29.png
... I will assume you know how to change your public IP address on hercules
the file you should change are
map-server.conf
- userid: "qwer"
- passwd: "asdf"
- map_ip: "35.213.138.42"
- char_ip: "35.213.138.42" char-server.conf
- userid: "qwer"
- passwd: "asdf"
- login_ip: "35.213.138.42"
- char_ip: "35.213.138.42" conf\global\sql_connections.conf
-db_hostname: "localhost"
- db_port: 3306
- db_username: "annie"
- db_password: "1234"
- db_database: "hercules" conf\network.conf
.....<let me test this thing again> ....
<--- I will assume everyone reading this guide already know how to host an offline server, if not click here -->
now run ./athena-start start again, and this time map-server couldn't connect to char-server
7. Configure firewall
7.1 run these 3 commands
sudo firewall-cmd --permanent --add-port 6900/tcp sudo firewall-cmd --permanent --add-port 6121/tcp sudo firewall-cmd --permanent --add-port 5121/tcp 7.2 reload the firewall settings
sudo firewall-cmd --reload 7.3 go back to Google Cloud,
https://github.com/AnnieRuru/customs/blob/master/server hosting/30.png
to create firewall
https://github.com/AnnieRuru/customs/blob/master/server hosting/31.png
configure the firewall
https://github.com/AnnieRuru/customs/blob/master/server hosting/32.png
2. & 3. configure firewall only to this project
https://github.com/AnnieRuru/customs/blob/master/server hosting/33.png
4. at 'tcp:' tab, only allow these 3 ports
https://github.com/AnnieRuru/customs/blob/master/server hosting/34.png
7.4
run ./athena-start start again.
then goto https://portchecker.co/ and check your port is open
https://github.com/AnnieRuru/customs/blob/master/server hosting/35.png
And Finally go to your client edit data/sclientinfo.xml to the WAN IP and
VIOLA !! DONE !!
I can connect my client to google cloud
PS: the port checker website only shows Port 6900 is OPEN. only if fulfill these 3 conditions
1. enable firewall setting on CentOS
2. enable firewall setting on Google Cloud
3. run the emulator by ./athena-start
Ok now you can start worry about security issue like adding additional user in CentOS
https://www.digitalocean.com/community/tutorials/how-to-add-and-delete-users-on-a-centos-7-server
google cloud doesn't seem to allow login that way -> https://stackoverflow.com/questions/52503453/how-to-login-gcp-console-without-ssh
and mysql root account password change ...
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1234'; etc...etc...
need more research
Connect to MySQL in CentOS 8 using Window's MySQL Workbench
1. add another connection
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql1.png
2. under 'Connection Method', select 'Standard TCP/IP over SSH'
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql2.png
3. configure these fields
3.1 SSH hostname is the server IP address
3.2 SSH username is the name you created with PuttyGen
3.3 SSH keyfile needs a conversion with PuttyGen
3.4 and Click [Test Connection]
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql3.png
4. the SSH keyfile needs to be convert from PuttyGen
4.1 load existing private key, in this case was 'annie.ppk'
4.2 click conversion and save as 'annie' without file extension
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql4.png
5. if successful it will show like this
https://github.com/AnnieRuru/customs/blob/master/server hosting/mysql5.png
then you can login into MySQL in CentOS
did I forgot to mention needs to open the port 3306 in CentOS and Google Cloud ? refer back to step 7
Reference: https://stackoverflow.com/questions/21527743/mysql-workbench-version-6-0-8-ssh-authentication-issue
After thought :
Overall I'm very satisfy with Google Cloud service,
1. free $300 credit to spend
2. can always register trash gmail account to make the credit infinite
- of course the IP will always change if you do so
3. very low latency from Malaysia connect to Singapore - just 30~40ms ping
I haven't try OVH which everybody is recommending, but they doesn't offer immediate free credit for me to test so meh .....
and I notice Hercules's wiki CentOS guide is broken, maybe I'll fix it
https://github.com/HerculesWS/Hercules/wiki/Installation-(CentOS)
- offtopic -
over last few days playing with google cloud, when I visit Youtube, all my advertisement become Monday.com etc etc group project stuffs
google really knows how to collect my data
-
AnnieRuru got a reaction from IndieRO in @packetfilter
No more Work in Progress, Please report if there are any bug
Download: 1.0a [Complete]
plugin
What is `@packetfilter` ?
`@packetfilter` is a custom mod originate from eamod
https://github.com/zephyrus-cr/eamod/blob/master/Servers/rAthena/conf/groups.conf#L418-L422
it can actually reduce lag on your live server during woe depends on how many players activate it
it totally depends on the player's side, community effort that every player should together turn on the `@packetfilter` to reduce massive lag during woe
this modification is actually very famous and there are members willingly to pay for it
https://rathena.org/board/topic/121200-packetfilter-battleinfo/
https://rathena.org/board/topic/123203-battleinfo-packetfilter/
https://rathena.org/board/topic/111797-packetfilter-zepyhrus-ramod/
https://rathena.org/board/topic/79995-buy-noactnodelay-partybuff-src-as-it-was-on-pro-ro-or-packetfilter/
this `@packetfilter` is unlike the one you are having, or that is circulating on rathena forum
this one has been written entirely from scratch and added some other flags that the original don't
for example,
`@packetfilter COHM EOHM`
allow block normal chat and emotion from non-related players, pets, homunculus and monsters
but this doesn't block normal chat from party/guild members
a full list of flags are
C = ignore normal Chat, including Dancer's scream, Bard's frost joke, and pet's talk (pet start to talk when intimacy > 900) E = ignore emotion, including monster and pet emotion (but NOT pet performance) I = ignore Item use effect A = ignore normal Attack animation (based on receiving side), your own attack animation are always shown B = Buffing skill animations (based on receiving side), your own casting animation are always shown S = Status effect T = offensive single Target skill/spell animations (based on receiving side), your own casting animation are always shown G = Ground based skills (eg:storm gust), your own casting animation are always shown M = Music dance/songs from Bard/Dancer D = Direction. Recommend filter on Party/Guild type and not enemies. Highly Recommend for supportive type Class. after the Main type, also support additional flags
S = Self P = Party G = Guild B = Battleground C = Clan O = Other players, none of the above H = Homunculus/pets/elementals/mercenary and player's @summon M = Monsters
Why This plugin doesn't block Kaite or Energy Coat ?
2 reasons
No.1 - currently there is a bug with plugin,
struct packet_spawn_unit *p = (struct packet_spawn_unit*)RBUFP(buf, 0); this line will throw error on Linux
so no choice, maybe I'll make a bug report
this bug also has been reported on Dastgir's `@noview`
No.2 - just set p->virtue = 0; isn't really blocking the packet
this goes against the very principle of this plugin, which is NOT send certain packet to the client
OPT3 (including OPT3_KAITE | OPT3_ENERGYCOAT | OPT3_SOULLINK) is part of the idle_unitType, unit_walkingType and spawn_unitType function
and blocking those 3 packet entirely is stupid
in case you don't understand, look under clif_set_unit_walking and clif_set_unit_idle function inside src\map\clif.c file
p.GUID = g_id; p.GEmblemVer = status->get_emblem_id(bl); p.honor = (sd) ? sd->status.manner : 0; // p.virtue = (sc) ? sc->opt3 : 0; <-- change this line p.virtue = 0; p.isPKModeON = (sd && sd->status.karma) ? 1 : 0; p.sex = vd->sex;
Note: about [D]irection type packet
try add a ShowDebug inside clif->send
src/map/clif.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/map/clif.c b/src/map/clif.c index ab3c4422a..9e245f335 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -450,6 +450,7 @@ static bool clif_send(const void *buf, int len, struct block_list *bl, enum send return true; } +ShowDebug("source:%s buf:0x%x 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(); you will find 0x9c is being send repeatedly on every attack and every skill cast , getting attack etc
this direction update packet isn't just send by Shift-click, but also including all the actions above
this packet is very spam-able and I think can be safely block on party/guild/clan/bg flags
for supportive class, I also think can block all of them since supportive class doesn't need information from enemies