Ru-MaNGOS

Вернуться   Ru-MaNGOS > Дополнения > WWW

Важная информация

WWW Web интерфейс для MaNGOS

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.05.2010, 11:46   #1
tozter
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 32
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
tozter На верном пути
По умолчанию Забрать предмет у персонажа через личный кабинет.

Делаю в личном кабинете возможность забрать предмет у игрока.

Наличие предмета беру из таблицы "character_inventory"
Как я понял, количество предметов прописано в таблице "item_instance.data"

Ситуация:
надо уменьшить количество предметов у персонажа на 1.

Если в таблице "item_instance.data" уменьшить значение 14 поля на 1, еще где-нибудь уменьшать на 1 надо? Ни где ни чего не поломается?



Все манипуляции с персонажем будут происходить когда персонаж оффлайн.
tozter вне форума   Ответить с цитированием
Старый 30.05.2010, 19:53   #2
tozter
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 32
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
tozter На верном пути
По умолчанию

Выполняю из личного кабинета такой запрос:

PHP код:
$namount 10;
$itGUI 4234234
  mysql_query
("UPDATE item_instance SET data=CONCAT(CAST(SUBSTRING_INDEX(data, ' ', 14) AS CHAR), ' ', '".$namount."', ' ',CAST(SUBSTRING_INDEX(data, ' ', -49)AS CHAR)) WHERE guid='".$itGUI."'"); 
Этот запрос меняет количество предмета $itGUI на $namount.
В базе все меняется.

Но когда персонаж заходит в игру, предмет $itGUI пропадает.

Что я делаю не так?

Последний раз редактировалось tozter; 31.05.2010 в 11:38.
tozter вне форума   Ответить с цитированием
Старый 31.05.2010, 10:50   #3
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

при запущенном сервере все делается?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 31.05.2010, 11:22   #4
tozter
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 32
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
tozter На верном пути
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
при запущенном сервере все делается?
Да, при запущенном.

Хочу добавить, что если править в item_instance.data через phpmyadmin (персонаж оффлайн, сервер работает), то все работает корректно.

Последний раз редактировалось tozter; 31.05.2010 в 11:50.
tozter вне форума   Ответить с цитированием
Старый 31.05.2010, 12:16   #5
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от tozter Посмотреть сообщение
Да, при запущенном.

Хочу добавить, что если править в item_instance.data через phpmyadmin (персонаж оффлайн, сервер работает), то все работает корректно.
phpmyadmin выдает код отработавшего запроса. У тебя именно этот код (без ошибок) стоит?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 31.05.2010, 12:34   #6
tozter
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 32
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
tozter На верном пути
По умолчанию

В phpmyadmin запрос выглядит вот так (другой предмет):

PHP код:
$sql "UPDATE `characters`.`item_instance` SET `data` = \'2 1073741824 3 24143 1065353216 0 1 0 1 0 0 0 0 0 111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 \' WHERE `item_instance`.`guid` = 2 LIMIT 1;"
Если применить запрос, который я написал в 2 посте, то phpmyadmin примет его без ошибок, но когда персонаж войдет в игру, остаток предметов удалиться.
tozter вне форума   Ответить с цитированием
Старый 31.05.2010, 12:47   #7
Кот ДаWINчи
Умный
 
Аватар для Кот ДаWINчи
 
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
Кот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человек
Отправить сообщение для Кот ДаWINчи с помощью ICQ Отправить сообщение для Кот ДаWINчи с помощью Skype™
По умолчанию

Цитата:
data=CONCAT(CAST(SUBSTRING_INDEX(data, ' ', 14) AS CHAR), ' ', '".$namount."', ' ',CAST(SUBSTRING_INDEX(data, ' ', -49)AS CHAR))
проверь вот этот кусок! Точно -49?

При помощи вот такого запроса:

Цитата:
select `guid`, `data`, (CONCAT(cast(SUBSTRING_INDEX(data, ' ', 14)As CHAR ), ' ', '***', ' ',CAST(SUBSTRING_INDEX(data, ' ', -50)AS CHAR))) as `data2` from item_instance order by guid limit 20
Убедился в своей правоте.

Последний раз редактировалось Кот ДаWINчи; 31.05.2010 в 13:41.
Кот ДаWINчи вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tozter (31.05.2010)
Старый 31.05.2010, 14:22   #8
tozter
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 32
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
tozter На верном пути
По умолчанию

Да, точно -50
Работает.... Спасибо...

Я делал по этой доке:
http://wiki.ytdb.ru/index.php/Character_data

Код:
<-(max index - index) - 1>
только как в этой формуле 50 получилось?
tozter вне форума   Ответить с цитированием
Старый 31.05.2010, 17:41   #9
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Видимо где-то не с нуля, а с единицы считается?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 07.07.2010, 16:21   #10
Fear
Супер-модератор
 
Регистрация: 26.02.2010
Сообщений: 13
Сказал(а) спасибо: 58
Поблагодарили 8 раз(а) в 3 сообщениях
Fear На верном пути
По умолчанию

Удалить предмет из character_inventory. А потом в ходе регулярной плановой очистки базы от мусора (если такова проводится), предмет этот удалится из item_instance.

Но перед удалением из character_inventory забираем данные предмета, а так же его количество и отправляем по почте.

По-моему наиболее оптимальный вариант.
Fear вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
гуид персонажа? Йоха Опкоды 9 16.07.2010 19:34
Открыть все зоны для персонажа. Реально? Sl3p0y Новичкам 1 13.07.2010 10:55
Касты через землю на БГ Thermaltake Новичкам 8 06.06.2010 22:22
Зависание персонажа serg1 Корзина 7 17.04.2010 05:03
Сброс статистики персонажа uNkind Флудильня 1 12.03.2010 04:34


Текущее время: 16:25. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot