Groundwork of Amistr and Koma's Farewell

Anything related to your server.
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Groundwork of Amistr and Koma's Farewell

Post by Koma »

For those that have been interested in the background work that was done in the early days, these are from the records of our Development forums.

Remember, all information and design was based off of http://www.crescendo-ro.com/lessons.txt. Most of the data had become outdated over the months as we did more core changes, nor would they really apply to newer servers as the Renewal client is now LUA editable for customs. But this is a good starting location for anyone interested and gives a good view of how things were handled and maintained.

About Amistr's Dataflow
About Amistr's Subversion and Hamachi
Detailed Server Hardware Information (Original)
Detailed Server Hardware Information (Secondary)
Detailed Server Hardware Information (Final)
Sakray Client Diff Modifications (Original)
Sakray Client Diff Modifications (Final)
Forum -> Website Content Sharing Information
Server Core Modification List (Outdated)
General Server Setup Steps (Possibly Outdated)
How-To List Of Stuff
Tuesday Maintenance
NeonCube, Control Panel, and Security

If you are interested in running your own server,I only hope this is sufficient enough to help and not as confusing as I know it can be. I know there are plenty of you out there that have the determination to make something amazing happen. I started working on these servers back during the initial AEGIS leaks, the original Athena/jAthena development, and contributed all those years ago. Since then I've met a number of interesting developers and viewpoints, but rarely anyone to continue on the work of the unification and streamlining process I had worked towards. It's been great working with the communities over the years even if I was more of an unknown as Drakee, Parsley, Hisame, and now Koma. Chances are, I may have never landed a job at a major corporation all those years ago if it weren't for these projects and the development experience. For everything, I thank you all for your support on behalf of the staff of Amistr, and who knows? Maybe we'll cross paths again somewhere else.
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

About Amistr's Dataflow

Post by Koma »

The complete server operates in three entirely separate locations to make the whole. These areas consist of the web-server, the game-server, and the development-server.

In order for Amistr to run smoothly, all three should be capable of communicating with each other.

