Добавление итема в сумку из PHP-скрипта...

Теги:
 
+
-
edit
 

schursin

новичок
Впринципе ничего сложного - казалось бы просто добавить запись в таблицу items... но возник вопрос, а что делать с Object_id? какой указать? поясните пожалуйста...
 
+
-
edit
 

schursin

новичок
Вопрос решен.

SELECT MAX(`object_id`)+1 FROM `temporaryobjecttable`
+
-
edit
 

olinov

новичок
а теперь у меня возник вопрос =)
как модно СТЕРЕТЬ из инвентаря (через игру) итем...
например деньги (57)...
[как добавить во время игры знаю: //create_item 57 1000
а как стереть? ]

спасибо!! =)
RU Balancer #17.05.2007 09:08  @schursin#16.05.2007 23:08
+
-
edit
 

Balancer

администратор
★★★★★
schursin> Вопрос решен.
schursin> SELECT MAX(`object_id`)+1 FROM `temporaryobjecttable`

Нельзя так. Ибо object_id - глобальные. temporaryobjecttable собирается только один раз при старте сервера. К моменту его выключения новые object_id где-нибудь будет почти гарантированно. Получишь дубли к следующему старту сервера.

Надо повторить процедуру создания temporaryobjecttable. И, естественно, делать это в офлайне.

Если в онлайне - только вызывая сервер через telnet.
 
+
-
edit
 

Balancer

администратор
★★★★★
olinov> а теперь у меня возник вопрос =)
olinov> как модно СТЕРЕТЬ из инвентаря (через игру) итем...
olinov> например деньги (57)...
olinov> [как добавить во время игры знаю: //create_item 57 1000
olinov> а как стереть? ]
olinov> спасибо!! =)

Готовой команды нет. Можно стреть ручками:
(выделяем игрока целью)
//57 1000 my-target p.items_remove

Можно написать команду, или введя приведённый код однократно из клиента (будет работать до рестарта) или прописав его в любой .f:

//: admin_remove_item "spawn" check-access 2 args 1 max swap target-player-or-me p.items_remove ;

и вызывать потом по //remove_item 57 1000

Сейчас клиента под рукой нет, чтобы проверить, если не забуду, вечером пропишу эту команду. По частям:

: admin_remove_item - описывает соответствующую команду (пробелы обязательно, пробел - разделитель). "//some_command" ищет команду "admin_some_command". На вход этой команды будет передана строка праметров команды.

"spawn" check-access - проверяем у админа уровень доступа. Если нет такого, то выполнение команды будет прервано.

2 args - переданную строку разбить на два аргумента, разделённых пробелами в том порядке, в каком они идут. Т.е. первый аргумент (item_id) будет в глубине стека, а на вершине - будет последний, число итемов. ( "arg1 arg2" — "arg1" "arg2" )

1 max count = max(1, count) - чтобы не вводили 0 или отрицательных чисел. Ноль также получится, если count не вводить. Во всех этих случаях удалится один итем. ( count — max[count,1] )

swap у нас аргументы поданы не в том порядке, который используется командой items_remove. Меняем их местами ( item_id count — count item_id )

target-player-or-me возвратит указатель на выбранную цель, если это игрок и на себя, если цели нет, или выбран не игрок. ( — target )

p.items_remove Удаляет count предметов item_id из инвентаря игрока player: ( count item_id player — )

; - закончить определение новой админ-команды.

Всё, такой, вот, маленький урок программирования из клиента ;)
 
+
-
edit
 
+
-
edit
 

phoptik

разработчик L2J Fortress
★★★
hint: items_delayed.sql
 
RU ultraviolet #30.08.2007 03:56
+
-
edit
 

ultraviolet

новичок
пробовал по типу описаного писать в телнете... не получилось ((( ни добавить не удалить. А в телнете как делается эТО?
Телнет вообще наотрез отказывается воспринимать любую буквенную команду кроме тех что по "help" выводятся.. Может я что-то не так делаю?
Цель у меня такова. Добавить или удалить итемс из инвентаря игрока даже если он онлайн находится...
Пробовалт писать в базу (items табличка), но вещь не появляется... и когда пользвоатель уходит в офф - то изменения стираются.
Поскажете что делать?
RU Balancer #30.08.2007 10:07  @ultraviolet#30.08.2007 03:56
+
-
edit
 

Balancer

администратор
★★★★★
ultraviolet> Телнет вообще наотрез отказывается воспринимать любую буквенную команду кроме тех что по "help" выводятся..

А у тебя точно L2Fortress?

Набери words - если получишь большой список Форт-слов - то он и тогда где-то просто тормозишь. Нет - тогда облом, произвольная работа с системой из телнета - только в Fortress и его клонах.
 
RU ultraviolet #30.08.2007 12:17
+
-
edit
 

ultraviolet

новичок
Да, L2Fortres сборка 6574. На команду words отозвался активным перечнем слов ))) Сейчас их покопаю. Спасибо за наведение на цель ;)

Покопал.

пишу
1000 57 'nick' find_player p.items_add
Всё срабатывает
1000 57 'nick' find_player p.items_remove
ругается на p.items_remove
нашёл в списке слов items_remove но оно кажется не для работы с игроком... но попробовал. Ругается на формат записи и говори в том числе что не указан id предмета... (((
Может есть где либо описание использования этих слов с форматом записи? Или где я туплю?
 
Это сообщение редактировалось 30.08.2007 в 12:46

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru