Помощь - Поиск - Пользователи - Календарь
Полная версия: Function: Removeitem
UoKit.com Форумы > Ultima Online : Dev > Sphere Server > Архив готовых скриптов
d`ArcZeal
Довольно часто приходится встречать ситуацию, когда надо удалить определенную вещь в мире.
DEFNAME мы знаем, а вот вручную тысячи предметов удалять не хотим, а дедовский способ удалять скрипт самой вещи и затем запускать сервер слишком нубский, и потому нам на помощь приходит функция:

Код
[FUNCTION REMOVEITEM]
FORINSTANCES <ARGS>
REMOVE
SERV.LOG <ARGS>, <AMOUNT> has been removed.
ENDFOR

Пример: .removeitem i_gold (Удалит все золото в мире).

Если надо удалить предмет без дефнейма.
Код

[FUNCTION REMOVEITEM_2]
FORITEMS <SERV.ITEMS>
IF <BASEID>==<ARGS>
REMOVE
ENDIF
ENDFOR

Пример для стены 026: .removeitem_2 026
Mirage
в sphere.ini есть строка
Цитата
// Limit the number of cycles the while/for loop can proceed. Setting this to
// zero disables the limitation
MaxLoopTimes=5000

при таком значении если потребуется удалить более 4999 предметов придется запускать несколько раз. Либо увеличить значение. На старом сейве моего сервера где было более 1КК предметов в мире пришлось запускать .removeitem i_dagger 19 раз чтобы он наконец показал что все удалил laugh.gif

Код

[FUNCTION REMOVEITEM]
FORINSTANCES <ARGS>
  REMOVE
  local.total1 += <amount>
ENDFOR
SRC.sysmessage @0487 Удалено <dlocal.total1>  <ARGS> из мира.
так меньше флуда когда надо чтото большое удалить

Во втором скрипте буква R улетела вниз.
Ozzy Osbourne
Юзаем MaxLoopTimes=0 и не знаем проблем
Soteric
Для чего изначально была сделана эта опция?
Wap
Цитата(Soteric @ 27.7.2011, 13:42) *

Для чего изначально была сделана эта опция?
Думаю, для защиты от зацикливания.
Mirage
Цитата(Ozzy Osbourne @ 27.7.2011, 16:21) *

Юзаем MaxLoopTimes=0 и не знаем проблем

При нуле сфера может умереть - придется перезагружать. Хотя я фиг знает как надо извратиться чтобы специально прописать бесконечный цикл. Если только опечататься. Но ИМХО все таки лучше поставить просто большое число. 20000-50000. И то для миров с наполнением в 10К предметов этого уже слишком много smile.gif

Хотя нет, вру. Поставил у себя 50000 и при удалении 21К луков сфера умерла на 4 минуты пока не ресинкнул, перезагрузил и при 0 удалил теже луки - полсекунды.
Ozzy Osbourne
Цитата(Mirage @ 27.7.2011, 19:58) *

При нуле сфера может умереть - придется перезагружать. Хотя я фиг знает как надо извратиться чтобы специально прописать бесконечный цикл. Если только опечататься. Но ИМХО все таки лучше поставить просто большое число. 20000-50000. И то для миров с наполнением в 10К предметов этого уже слишком много smile.gif

Хотя нет, вру. Поставил у себя 50000 и при удалении 21К луков сфера умерла на 4 минуты пока не ресинкнул, перезагрузил и при 0 удалил теже луки - полсекунды.


Я удалял и 60 лямов руды/логов/рыбы, и вот недавно все предметы с мира (оружие армы и тп). Сфера зависала не больше чем на 10 минут, потом нормально дальше работала. А то что эта фишка как "защита от ду-ра-ка" которые предомеренно рекурсии пишут - ну так это их дело) Я точно знаю что ненапишу такой лабуды что б зациклить приметивный for на приметивном языке сферы) А поставить там 20к и тп - все равно в случае чего - убьет сервак, т.к. на живом сервере некто не сообразит сразу в чем дело и будет в любом случае перезагружать т.к. консоль сферы уйдет в офф полюбому.
Mirage
Во злобная штука:
Код
[FUNCTION rall]
SRC.sysmessage @0487 Ой тля!! ВАЙП!!!
FORITEMS 50000
IF !(<BASEID>==<ARGS>)
REMOVE
local.total1 += <amount>
ENDIF
ENDFOR
SRC.sysmessage @0487 Удалено ВСЕ Кроме <ARGS> из мира.

Удобно делать пустые миры с одними респами smile.gif Останется только то что на персонажах и мобах.

Научите меня <вырезано анти-матом>а как удалить предмет по прицелу, а не прописывать каждый раз.
d`ArcZeal
Юзаешь функцию ,вылетает таргет. С таргета указываешь итем, сервер запоминает его дефнейм как локал внеременный. И идет функция как ремувитем, только в замен аргс будет локал, а локал у нас и равен дефнейму предмета.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.