Web Server:
This server serves multiple purposes. It runs its own SQL Server to conserve resources from the game-server too.
  1. It runs the Control Panel which pulls server-data from the game-server. Control Panel transactions are stored locally on the website's MySQL server. Registration, Rankings, and such pull from the game-server.
  2. It also runs the Forums which has its MySQL databases located locally as well.
  3. The patch client pulls from the web-server. If the site is every down, the patcher will fail to check for patches obviously.
  4. Downloads such as the installers are located here and off-site (Kataclysm's donated webspace from his company).
  5. The Admin Control Panel is located somewhere locked away here as well. It is entirely run off of the game-server.
Game Server:
It's obvious what runs here. Only the MySQL Server, Shorewall, and eAthenas are housed here along with any backups and necessary build files. It pulls from the development server for updates automatically and pushes backups to the development server too.

Without this server, the game doesn't even exist.

Development Server:
This is where the SVN that the game-server pulls from is located. It is also the fallback measure if any data is lost for any reason. Its additional purpose is to capture players trying to modify their client as any players that incorrectly do so tend to connect to here by mistake.

Without this server, updates cannot be pulled from.
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

About Amistr's Subversion and Hamachi

Post by Koma »

If you have access to this, you have been given the details of it.

It consists of several sections:
  • Core: In this area, you'll find Amistr's specific eAthena settings (non-source code).
    • Archive: This area is Crescendo's configurations
    • conf: Here are the Main (Fleece) server's configuration files. Any default mapflags and battle configuration flags and such are located here.
    • conf-test: This is about the same as the "conf" folder, but it includes any changes specific to the Test (Wool) server. This folder is the only difference between the two (since it re-routes scripts as well).
    • db: Any databases such as item/mob/skill databases, are stored here.
    • npc: Obviously, any scripts are here.
  • Documentation: Before we had the forums, we kept a lot of our data in a Microsoft OneNote format to share between the admins. This has since mostly changed.
  • GRF: The client GRF is fully extracted in this folder. This allows for quick modification and quick GRF re-creation if ever needed. This folder causes a lot of resource usage in TortoiseSVN due to the sheer amount of files.
  • Installer: We also keep a backup of the base installer files to create any installers from in this folder.
  • Website: Nothing really here except an early version of the website.
Our Hamachi share is used for referencing various tools and archives as well as historical files.
  • Automation: This folder stores any old backups (mirrored) and output logs. In its root folder are the scripts we use server-side also.
  • Deployment: Any historical installers or patches are stored here as backup from the website.
  • Resources: Archives of several SVNs are found in this folder. I tried to keep it up-to-date just in case any of them go extinct (as Prometheus and Nezumi/Freya have gone). Here are the eA Documentation repositories, eAthena Stable and Trunk, Flux/Ceres Control Panels, Client Hex Diffs, Neoncube, 3rd Classes, Translations, and others for reference.
  • Server: I keep a spare test-server here to simply test scripts.
  • Subversion: The actual Subversion's raw files are kept here.
  • Tool Box: Here are any tools we need to make necessary modifications. Also our internal tools created by me are here too. This includes diff patchers, translation encoders/deoders, GAT walkers, GRF viewers/editors, hex programs, port listeners, WPE test tools, sprite viewers, Reshack, and process viewers.
  • Website: Another graveyard of websites.
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Detailed Server Hardware Information (Original)

Post by Koma »

Quick Information: Core2Quad 6600 + 8GB RAM (4GB Until Fixed) + 2x250GB (Upgraded To 2x500GB Software RAID1) SATA + 3000GB +2 IP
Operating System: Debian "Lenny"
IP Addresses: 66.197.149.184 (amistr.mistermocha.com), 66.197.149.185
Location: USA East Coast (Scranton, Pennsylvania)
Bandwidth Test Info: 204.124.180.10 - http://volumedrive.com/bigtest.tgz

Smokeping:
http://www.dslreports.com/r3/smokeping. ... f97ac98af0

Line Quality History:
(2009-07-07 16:53:37) http://www.dslreports.com/linequality/nil/2539874
(2009-07-27 09:39:52) http://www.dslreports.com/linequality/nil/2546921

Linux Information From Server
--> df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/md2 478316272 881624 453137544 1% /
tmpfs 2027180 0 2027180 0% /lib/init/rw
udev 10240 92 10148 1% /dev
tmpfs 2027180 0 2027180 0% /dev/shm
/dev/md0 474348 47813 402043 11% /boot

--> cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
485942080 blocks [2/2] [UU]

md1 : active (auto-read-only) raid1 sda2[0] sdb2[1]
1951808 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
489856 blocks [2/2] [UU]

unused devices: <none>

--> cat /etc/issue
Debian GNU/Linux 5.0 \n \l

--> cat /proc/meminfo
MemTotal: 4054364 kB
MemFree: 3983444 kB
Buffers: 4160 kB
Cached: 26912 kB
SwapCached: 0 kB
Active: 13916 kB
Inactive: 20784 kB
SwapTotal: 1951800 kB
SwapFree: 1951800 kB
Dirty: 24 kB
Writeback: 0 kB
AnonPages: 3656 kB
Mapped: 3624 kB
Slab: 10228 kB
SReclaimable: 3036 kB
SUnreclaim: 7192 kB
PageTables: 772 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3978980 kB
Committed_AS: 9148 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 281516 kB
VmallocChunk: 34359455803 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

--> cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
stepping : 11
cpu MHz : 2393.997
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4791.52
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
stepping : 11
cpu MHz : 2393.997
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4788.01
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
stepping : 11
cpu MHz : 2393.997
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4788.02
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
stepping : 11
cpu MHz : 2393.997
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4788.02
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual

power management:
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Detailed Server Hardware Information (Secondary)

Post by Koma »

Quick Information: Xeon X3220 + 4GB RAM (Upgradable to 8GB) + 1x146GB (Upgradable) SAS + 2000GB + 5 IPs
Operating System: Debian "Lenny"
IP Addresses: 66.232.120.199 (amistr.mistermocha.com), 66.232.120.200-203
Location: USA East Coast (Tampa Bay, Florida)
Bandwidth Test Info: 69.46.28.22 - http://69.46.28.22/10meg.zip

Smokeping:

Line Quality History:

Linux Information From Server
--> df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda4 133484136 1129636 125573868 1% /
tmpfs 2031376 0 2031376 0% /lib/init/rw
udev 10240 84 10156 1% /dev
tmpfs 2031376 0 2031376 0% /dev/shm
/dev/sda1 124427 15395 102608 14% /boot
/dev/sda3 988244 17660 920384 2% /tmp

--> cat /proc/mdstat
cat: /proc/mdstat: No such file or directory

--> cat /etc/issue
Debian GNU/Linux 5.0 \n \l

--> cat /proc/meminfo
MemTotal: 4062756 kB
MemFree: 3942268 kB
Buffers: 4436 kB
Cached: 46240 kB
SwapCached: 0 kB
Active: 44548 kB
Inactive: 33360 kB
SwapTotal: 5831552 kB
SwapFree: 5831552 kB
Dirty: 112 kB
Writeback: 0 kB
AnonPages: 27364 kB
Mapped: 11636 kB
Slab: 11368 kB
SReclaimable: 3764 kB
SUnreclaim: 7604 kB
PageTables: 3492 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 7862928 kB
Committed_AS: 243104 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 35164 kB
VmallocChunk: 34359702871 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

--> cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2399.718
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4803.10
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2399.718
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4799.44
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2399.718
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4799.47
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Xeon(R) CPU X3220 @ 2.40GHz
stepping : 11
cpu MHz : 2399.718
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4799.48
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Detailed Server Hardware Information (Final)

Post by Koma »

Quick Information: Core2Quad Q6600 + 4GB RAM + 1x250GB SATA-II + 2000GB + 8 IPs
Operating System: Debian "Lenny"
IP Addresses: 72.9.154.142 (amistr.mistermocha.com), 72.9.154.143-149
Location: USA Central (Dallas, TX)
Bandwidth Test Info: 72.9.144.4 - http://72.9.144.4/10mb.bin - http://72.9.144.4/100mb.bin

Smokeping:

Line Quality History:

Linux Information From Server
--> df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 296159560 4010592 277104904 2% /
tmpfs 1995188 0 1995188 0% /lib/init/rw
udev 10240 740 9500 8% /dev
tmpfs 1995188 0 1995188 0% /dev/shm

--> cat /proc/mdstat
cat: /proc/mdstat: No such file or directory

--> cat /etc/issue
Debian GNU/Linux 5.0 \n \l

--> cat /proc/meminfo
MemTotal: 3990376 kB
MemFree: 2451276 kB
Buffers: 158896 kB
Cached: 547972 kB
SwapCached: 0 kB
Active: 1007024 kB
Inactive: 449188 kB
SwapTotal: 11687248 kB
SwapFree: 11687248 kB
Dirty: 64 kB
Writeback: 0 kB
AnonPages: 749344 kB
Mapped: 14872 kB
Slab: 45136 kB
SReclaimable: 36164 kB
SUnreclaim: 8972 kB
PageTables: 3692 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 13682436 kB
Committed_AS: 1957068 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 285940 kB
VmallocChunk: 34359451563 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

--> cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU @ 2.40GHz
stepping : 7
cpu MHz : 2394.006
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4791.60
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU @ 2.40GHz
stepping : 7
cpu MHz : 2394.006
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4788.07
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU @ 2.40GHz
stepping : 7
cpu MHz : 2394.006
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4788.08
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 Quad CPU @ 2.40GHz
stepping : 7
cpu MHz : 2394.006
cache size : 4096 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4788.11
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Sakray Client Diff Modifications (Original)

Post by Koma »

For reference, if we need to make a new client, and I'm not around, here are the base configurations for 2008-05-28aSakexe and the related Xray client. Bolded are key differences from Player and GM clients. "--" wrapped around an option means it is not part of one, but is part of another (since strikeout doesn't work here..).

