Плагин [MECH/FUN] ReActions - Что? Тогда? Иначе! [BukkitDev]

Я в недоумении.
Создаю зомбака, пишу ему dmg:1000, а тому вообще пофиг. Как лупил по дефолту, так и лупит с 1к дамагом. Что не так?

Команда:
Код:
    - MOB_SPAWN=type:zombie name:Pirate dmg:1000 loc:world,2484.756,66.0,-777.086,4.67,23.162 drop:set1:{item1:{type:ic2_blockmachine data:14 amount:1} chance:50} set2:{item1:{type:advancedsolarpanel_blockmoleculartransformer amount:1} chance:50}

@fromgate
Пожалуйста, скажи, что не так?
В timers.yml написано вот это:
mine1:
time: 0 0/720 * * * ?
player: all
paused: 'false'
activator: mine1

720 минут = 12 часов... Но он срабатывает несколько раз за час!
Пожалуйста, приведи наглядный пример с таймером в час и день.

Вот что происходит (это за 1 секунду!)
Посмотреть вложение 34299
первый 0 - это секуны
второй 0 - минут
третий 0 - часы

и так далее
 
здаю зомбака, пишу ему dmg:1000, а тому вообще пофиг. Как лупил по дефолту, так и лупит с 1к дамагом. Что не так?
Возможно, такой урон не воспринимается системой. Может, гасит античит. Попробуй увеличивать постепенно. Этот параметр точно работает как надо. Значение в 20-30 вполне может убить чаренного алмазника с одного удара.
 
Я в недоумении.
Создаю зомбака, пишу ему dmg:1000, а тому вообще пофиг. Как лупил по дефолту, так и лупит с 1к дамагом. Что не так?

Команда:
Код:
    - MOB_SPAWN=type:zombie name:Pirate dmg:1000 loc:world,2484.756,66.0,-777.086,4.67,23.162 drop:set1:{item1:{type:ic2_blockmachine data:14 amount:1} chance:50} set2:{item1:{type:advancedsolarpanel_blockmoleculartransformer amount:1} chance:50}


первый 0 - это секуны
второй 0 - минут
третий 0 - часы

и так далее
та же проблема, ядро craftbukkit 1.7.2, античитов нет (дамаг = 20)
 
Ошибок в тоже время в логе нет? Сегодня доберусь, перепроверю.
Логи чисты, как попка младенца
В общем, я в полном недоумении!
Создал моба через плугин, создал с типом skeleton и кастомным именем &6Pirate (желтный цвет)
И хочу всунуть действия на ударе по нему, а тот полностью игнорирует меня! В чём трабла? Мб что-то я кривой? Но я уже от корки до корки вычитал вики:
Код:
MOB_DAMAGE:
  md:
    mob-type: player
    mob-name: Pirate
    item: ''
    actions:
    - message=123
  md1:
    mob-type: skeleton
    mob-name: Pirate
    item: ''
    actions:
    - message=123
  md3:
    mob-type: player
    mob-name: &6Pirate
    item: ''
    actions:
    - message=123
  md4:
    mob-type: skeleton
    mob-name: &6Pirate
    item: ''
    actions:
    - message=123
  md5:
    mob-type: player
    mob-name: {&6Pirate}
    item: ''
    actions:
    - message=123
  md6:
    mob-type: skeleton
    mob-name: {&6Pirate}
    item: ''
    actions:
    - message=123

Проблема решена.
Как оказалось, нужно имя и тип заключать в 'кавычки' . Ну пащиму об этом не написано? :confused::confused: Столько часов бился и думал как обойтись другим функционалом :/
 
@Sanya007vuch
Пути YAML не исповедимы. У меня и так работает. Почему у тебя так - не знаю. Может чего-то с кодировками?
 
@Sanya007vuch
Пути YAML не исповедимы. У меня и так работает. Почему у тебя так - не знаю. Может чего-то с кодировками?
Есть такое дело... Много гемора доставляет.
Пытался исправить на нормальную - безрезультатно.
Проводил те же действия на другой машине - прошло успешно, но после ребута машинки кодировка снова слетела.
 
@Sanya007vuch @PYRO
В общем, действительно нашлась ошибка. Сейчас модификатор dmg исправлен, работает нормально.
Обращаю внимание на то, что это множитель. Т.е. Можно поставить 0 - дамага не будет. 0.5 - будет половина от стандартного и т.п.

0.9.6/3
http://adf.ly/1K0nlW
 
