Помощь по созданию Online серверов

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Помощь по созданию Online серверов » Саиты для Muonline и Lineage 2 » Php, Mssql и горы шмота


Php, Mssql и горы шмота

Сообщений 1 страница 5 из 5

1

Я хотел бы поделиться опытом написания собственных ресурсов для сайтов муонлайн ... локаторы игроков, статы, состояния и прочее - это заезженная тема, её мы поднимать не будем ... в интернете куча исходников, выполняющие всё что душе угодно, я же хотел бы рассказать о том, как реализовать на сайте такие ресурсы как просмотр и изменение инвенторя аккаунта, анализатор одежды на чаре, примерочные, автоматические магазины и прочие полезности. Для начала стоит отметить , что работать придётся сразу с двумя ( как правило ) разными СУБД ... С mssql, в котором и хранится вся необходимая информация и mysql, как правило, в которую эту информацию нужно занести.
  1. Первое, на что я хочу обратить ваше внимание - это на то, что в php должен быть настроен модуль работы с mssql (mysql, как правило, есть везде ) ... что бы посмотреть эти настройки - воспользуйтесь стандартной функцией phpinfo
  2. Что бы проверить, всё ли правильно работает, выполним простенький запрос к базе данных и посмотрим на результат :

@$msconnect=mssql_connect("$host","$alogin","$apass") or die ("can't connect to server");
@$msdb=mssql_select_db("$db",$msconnect) or die ("can't select database");

Предварительно в переменные $alogin ; $apass ; $db ; $host записываете натройки вашего сервера. Если всё прошло без сообщений о невозможности соединения - можно приступать непосредственно к программированию.
  3. первая проблема, с которой вы, скорее всего, столкнётесь - это неправильная длина возвращаемой строки, при запросе :
$query = "SELECT Items from warehouse WHERE AccountID='$acc_id'";
Скорее всего у вас будет возвращена строка длиной в 255 символов, остальное же будет обрезаться. Есть 2 пути решения прпоблемы:
    а. Можно запрос разделить на подзапросы :
   query ("SELECT substring(inventory,0,510), substring(inventory,511,510), substring(inventory,1021,510),
substring(inventory,1531,510), substring(inventory,2041,510),  substring(inventory,2551,510) from character where name='$char'");
     б. Данный метод не очень удобен, лучше просто формат ячейки переводить из varbinary в text или image :
$query = "SELECT CAST(Items AS IMAGE) from warehouse WHERE AccountID='$acc_id'";
  4. Получили мы эту строку, что же делать дальше ? А дальше всё очень просто : нужно перевести её из бинарного вида к привычному. Есть много функций, я использую bin2hex ... мне так привычнее. Мой код выглядит примерно так :
$symbol= "";
$uncoded="";
$itog="";
$lenght = strlen($content);
$index=1;
$k=1;
for ($i=0; $i<$lenght; $i++){
$j =$i+1;
$symbol = substr($content, $start, 1);
$uncoded .= bin2hex($symbol);
$start++;
}
где $content содержит строку инвенторя ... На выходе получаем строку, длиной 2400 символов, в рюкзаке 120 квадратов ... каждый занимает 20 символов соответственно. Если вещи в квадрате банка нет - в ячейке inventory, место, отвечающее за этот квадрат заполняется символами "FFFFFFFFFFFFFFFFFFFF" от нас лишь требуется строку ;$uncoded разбить на подстроки в 20 сиволов и проверить на равенство "FFFFFFFFFFFFFFFFFFFF" ... если совпадает - значит квадрат пуст, если же нет - значит там вещь :
$start = 0;
$j= 0;
for ($i=0; $i<120; $i++){
if( substr($uncoded, $start, 20) != "ffffffffffffffffffff"){
    $items[$j]= substr($uncoded, $start, 20);
    echo $items[$j]."<br>";
    $j++;
}
$start+=20;
}

Отредактировано Stierus (2006-08-16 03:29:30)

0

2

Вот мы получили долгожданный массив с кодами вещей, что же нам это дало ? ... теперь мы можем определить название вещи, уровень заточки, опции, уникальный номер и прочее. Типичный пример кода вещи выглядит следующим образом :
E149FF000000008004DD

первые 2 символа (в нвшем случае e1 ) говорят нам о названии вещи ... у Unicorn Pants этот участок равен 28, например. Кому интересно, могут составить полный список соответствия вещей и кодов ... я почти закончил её. За заточку отвечают 15-й и 16-й символы, 3-й и 4-й за опции, с 7-го по 14-й за уникальный номер. Если кто-то будет подробнее заниматься этим - обращайтесь, расскажу о системе бонусов, скилов и прочего, возможно, поделюсь готовыми функциями ... просто там довольно интересный механизм, подробно описывать который не входило в мои планы.

Ну а что делать с полученой информацией - дело каждого. Точно так же можно и изменять значения полей в базе данных, переодевать персонажей и тд.

Отредактировано Stierus (2006-08-16 03:28:41)

0

3

спасибо за интересную и полезную информацию людям пригодица =)

0

4

народ скачал у вас сайт настроил как в инструкции и вот мне при реге топе .... вылазит вот что
Fatal error: Call to undefined function mssql_connect() in C:\AppServ\www\config.php on line 30
последняя цыфра 30, 31 или 32
помогите плиз
или надо бд мне друг сказал поискать в инете поскольку я там нет инстала (в сайте) а вручную нельзя помогите плиз

0

5

ТЕМУ СОЗДАЙ О ОПЫНО НОРМ ПРОБЛЕМУ ТУТ САИТОВ НЕ МВЛО ТАК ЧТО ПРОШУ ПИСАТЬ ЕЩЁ И ЛИНКУ

0


Вы здесь » Помощь по созданию Online серверов » Саиты для Muonline и Lineage 2 » Php, Mssql и горы шмота