We also have a non-Xray format, but that is unnecessary to post here for now. It is archived in OneNote for administration, and most likely will never be used or will be outdated by the time we do.

There are additional manual hexes that need to be done, such as in regards to GRFs, window title, and error handler information, but those require greater attention to detail than can be described here.

Player Client
Aura Crashfix
Fix Client Freeze Langtype 1+
Change Gravity Error Handler
Unlimit Chat Flood
Extended Chat Box
Extended PM Box
Extended Chat Room Box
Disable Charname Chat Parsing
Custom Window Title
Enable Aura Over Lv99
Enable ASCII In Text
Enable Flag Emotes
Enable Quest Window
Enable Stats Over 99
Enable /w and /who Commands
Enforce Official Login Background
Fix Camera Angles (Recommended)
Ignore Changed Alert Messages
Ignore Missing File Errors
Ignore Missing Palette Errors
Increase Quality Screenshot To 95%
Increase Zoom Out 75%
Show All Buttons In Login Windows
Show EXP/Job Bars Up To 255
Skip Licence Screen
Skip Service Select
Use Ragnarok Icon
Enable /showname
Read Data Folder First
Read msgstringtable.txt
Unlimited Loading Screens
GRF Adata/Bdata Support
Use Plain Text Descriptions
Allow Multiple Windows
Disable 1rag1 & 1sak1
Remove Gravity Logo
Remove Gravity Ads
Disable 4 Letter UserCharacter Limit
Disable nProtect & GameGuard
Disable Sakexe Filename Check
Enable 12 Character Slots
Invalid Email Fix
KOREA ServiceType XML Fix
Exit BattleMode only with Space
Fix BattleMode Double Letters In Chats
Guild Message Crash Fix
Enable DNS Support
Allow Create Custom Palettes
Allow Create Custom Hairstyle
Expand Homunculus And Mercenary IDs
OFF by default /Showname