@fromgate
Подскажите, что за ошибка? С чем связана?
Could not pass event CommandEvent to ReActions v0.9.6
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at me.fromgate.reactions.event.EventManager.raiseCommandEvent(EventManager.java:201) [ReActions.jar:?]
at me.fromgate.reactions.RAListener.onPlayerCommand(RAListener.java:307) [ReActions.jar:?]
at sun.reflect.GeneratedMethodAccessor201.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_75]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_75]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1127) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at net.minecraft.server.v1_8_R3.PlayerConnection.chat(PlayerConnection.java:1051) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer.chat(CraftPlayer.java:243) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at com.gmail.filoghost.chestcommands.internal.icon.command.PlayerIconCommand.execute(PlayerIconCommand.java:15) [ChestCommands.jar:?]
at com.gmail.filoghost.chestcommands.internal.CommandsClickHandler.onClick(CommandsClickHandler.java:34) [ChestCommands.jar:?]
at com.gmail.filoghost.chestcommands.api.Icon.onClick(Icon.java:224) [ChestCommands.jar:?]
at com.gmail.filoghost.chestcommands.internal.icon.ExtendedIcon.onClick(ExtendedIcon.java:208) [ChestCommands.jar:?]
at com.gmail.filoghost.chestcommands.task.ExecuteCommandsTask.run(ExecuteCommandsTask.java:21) [ChestCommands.jar:?]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:726) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:367) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:657) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:560) [craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at java.lang.Thread.run(Thread.java:745) [?:1.7.0_75]
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 55
at java.lang.String.charAt(String.java:658) ~[?:1.7.0_75]
at org.bukkit.util.ChatPaginator.wordWrap(ChatPaginator.java:135) ~[craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at org.bukkit.util.ChatPaginator.paginate(ChatPaginator.java:42) ~[craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
at me.fromgate.reactions.RAUtil.printMsg(RAUtil.java:397) ~[?:?]
at me.fromgate.reactions.actions.ActionMessage.sendMessage(ActionMessage.java:66) ~[?:?]
at me.fromgate.reactions.actions.ActionMessage.execute(ActionMessage.java:40) ~[?:?]
at me.fromgate.reactions.actions.Action.executeAction(Action.java:72) ~[?:?]
at me.fromgate.reactions.actions.Actions.performAction(Actions.java:158) ~[?:?]
at me.fromgate.reactions.actions.Actions.executeActivator(Actions.java:150) ~[?:?]
at me.fromgate.reactions.activators.CommandActivator.activate(CommandActivator.java:97) ~[?:?]
at me.fromgate.reactions.activators.Activator.executeActivator(Activator.java:271) ~[?:?]
at me.fromgate.reactions.activators.Activators.activate(Activators.java:290) ~[?:?]
at me.fromgate.reactions.RAListener.onCommandActivator(RAListener.java:402) ~[?:?]
at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_75]
at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_75]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[craftbukkit.jar:git-Spigot-6d0ae89-a03743b]
 
@BrainRTP
Какое-то сообщение (выводимое действием MESSAGE) не может отобразиться . Случайно не отследилили какой активатор срабатывает с такой ошибкой? Чтобы я смог её повторить у себя.
@BrainRTP
Скачайте последний девбилд - попробуйте с ним. Ошибка не исправлена, она возникает в недрах spiogot'а, но я сделал залипуху, которая её обходит.
Если есть возможно показать активатор который приводит к ошибке - дайте. Я попробую точно всё воспроизвести и сделать тикет на спиготовском баг-трекере.
http://adf.ly/1K0nlW
 
Несколько вопросов.
Код:
Код:
LEVER:
  start_capture:
    world: world
    x: -5019
    y: 94
    z: -6962
    lever-state: 'ON'
    actions:
    - var_set=id:invader_giran value:%player_name%
    - message=&4Внимание! &eИгрок %var:invader_giran% начал захват точки.
    - action_delayed=time:10s action:{message &2Прошло 10 секунл с момента старта захвата}
    - action_delayed=time:20s action:{message &2Прошло еще 10 секунд с момента старта захвата}
    - action_delayed=time:30s action:{message &4Внимание! &eИгрок %var:invader_giran% захватил точку!!!}
    - var_set=id:giran_owner value:%var:invader_giran%
    - message=123

Собсна, вопросы:
1. Действие message=123 выполняется сразу после нажатия. (я думал, что всё выполняется последовательно, т.е. после отложенных действий выполняется следующий код). Нужно ставить отложенные действия и на дальнейшие действия, если я хочу делать всё по порядку?
2. По каккому механизму работают отложенные действия, если их 2+? По принципу "от ЕДИНОЙ точки отсчёта отсчитывается то время, которое указано в свойстве активатора"? Или по принципу "сначала первое отложенно действие, потом следующее за ним, потом третье и так далее"?
 
ACTION_DELAYED - здесь время ни как не суммируется. Это т.е. действие выполняется как раз через столько, какая задержка была задана.
Т.е. в примере действия будут выполнятся так:
- var_set=id:invader_giran value:%player_name%
- message=&4Внимание! &eИгрок %var:invader_giran% начал захват точки.
- var_set=id:giran_owner value:%var:invader_giran%
- message=123
Потом ожидание 10 секунд и выполняется message &2Прошло 10 секунл с момента старта захвата
Потом ожидание ещё 10 секунд и выполняется message &2Прошло еще 10 секунд с момента старта захвата
Потом ещё 10 секунд и... message &4Внимание! &eИгрок %var:invader_giran% захватил точку!

Если же использовать действие WAIT (оно добавлено в последних девбилдах), то там действия как выполняются последовательно. Т.е. wait это пауза между действиями.
 
@fromgate, при добавлении локации можно в процессе указать наклон головы?
Прошу добавить в таймеры больше аргументов цели активатора.
@fromgate, почему-то выполнение команд останавливается:
Код:
  Parkour-Add-CheckPoint:
    override: true
    regex: false
    command: cmd:Parkour arg1:add arg2:CheckPoint
    flags:
    - var_player_compare=id:Lyosha12-Own value:1
    actions:
    - var_inc=id:Parkour-CheckPoint-Counter
    - cmd=ra add Plate Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter%
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% f !var_player_compare id:Parkour-CurrentCheckPoint-%var:Parkour-CheckPoint-Counter% value:%var:Parkour-CheckPoint-Counter%
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% f delay_player Slow-Execute-Activator
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% a delay_player 1s/Slow-Execute-Activator
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% a SOUND type:NOTE_PIANO volume:1 pitch:1 loc:%PLAYER_LOC%
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% a action_delayed time:100ms action:{SOUND type:NOTE_PIANO volume:1 pitch:3 loc:%PLAYER_LOC%}
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% a var_player_set id:Parkour-CurrentCheckPoint value:%var:Parkour-CheckPoint-Counter%
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% a var_player_set id:Parkour-Life value:%CALC:%varp:Donate-LVL%+3%
    - cmd=ra add Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% a message &6[&bExtraParkour&6] &2Чекпоинт. &7Осталось жизней:&e %varp:Parkour-Life%
    - cmd=ra add loc Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter%
    - cmd=ra group Parkour-CheckPoint-%var:Parkour-CheckPoint-Counter% Parkour-CheckPoints
    - message=&7[&aExtraParkour&7] &2Добавление check-поинта завершено.
    reactions: []
upload_2015-7-17_13-32-41.png
Если снабдить действия после обрыва action_delayed - работает отлично.
И как запретить подстановку значения в плейсхолдер? :D
 
Последнее редактирование:
Несколько вопросов.
Код:
Код:
LEVER:
  start_capture:
    world: world
    x: -5019
    y: 94
    z: -6962
    lever-state: 'ON'
    actions:
    - var_set=id:invader_giran value:%player_name%
    - message=&4Внимание! &eИгрок %var:invader_giran% начал захват точки.
    - action_delayed=time:10s action:{message &2Прошло 10 секунл с момента старта захвата}
    - action_delayed=time:20s action:{message &2Прошло еще 10 секунд с момента старта захвата}
    - action_delayed=time:30s action:{message &4Внимание! &eИгрок %var:invader_giran% захватил точку!!!}
    - var_set=id:giran_owner value:%var:invader_giran%
    - message=123

Собсна, вопросы:
1. Действие message=123 выполняется сразу после нажатия. (я думал, что всё выполняется последовательно, т.е. после отложенных действий выполняется следующий код). Нужно ставить отложенные действия и на дальнейшие действия, если я хочу делать всё по порядку?
2. По каккому механизму работают отложенные действия, если их 2+? По принципу "от ЕДИНОЙ точки отсчёта отсчитывается то время, которое указано в свойстве активатора"? Или по принципу "сначала первое отложенно действие, потом следующее за ним, потом третье и так далее"?


Ответ нашёл)
ACTION_DELAYED - здесь время ни как не суммируется. Это т.е. действие выполняется как раз через столько, какая задержка была задана.
Т.е. в примере действия будут выполнятся так:
- var_set=id:invader_giran value:%player_name%
- message=&4Внимание! &eИгрок %var:invader_giran% начал захват точки.
- var_set=id:giran_owner value:%var:invader_giran%
- message=123
Потом ожидание 10 секунд и выполняется message &2Прошло 10 секунл с момента старта захвата
Потом ожидание ещё 10 секунд и выполняется message &2Прошло еще 10 секунд с момента старта захвата
Потом ещё 10 секунд и... message &4Внимание! &eИгрок %var:invader_giran% захватил точку!

