Perfect World сервер 1.3.6 на debian и mysql
--------------------------------------------------------------------------------
Доброго времени суток господа!
Поставьте на закачку файлы вот от сюда, а мы пока чуть-чуть поговорим:)
[Story...]
Впервые идея поднять свой собственный сервер ПВ появилась достаточно давно. Захотелось распробовать все вкусности этой игры и немножко побыть Богом Идеального Мира:) Однако тема отошла на второй план, т.к. лень и наличие рабочих фришек взяли вверх (пусть там и не получилось побыть богом)
Сначала был Х10к на pwgame.net... По началу даже нравилось, хотя возможность играть была только до 18:00 по МСК:( потом сервер подгружался и лагал так, как никто никогда не лагал:) Администрация правда в итоге на халяву поставила новый серв... Ставили дето неделю наверно... говорили что вайпа не будет, потом говорили что вероятность все же есть, потом запустили временный сервер где почти не давали голд, потом дали оч много голда, и потом сразу вайп:) зачем давали последний раз стоко голда, я так и не понял:) Корочь я забросил его к чертям...
И чудо проваденья завело меня на firefly. Чесно говоря, это самый лучший серв из всех где я был (спс Сантьяга, я тя тут видел;)) Со своими косяками конечн, но все же на нем было правдо интересно играть:)... В конце декабря случилось горе:( закрался фф... и до сих пор закрыт:( пришлось идти дальше...
Дальше на серверах не задерживался:\ Пангу - мало чем отличается от оффа, не катит:( СэмПВ - узкий канал, лаги:( БлекРоуз - лаги, жадный одмин (первый раз увидел чтоб ЧИ продавали за 40 рублей:) может там уже сейчас и мобов продают? заплатил чирик - на тебе Росянку:)) Ад сервер - нипомню почему не попробывал:) помню что собирался, но почемуто не стал. говорят норм серв...
Вобщем я бы так и прыгал, когда наконец не заметил, что все (!) пвп серваки лежат:( это было последней каплей. Я твердо решил, что поставлю свой сервер ПВ!
[Sources...]
Я просмотрел несколько форумов посвещеных поднятию и развитию серверов ПВ (Google.com рулит!
) и остановился на двух наиболее перспективных (на мой взгляд) в плане идей. Это собсно русскоязычный ЭмуДев и забугорный мморпг-дев поэтому все что ниже изложено взято так или иначе с этих 2х источников (ссылки я буду приводить по ходу пьесы)
[Hard Working]
Сказано - сделано. С благочестивым рвение я начал пробовать свои силы в серверостроении. Скажу сразу, до этого никогда не поднимал сервера... Т.е. поднимал, но то были более обычные apache, proftpd, sshd, iced, qmail, smb и прочее, но вот конкретно игровых никогда:) Поэтому сначала я перечитал все что только смог найти на руском и на английском, была даже статья на немецком переведенная на руский (опять спс Google:))
Вооружившись кое-какими знаниями я пошел в бой. Решил для начала запустить на coLinuxе. Перебрал много, ниче не вышло:( Потом выкачал дистрибутив от TriRozhkи от сюда и чет меня прям осенило по поводу конфигов и "[A" и все пошло:)
Следующий шаг. IWeb. Нашел тут. Попарился с сертификатами в фаирфокс... заработало:) пофанился от души прочитав и приминив знания на практике
Далее. Перенос из coLinux на собсно сам Linux:). Взял Debian(любимый дистрибутив, всем советую) Взял статьи вот тут и тут и собсно все сделал, немного подковыряв authd.
Теперь последнее. Отказ от порочного MSSQL и переход на добродушный MySQL:) Оказалось что все намного проще чем я думал... Пищу для ума взял тут. И вот он нш результат:) Рабочий сервер под линуксом на MySQL...
[HowTo...]
Поехали по порядку...
1. Установка Debian.
- При установке самое главное помнить, что полностью запушенный сервак кушает порядка 6 Гигов оперативкм... Поэтому если у нас нет 6 Гигов оперативки, делаем раздел подкачки (swap) на 6 Гигов:)
- Для экономии места на винте, можно установить лишь минимальную систему, все нужное мы поставим сами
- После запуска системы, заходим под пользователем root и устанавливаем нужные нам пакеты:
# apt-get install apache2 # apt-get install mysql-server # apt-get install php5 # apt-get install php5-mysql # apt-get install libapache2-mod-php5 # apt-get install phpmyadmin # apt-get install unzip # apt-get install mc
- Теперь установим пароль для пользователя root в MySQL:
Введем в консоли команду
# mysql
Теперь выполним 2 простых SQL запроса(не забудь ставить ; в конце):
>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Новый_пароль');
>FLUSH PRIVILEGES;Выйдем из программы командой /q
1.1 Востановление базы MySQL.
Этот шаг можно делать с машины под управлением Windows.
- Распакуем куда-нить себе на винт файлы из sql.rar
- В браузере откройте страничку http://IP_вашего_сервера/phpmyadmin введите логин root и пароль, который мы установили шагом назад.
- В правом столбце выбираем Импорт и указываем путь к файлу PW_tabels.sql
- Потом выбираем базу pw и нажимаем кнопку SQL в верхнем ряду.
- Вставляем в поле запроса содержимое файла PW_procedures.sql, вместо ";" в поле Разделитель вставляем "$$" и нажимаем кнопку Пошел
2. Установка сервер. Настройка.
- Распакуем содержимое сервера прямо в корень
# unzip PW1.3.6.zip
- Запустим MidnightCommander (команда mc) и найдем файл /home/glinkd/gamesys.conf Откроем его для редактирования (F4). В нем 4 раза встречается примерно следующий фрагмент
type = tcp port = 29000 address = 192.168.0.200
и мы 4 раза, заменяем 192.168.0.200 на IP адрес нашего будущего сервера.
- Находим и открываем для редактирования (F4) файл /home/mauthd/build/conf/table.xml Находим в самом начале вот такой фрагмент
url="jdbc:mysql://127.0.0.1:3306/pw? useUnicode=true&characterEncoding=utf8" username="root" password="1"/>
Заменяем 1 на пароль пользователя root сервера баз данных MySQL. (тот, что мы установили в конце шага 1)
- Таким же образом редактируем файлы /var/www/register/config.php
$DBHost = "localhost"; // localhost or your IP $DBUser = "root"; // Database user $DBPassword = ""; // Database password $DBName = "pw"; // Database name ?>
Вписываем пароль пользователя root сервера баз данных MySQL.
- Правим файл /var/www/register/status.php
/*-------Config------*/ $DBHost = "localhost"; // localhost or your IP $DBUser = "root"; // Database user $DBPassword = ""; // Database password $DBName = "dbo"; // Database name $ServerIP = "192.168.1.2"; // IP your PW Server $ServerPort = "29000"; // Port your PW Server
Вписываем пароль пользователя root сервера баз данных MySQL. Указываем вместо dbo имя нашей базы (в моем случае pw) и заменяем IP адрес на свой.
- Откроем файл /etc/hosts и допишем ему в конец примерно следущие строчки
192.168.1.2 dbserver 192.168.1.2 database 127.0.0.1 auth 127.0.0.1 aumanager 127.0.0.1 manager 127.0.0.1 link1 127.0.0.1 game1 127.0.0.1 game2 127.0.0.1 game3 127.0.0.1 delivery 127.0.0.1 backup 127.0.0.1 gmserver
Заменв IP адрес 192.168.1.2 на наш
- Применяем права доступа:
# chmod 777 -R /home # chmod 777 -R /etc/ssl # chmod 777 /etc/gmopgen.xml # chmod 777 /etc/GMserver.conf # chmod 777 /etc/iweb.conf # chmod 777 -R /usr/java # chmod 777 -R /usr/lib # chmod 777 -R /usr/local/jakarta-tomcat-5.5.9/bin/*.sh # chmod 777 -R /lib # chmod 777 /root/pwserver.sh
- Добавляем библиотеки
# ldconfig
- Рейты указываются в файле /home/gamed/ptemplate.conf в строчках
exp_bonus = 100000 MONEY_bonus = 2000 sp_bonus = 2000 DROP_bonus = 2000
- В скрипт регистрации я добавил автоначисление голда
$mysqlresult=MySQL_Query("select * from `users` WHERE `name`='$Login'");
$User_ID=MySQL_result($mysqlresult,0,'ID');
MySQL_Query("call usecash('$User_ID',1,0,1,0,500000,1,@error)") or die ("usecash failed!");Укажите вместо 500000 свое количество, или закоментируйте все это безобразие если оно вам не нужно:)
(Количество указывается в серебре. Т.е. 500000 - это 5000 золота и 00 серебра)
- IWeb. [ВНИМАНИЕ!] так уж получилось что эта версия iweb оч не дружит с apache в плане занимаемых портов:( выходов 4:
Перед запуском останавливать apache (# /etc/inid.d/apache2 stop)
Поменять настройки портов apache
Не запускать и даже не устанавливать apache2. Перенести скрипт регистрации на другой сервер.
Не пользоваться iweb
Закоментировать строки
echo "=== IWEB AND ROLE MANAGEMENT ===" /usr/local/jakarta-tomcat-5.5.9/bin/startup.sh sleep 5 echo "=== DONE! ===" echo ""
в файлах
/home/startup.sh /home/startup_min.sh /home/startup_max.sh
3. Запуск сервера
-В папке /root лежит мой самописный скриптик pwserver.sh для запуска сервера
Запусти его, выбери режим (1 - все данжи, 2 - только MainWorld, 3 - запуск /home/startup.sh)
1. Все данжи. Полный запуск сервера.
2. Только MainWorld. Удобно, когда надо быстро запустить только сервер.
3. Настроеный запуск из /home/startup.sh Например чтобы проверить какой-нить определенный данж
[Client side...]
Чтобы подключится к серверу надо в клиенте с рус офа произвести кое какие изменения:
- в файл element\userdata\server\serverlist.txt добавить/написать строчку вроде этой:
Elizabeth 29000 192.168.1.2где Elizabeth
- имя сервера, можно указать любое
29000 - порт сервера, его оставить таким же
192.168.1.2 - IP адрес сервера указать свой
- заменить файл шопа в element\data\gshop.data
он должен быть таким же как и тот, что на сервере (/home/gamed/config/gshop.data)
тот, что сейчас на сервере и выложен в ссылке наверху
- запустить клиент можно или через патчер или через bat файл следующего содержания:
cd element start elementclient.exe game:cpw
[IWeb...]
IWeb взял от сюда. Спс Refuge:) Собственно нам нужно только выполнить пункт 5 вот из этого поста.
Ну вот и все;)
Надеюсь кому то этот матерьял поможет, иначе зачем я его столько чепятал:\
©BlackPPoint