GM Client
Aura Crashfix
Fix Client Freeze Langtype 1+
Change Gravity Error Handler
Unlimit Chat Flood
Extended Chat Box
Extended PM Box
Extended Chat Room Box
Disable Charname Chat Parsing
Custom Window Title
Enable Aura Over Lv99
Enable ASCII In Text
Enable Flag Emotes
Enable Quest Window
Enable Stats Over 99
Enable /w and /who Commands
Enforce Official Login Background
Fix Camera Angles (FULL)
Ignore Changed Alert Messages
Ignore Missing File Errors
Ignore Missing Palette Errors
Increase Quality Screenshot To 95%
Increase Zoom Out Max
Show All Buttons In Login Windows
Show EXP/Job Bars Up To 255
Skip Licence Screen
Skip Service Select
Use Ragnarok Icon
Enable /showname
Read Data Folder First
Read msgstringtable.txt
Unlimited Loading Screens
GRF Adata/Bdata Support
Use Plain Text Descriptions
Allow Multiple Windows
Disable 1rag1 & 1sak1
Remove Gravity Logo
Remove Gravity Ads
Disable 4 Letter UserCharacter Limit
Disable nProtect & GameGuard
Disable Sakexe Filename Check
Enable 12 Character Slots
Invalid Email Fix
KOREA ServiceType XML Fix
Exit BattleMode only with Space
Fix BattleMode Double Letters In Chats
Guild Message Crash Fix
Enable DNS Support
Allow Create Custom Palettes
Allow Create Custom Hairstyle
Expand Homunculus And Mercenary IDs
OFF by default /Showname
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Sakray Client Diff Modifications (Final)

Post by Koma »

List of Changes for 2009-02-25b
Client
Aura Crashfix
Fix Client Freeze Langtype 1+
Disable nProtect KeyCrypt
Change Gravity Error Handler
Extended Chat Box
Extended PM Box
Extended Chat Room Box
Disable Charname Chat Parsing
Custom Window Title
Enable Aura over lv99
Enable ASCII in text
Enable Flag emotes
Enable All Elements of Quest Windows
Use New Char Selection Screen on All Langtypes
Translate Char Selection Screen
Enable /w and /who commands
Fix Camera Angles (Recommended)
Ignore Changed Alert Messages
Ignore Missing File Errors
Ignore Missing Palette Errors
Increase Zoom Out 75%
Show All Buttons In Login Windows
Show EXP/Job Bars up to 255
Skip Licence Screen
Skip Resurrection Buttons <- Request
Skip Service Select
Use Ragnarok Icon
Enable /showname
Other Chat Color (Turquoise) <- Request
Read msgstringtable.txt
Unlimited Loading Screens
GRF Adata/Bdata Support
Use Plain Text Descriptions
Remove Gravity Logo
Remove Gravity Ads
Disable 4 Letter UserCharacter Limit
Disable Sakexe Filename Check
Enable 12 Character Slots
Invalid Email Fix
KOREA ServiceType XML Fix
Save Main Chat with Scroll Lock
Exit BattleMode only with Space
Fix BattleMode Double Letters in Chats
Guild Message Crash Fix
Trade Window Crash Fix
Enable DNS Support
ON by default /Window <- Request
OFF by default /showname
Allow Create Custom Palettes
Allow Create Custom Hairstyle
Expand Homunculus and Mercenary IDs