Если же использовать действие WAIT (оно добавлено в последних девбилдах), то там действия как выполняются последовательно. Т.е. wait это пауза между действиями.


Блин, неполная вики на сайте, однако(

Вопрос по флагу PVP. В каком формате задется?
pvp 10s
pvp t:10s
pvp time:10s?

Ни одно из этих не срабатывало. Ставил уже и кавычки ('10s') - тоже не работало. Каков формат?
Кхэм, сработало, если не указывать время. Тогда считает по дефолту секунды. - сойдёт
Каков синтаксис действия WAIT? Такой же, как и у ACTION_DELAYED?
 
WAIT - просто параметр time:<Время>
На сайте в инструкциях этого нет, поскольку версия с WAIT есть пока только в виде дев.билда
 
@fromgate, почему флаг GROUP работает не всегда точно?
upload_2015-7-17_14-41-19.png
upload_2015-7-17_14-43-46.png
Код:
REGION_ENTER:
  Parkour-Detect-Donaters:
    region: world_the_end.parkour
    flags: []
    actions:
    - delay_player=1s/Slow-Execute-Activator
    - execute=activator:Exec-Parkour-Detect-Donater-Player player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-VIP player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-PREMIUM player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-CREATIVE player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-MODER player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-ADMIN player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-LORD player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-OWNER player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-DELUXE player:%player%
    - execute=activator:Exec-Parkour-Detect-Donater-ULTRA player:%player%
    reactions: []
EXEC:
  Exec-Parkour-Detect-Donater-Player:
    flags:
    - GROUP=player
    - '!var_player_compare=id:Donate-LVL value:0'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:0
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-VIP:
    flags:
    - GROUP=VIP
    - '!var_player_compare=id:Donate-LVL value:1'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:1
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-PREMIUM:
    flags:
    - GROUP=PREMIUM
    - '!var_player_compare=id:Donate-LVL value:2'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:2
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-CREATIVE:
    flags:
    - GROUP=CREATIVE
    - '!var_player_compare=id:Donate-LVL value:3'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:3
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-MODER:
    flags:
    - GROUP=MODER
    - '!var_player_compare=id:Donate-LVL value:4'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:4
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-ADMIN:
    flags:
    - GROUP=ADMIN
    - '!var_player_compare=id:Donate-LVL value:5'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:5
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-LORD:
    flags:
    - GROUP=LORD
    - '!var_player_compare=id:Donate-LVL value:6'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:6
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-OWNER:
    flags:
    - GROUP=OWNER
    - '!var_player_compare=id:Donate-LVL value:7'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:7
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-DELUXE:
    flags:
    - GROUP=DELUXE
    - '!var_player_compare=id:Donate-LVL value:8'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:8
    - message=%varp:Donate-LVL%
    reactions: []
  Exec-Parkour-Detect-Donater-ULTRA:
    flags:
    - GROUP=ULTRA
    - '!var_player_compare=id:Donate-LVL value:9'
    - delay_player=Slow-Check-Donate-Group
    actions:
    - delay_player=500ms/Slow-Check-Donate-Group
    - var_player_set=id:Donate-LVL value:9
    - message=%varp:Donate-LVL%
    reactions: []
PEX подключён к БД MySQL
 
@Sanya007vuch
Хм. Действительно. Там только секунды проверялись. Сейчас исправил в следующем девбилде будет поддерживаться время. Просто число - всё равно будет указывать на секунды, поэтому ни у кого ничего не сломается.

@Lyosha12
Смена групп там динамически не происходит? Группы через Vault проверяются и тут как бы повлиять особо не на что.
Может переориентироваться на пермишены, привязанные к определенным группам? Это по крайней мере через bukkit API проверять можно.
 
Смена групп там динамически не происходит? Группы через Vault проверяются и тут как бы повлиять особо не на что.
Может переориентироваться на пермишены, привязанные к определенным группам? Это по крайней мере через bukkit API проверять можно.
Нет, группы статичны. Вариант с проверкой конкретных прав не очень удобен - у меня нет доступа к БД. Но попробую ещё немного поизвращаться.
 
Назад
Верх