GM
Aura Crashfix
Fix Client Freeze Langtype 1+
Disable nProtect KeyCrypt
Change Gravity Error Handler
Unlimit Chat Flood
Extended Chat Box
Extended PM Box
Extended Chat Room Box
Disable Charname Chat Parsing
Custom Window Title
Enable Aura over lv99
Enable ASCII in text
Enable Flag emotes
Enable All Elements of Quest Windows
Use New Char Selection Screen on All Langtypes
Translate Char Selection Screen
Enable /w and /who commands
Fix Camera Angles (FULL)
Ignore Changed Alert Messages (For Debug)
Ignore Missing File Errors (For Debug)
Ignore Missing Palette Errors (For Debug)
Increase Zoom Out Max
Show All Buttons In Login Windows
Show EXP/Job Bars up to 255
Skip Licence Screen
Skip Resurrection Buttons <- Request
Skip Service Select
Use Ragnarok Icon
Enable /showname
Other Chat Color (Turquoise) <- Request
Read Data Folder First
Read msgstringtable.txt
Unlimited Loading Screens
GRF Adata/Bdata Support
Use Plain Text Descriptions
Allow Multiple Windows
Disable 1rag1 & 1sak1
Remove Gravity Logo
Remove Gravity Ads
Disable 4 Letter UserCharacter Limit
Disable Sakexe Filename Check
Enable 12 Character Slots
Invalid Email Fix
KOREA ServiceType XML Fix
Save Main Chat with Scroll Lock
Exit BattleMode only with Space
Fix BattleMode Double Letters in Chats
Guild Message Crash Fix
Trade Window Crash Fix
Enable DNS Support
ON by default /Window <- Request
OFF by default /showname
Allow Create Custom Palettes
Allow Create Custom Hairstyle
Expand Homunculus and Mercenary IDs
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Forum -> Website Content Sharing Information

Post by Koma »

Parts of the website content are now pulled down straight from the forums via forums.php. It utilizes the in-built BBCODE conversion of phpBB to do this.

Considering that I need to lock it down to certain posts though, to prevent using it to pull GM threads and such, be sure to make a list of post IDs when adding or doing any changes.

For example, in the case of In-Game Rules:
There is only one rule to these threads and that is: you must not end content with a listed item. This throws off the layout for some reason. For now, I have a temporary workaround by adding   at the end of the code right before the end of the <div> but, I would prefer if we could make this go away as it adds unnecessary blank space.

Currently, the posts that are being pulled from are:

A separate PHP file will be used to pull down Announcements.
User avatar
Koma
Administrator
Administrator
Posts: 708
Joined: Sat Jul 25, 2009 7:05 pm

Server Core Modification List (Outdated)

Post by Koma »

In case we have compile issues later on, these are the manual modification DIFFs for some of our primary source code modifications.

Max Character & GM Modification
Bump Max Character Amount To 12, Reduce Start Account ID To 1999900 For GMs.

Code: Select all

Index: common/mmo.h
===================================================================
--- common/mmo.h	(revision 13989)
+++ common/mmo.h	(working copy)
@@ -21,7 +21,7 @@
 #define MAX_MAP_PER_SERVER 1500 // Increased to allow creation of Instance Maps
 #define MAX_INVENTORY 100
 //Max number of characters per account. Note that changing this setting alone is not enough if the client is not hexed to support more characters as well.
-#define MAX_CHARS 9
+#define MAX_CHARS 12
 //Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex]
 //Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size.
 #define MAX_SLOTS 4
@@ -88,7 +88,7 @@
 #define MAX_FAME_LIST 10
 
 //Limits to avoid ID collision with other game objects
-#define START_ACCOUNT_NUM 2000000
+#define START_ACCOUNT_NUM 1999900
 #define END_ACCOUNT_NUM 100000000
 #define START_CHAR_NUM 150000
Anti-WPE
Prevent Too Many Packets At One Time.

Code: Select all

Index: common/socket.c
===================================================================
--- common/socket.c	(revision 13989)
+++ common/socket.c	(working copy)
@@ -196,6 +196,9 @@
 time_t last_tick;
 time_t stall_time = 60;
 
+uint32 max_frequency_warning = 15; //Max number of packets user can have that are within a certain interval of each other before the program kicks
+int diff_tolerance = 5; //In microseconds
+
 uint32 addr_[16];   // ip addresses of local host (host byte order)
 int naddr_ = 0;   // # of ip addresses
 
@@ -320,6 +323,40 @@
 
 	session[fd]->rdata_size += len;
 	session[fd]->rdata_tick = last_tick;
+		
+	// Anti-WPE script: v2.0 Parappa the Anti-WPE by Zohan
+    if(!session[fd]->flag.server && RFIFOW(fd,2) != 0x05 && (RFIFOW(fd,0) == 0x0438 || RFIFOW(fd,0) == 0x0116))
+    {
+       session[fd]->lastTick = session[fd]->thisTick;
+       //Thanks theultramage
+       session[fd]->thisTick = gettick();
+       session[fd]->lastDiff = session[fd]->thisDiff;
+       session[fd]->thisDiff = session[fd]->thisTick - session[fd]->lastTick;
+       if(abs(session[fd]->thisDiff - session[fd]->lastDiff) < diff_tolerance)
+       {
+          session[fd]->warning_number++;
+          //ShowDebug("U SPAMMIN: Bad! (%d)\n", abs(session[fd]->thisDiff - session[fd]->lastDiff));
+          if(session[fd]->warning_number > max_frequency_warning)
+          {
+            //ShowDebug("U SPAMMIN: KICK!\n");
+            set_eof(fd);
+          }
+       }
+       else if(session[fd]->thisTick - session[fd]->lastTick > 5000)
+       {
+            //ShowDebug("U SPAMMIN: Cool!\n");
+            session[fd]->warning_number = 0;
+       }
+       else
+       {
+           if(session[fd]->warning_number > 0)
+           {                         
+             //ShowDebug("U SPAMMIN: Good!\n");
+             session[fd]->warning_number--;
+           }
+       }
+    }
+
 	return 0;
 }

Code: Select all

Index: common/socket.h
===================================================================
--- common/socket.h	(revision 13989)
+++ common/socket.h	(working copy)
@@ -83,6 +83,13 @@
 	size_t rdata_pos;
 	time_t rdata_tick; // time of last recv (for detecting timeouts); zero when timeout is disabled
 
+    //Anti-WPE v2.0 by Zohan
+    int lastTick;
+    int thisTick;
+    int thisDiff;
+    int lastDiff;
+    uint32 warning_number; 
+
 	RecvFunc func_recv;
 	SendFunc func_send;
 	ParseFunc func_parse;
Atcommands
@whosells With Location Modification

Code: Select all

Index: map/atcommand.c
===================================================================
--- map/atcommand.c	(revision 13989)
+++ map/atcommand.c	(working copy)
@@ -8122,6 +8122,66 @@
 }
 
 /*==========================================
+* @whosells, by zephyrus_cr. Optimized to search every maps and translated (mostly) to English by Amano Ginji
+* Updated to the last stable version and added shop name, coordinates and a mark on the mini map by Nightroad/Dekamaster
+*------------------------------------------
+*/
+int atcommand_shopsearch(const int fd, struct map_session_data* sd, const char* command, const char* message)
+{
+    char item_name[100], output[255];
+    struct s_mapiterator* iter;
+    int item_id, map_id = 0, j, count = 0;
+    struct map_session_data *pl_sd, **pl_allsd;
+    unsigned int MinPrize = battle_config.vending_max_value, MaxPrize = 0;
+    struct item_data *item_data;
+
+    memset(item_name, '\0', sizeof(item_name));
+
+    if (!message || !*message || sscanf(message, "%99[^\n]", item_name) < 1) {
+        clif_displaymessage(fd, "Please, enter the item's name or ID (usage: @whosells <item_name> or <item_id>).");
+        return -1;
+    }
+
+    if ((item_data = itemdb_searchname(item_name)) == NULL &&
+        (item_data = itemdb_exists(atoi(item_name))) == NULL)
+    {
+        clif_displaymessage(fd, msg_txt(19)); // Invalid item ID or name.
+        return -1;
+    }
+
+    item_id = item_data->nameid;
+    map_id = sd->bl.m;
+
+    iter = mapit_getallusers();
+
+    for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter)){
+        if (pl_sd->vender_id) {
+            // One player Online and are in the same map and are vending
+            for (j = 0; j < pl_sd->vend_num; j++) {
+                if(pl_sd->status.cart[pl_sd->vending[j].index].nameid == item_id) {
+                    // If the item is the same, it will show this? Computer translations are bad.
+                    sprintf(output, "Vender: %s | Amount: %d | Price: %d | Shop: %s | Location: %s (%d,%d)", pl_sd->status.name, pl_sd->vending[j].amount, pl_sd->vending[j].value, pl_sd->message, mapindex_id2name(pl_sd->mapindex),pl_sd->bl.x,pl_sd->bl.y);
+                    clif_viewpoint(sd, 1, 1, pl_sd->bl.x, pl_sd->bl.y, count+1, 0xFFFFFF);
+                    if(pl_sd->vending[j].value < MinPrize) MinPrize = pl_sd->vending[j].value;
+                    if(pl_sd->vending[j].value > MaxPrize) MaxPrize = pl_sd->vending[j].value;
+                    clif_displaymessage(fd, output); // Message sent to player
+                    count++;
+                }
+            }
+        }
+    }
+    mapit_free(iter);
+
+    if(count > 0) {
+        sprintf(output, "Found %d being vended. Range of prices: %d ~ %d.", count, MinPrize, MaxPrize);
+        clif_displaymessage(fd, output);
+    } else
+        clif_displaymessage(fd, "Item not found.");
+
+    return 0;
+}
+
+/*==========================================
  * Feel (SG save map) Reset [HiddenDragon]
  *------------------------------------------*/
 int atcommand_feelreset(const int fd, struct map_session_data* sd, const char* command, const char* message)
@@ -8550,6 +8610,7 @@
  *------------------------------------------*/
 
 AtCommandInfo atcommand_info[] = {
+	{ "whosells",            1,1,     atcommand_shopsearch }, //Nightroad/Dekamaster
 	{ "rura",              40,40,     atcommand_mapmove },
 	{ "warp",              40,40,     atcommand_mapmove },
 	{ "mapmove",           40,40,     atcommand_mapmove }, // + /mm
Maximum Level 200
But Not Allowed Through Configuration Files

Code: Select all

Index: map/map.h
===================================================================
--- map/map.h	(revision 13989)
+++ map/map.h	(working copy)
@@ -40,7 +40,7 @@
 #define NATURAL_HEAL_INTERVAL 500
 #define MIN_FLOORITEM 2
 #define MAX_FLOORITEM START_ACCOUNT_NUM
-#define MAX_LEVEL 99
+#define MAX_LEVEL 200
 #define MAX_DROP_PER_MAP 48
 #define MAX_IGNORE_LIST 20 // official is 14
 #define MAX_VENDING 12
Change NPC Start ID
For Custom NPCs

Code: Select all

Index: map/npc.h
===================================================================
--- map/npc.h	(revision 13989)
+++ map/npc.h	(working copy)
@@ -76,7 +76,7 @@
 #define MAX_NPC_CLASS 1000
 //Checks if a given id is a valid npc id. [Skotlex]
 //Since new npcs are added all the time, the max valid value is the one before the first mob (Scorpion = 1001)
-#define npcdb_checkid(id) ((id >=  46 && id <= 125) || id == 139 || (id >= 400 && id <= MAX_NPC_CLASS) || id == INVISIBLE_CLASS)
+#define npcdb_checkid(id) ((id >=  46 && id <= 125) || id == 139 || (id >= 200 && id <= MAX_NPC_CLASS) || id == INVISIBLE_CLASS)
 
 #ifdef PCRE_SUPPORT
 void npc_chat_finalize(struct npc_data* nd);
Locked